JP2023152931A - デバイスエミュレーションおよびバンクスワッピングのための柔軟なサポート - Google Patents
デバイスエミュレーションおよびバンクスワッピングのための柔軟なサポート Download PDFInfo
- Publication number
- JP2023152931A JP2023152931A JP2023052809A JP2023052809A JP2023152931A JP 2023152931 A JP2023152931 A JP 2023152931A JP 2023052809 A JP2023052809 A JP 2023052809A JP 2023052809 A JP2023052809 A JP 2023052809A JP 2023152931 A JP2023152931 A JP 2023152931A
- Authority
- JP
- Japan
- Prior art keywords
- logical address
- bit value
- decoder
- nvm
- address
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 70
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims description 58
- 230000004044 response Effects 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 24
- 210000004027 cell Anatomy 0.000 description 10
- 238000013461 design Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
- Memory System (AREA)
Abstract
【課題】デバイスエミュレーション及びバンクスワッピングを柔軟にサポートする不揮発性メモリ(NVM)集積回路デバイス及び方法を提供する。【解決手段】システム100において、NVM集積回路デバイスは、第1のルーティング回路に関連付けられた第1のデコーダと、第2のルーティング回路に関連付けられた第2のデコーダと、複数のルーティング回路に結合された第1のプログラマブルレジスタと、を含む。第1のプログラマブルレジスタは、第1のマルチビット値を格納し、第1のマルチビット値は、第1のデコーダに関連付けられた第1のアドレスレンジを構成するようにプログラムされる。また、複数のルーティング回路に結合された第2のプログラマブルレジスタを含み、第2のプログラマブルレジスタは、第2のマルチビット値を格納し、第2のマルチビット値は、第2のデコーダに関連付けられた第2のアドレスレンジを構成するようにプログラムされる。【選択図】図1A
Description
本開示は、マルチコアデバイスの分野に関し、特に、デバイスエミュレーションおよびバンクスワッピングのための柔軟なサポートに関する。
特定のデバイス(例えば、マルチコアデバイス)では、デバイスエミュレーションだけでなく、ソフトウェアOTA(SOTA、Software-over-the-Air)アップデートへのサポートを必要とする。SOTAアップデートは、無線ローカルエリアネットワーク(WLAN)またはモバイルネットワークを介してククラウドベースのサービスからデバイスに送信することができるアップデート(例えば、データ)である。デバイスエミュレーションは、ファミリー内の大きなサイズのデバイスを、ファミリー内の小さなサイズのデバイスと同様に動作するように設定することができる。さらに、マルチコアデバイスは、通常、線形、SOTA-AおよびSOTA-Bなどの複数のタイプの構成モードをサポートする。各構成モードは、異なるメモリマップアドレス指定方式を使用する。したがって、マルチコアデバイスは、各構成モードのSOTAアップデートをサポートできなければならない。サポートを必要とするさまざまな構成では、SOTAアップデートおよびデバイスエミュレーションの両方をサポートする必要があるメモリマップアドレス指定方式の多数の組合せがある。従来のマルチコアデバイスでは、各組合せは、通常、デバイスのハードウェアにエニュメレーションされる(すなわち、ハードコードされる)。しかしながら、この解決策は、実装および検証の点で高価であり得る。さらに、デバイスの設計に対する後の変更は、追加の費用を必要とする。
本開示は、添付図面の図において、限定ではなく、例示として説明される。
上述したように、特定のマルチコアデバイスは、ソフトウェアOTA(SOTA、Software-over-the-Air)アップデート並びにデバイスエミュレーションのサポートを必要とする。SOTAアップデートは、Wi-Fiまたはモバイルネットワークを介してクラウドベースのサービスからデバイスに送信することができるアップデート(例えば、データ)である。デバイスエミュレーションは、ファミリー内の大きなサイズのデバイスを、ファミリー内の小さなサイズのデバイスと同様に動作するように設定することができる。さらに、マルチコアデバイスは、通常、線形、SOTA-AおよびSOTA-Bなどの複数のタイプの構成モードを必要とする。各構成モードは、異なるメモリマップアドレス指定方式を使用する。線形構成では、不揮発性メモリ全体をソフトウェアアプリケーションに利用することができる。SOTA-AおよびSOTA-B構成では、不揮発性メモリを2つの等しい半分(AイメージとBイメージ)に分割し、各々を別々のメモリバンクに接続することができる。デバイスがイメージAから実行している間、イメージBでSOTAアップデートが発生する可能性がある。システムリセット後、デバイスは、イメージAではなくイメージBから起動することができる。このため、デバイスは、いかなるダウンタイムもなく、バックグラウンドでSOTAアップデートを受信することができる。
マルチコアデバイスはさまざまな構成に従って構成することができるので、マルチコアデバイスは、構成モードごとにSOTAアップデートをサポートすることができなければならない。サポートを必要とするさまざまな構成では、図2~図5に関連して以下でより詳細に説明するように、SOTAアップデートおよびデバイスエミュレーションの両方にサポートする必要がある、多数のメモリマップアドレス指定方式の組合せが存在する。従来のデバイスでは、それぞれの組合せをデバイスのハードウェアにエニュメレーション(すなわち、ハードコード化)するのが一般的な解決策である。しかしながら、この解決策では、ハードウェアに実装し、その後検証する必要があるアドレスレンジの数が膨大になるため、コストがかかる可能性がある。さらに、デバイスの設計を後から変更する場合、実装および検証の点で追加の費用が必要になる。
本開示は、アドレスレンジを複号するために使用することができる構成可能なレジスタを使用することで、デバイスエミュレーションおよびバンクスワッピングのための柔軟なサポートを提供することによって、上記の欠点(およびより詳細に後述する他の欠点)に対処する。さまざまな実施形態において、不揮発性メモリ(NVM)集積回路デバイス(例えば、フラッシュまたは他の同様のデバイス)は、少なくとも処理デバイスと、ルーティング回路セットと、各ルーティング回路に関連付けられたデコーダと、ルーティング回路セットに結合された1つまたは複数のプログラマブルレジスタと、を含むことができ、各プログラマブルレジスタは、マルチビット値を含む値のセットを格納して、ルーティング回路で受信したアドレスレンジを構成する。NVM集積回路デバイスは、少なくとも2つの物理領域に分割されたメモリセルのアレイを含むことができる。いくつかの実施形態では、各プログラマブルレジスタは、ベースフィールド値およびマスクフィールド値も格納することができる。ルーティング回路のデコーダが論理アドレス(例えば、NVM集積回路デバイスに接続されたホストマイクロコントローラからのメモリアクセス操作)を受信すると、デコーダは、ルーティング回路に関連付けられたプログラマブルレジスタに格納された少なくともマルチビット値を使用して論理アドレスを復号することができる。
いくつかの実施形態では、論理アドレスを復号すると、論理アドレス用のルーティング回路でメモリアドレスの受け入れまたは拒否のいずれかが生じ得る。いくつかの実施形態では、ルーティング回路に関連付けられたデコーダは、論理アドレスを受信し、論理アドレスとルーティング回路セットのプログラマブルレジスタに格納されたマルチビット値とを比較することができる。論理アドレスとルーティング回路セットの各プログラマブルレジスタに格納されたマルチビット値とを比較することに応答して、デコーダは、ルーティング回路セットのうちのどのルーティング回路が論理アドレスに関連付けられたデータを送信するかを特定することができる。
いくつかの実施形態では、論理アドレスがルーティング回路で受け入れられた場合、デコーダは、論理アドレスに関連付けられたデータを送信するNVM集積回路デバイス内の物理領域および宛先アドレスがどれかを特定するために、プログラマブルレジスタに格納されたマルチビット値、バンク選択フィールド値およびバンクアドレスマスク値を使用して、論理アドレスをさらに復号することができる。さらに、デコーダは、NVM集積回路デバイスの現在の構成モード(例えば、線形、SOTA-A、SOTA-B)を特定するために、プログラマブルレジスタに格納された構成モードフィールド値を使用して論理アドレスを復号することができる。
したがって、本開示の態様により、デバイスのハードウェアにおける複数の構成に従ってアドレスレンジの各組合せをハードコード化する代わりに、レジスタプログラミングを使用して各着信するアドレスレンジを構成可能にすることができる。この結果、さまざまな組合せをハードウェアにハードコード化する必要がなくなり、各デバイスの実装および検証の点で費用を抑えることができる。むしろ、一度、レジスタがプログラムされると、その後、レジスタは、SOTAアップデートおよびデバイスエミュレーションのための復号アドレスレンジを処理するために柔軟に使用される。さらに、本開示の態様は、追加の組合せをハードウェアにハードコード化する必要がないため、後でデバイスの設計に変更があった場合に、実装および検証の点で影響を最小限に抑えることができる。これらおよび追加の利点は、以下の説明を考慮すると当業者には明らかであろう。
図1Aは、さまざまな実施形態による、不揮発性メモリ(NVM)集積回路(IC)デバイス110を採用するシステム100のブロック図であり、NVM ICデバイス110は、メモリセルのNVMアレイ、すなわち、簡略化のためのNVMアレイ105を含む。システム100は、ネットワーク145またはクラウドを介してNVM ICデバイス110に結合することができるホストマイクロコントローラ151(またはMCU)をさらに含むことができる。いくつかの実施形態では、ホストマイクロコントローラ151は、NVM ICデバイス110に統合される。ホストマイクロコントローラ151は、ネットワーク145を介してNVM ICデバイス110にメモリアクセスを要求することができ、NVMアレイ105はまた、データにアクセス(例えば、書き込みおよび/または読み出し)するために利用可能なメモリセルのユーザアレイであるか、またはそのユーザアレイを含むことができる。一実施形態では、システム100は、車両、航空機、または他のより広範な操作デバイスの分散型コンピューティングおよび制御システム内に統合される。
さまざまな実施形態において、NVM ICデバイス110は、処理デバイス103と、メモリセルのNVMアレイ105と、1つまたは複数のプログラマブルレジスタ107と、デコーダセット106a~111aと、ルーティング回路セット106b~111bと、を含むことができる。この意味で、NVM ICデバイス110は、これらの構成要素のすべてが単一のダイ上にパッケージ化されている統合システムオンチップデバイス(SoC)とすることができる。処理デバイス103は、後述する機能を実施するための処理能力に加えて、オンボードROMおよびランダムアクセスメモリ(RAM)を含むように適合された中央処理装置(CPU)であり得る。さまざまな実施形態において、処理デバイス103は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサもしくは命令セットの組合せを実装するプロセッサである。代替の実施形態では、処理デバイス103は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの専用処理デバイスである。
いくつかの実施形態では、NVMアレイ105は、第1の物理領域105aおよび第2の物理領域105bを含めて、複数の物理領域に分割される。いくつかの実施形態では、NVMアレイ105は、デバイスの設計に基づいて追加の物理領域に分割することができる。
いくつかの実施形態では、NVM ICデバイス110は、デコーダ106a~111aなどのデコーダセットを含むことができる。NVM ICデバイス110はまた、ルーティング回路106b~111bなどのルーティング回路セットを含むことができる。いくつかの実施形態では、デコーダをルーティング回路に結合することができる。例えば、デコーダ106aをルーティング回路111bに結合することができる。
いくつかの実施形態では、NVM ICデバイス110は、1つまたは複数のプログラマブルレジスタ107を含むことができる。1つまたは複数のプログラマブルレジスタ107は、誤り訂正符号(ECC)プロテクト付きであり得る。いくつかの実施形態では、各プログラマブルレジスタ107は、ルーティング回路セット106b~111bのうちの1つまたは複数のルーティング回路に結合することができる。いくつかの実施形態では、各プログラマブルレジスタは、NVM ICデバイス110のシステムブート中にファームウェアによってプログラムされて値のセットを格納することができる。例えば、各プログラマブルレジスタは、マルチビット値を格納することができる。いくつかの実施形態では、マルチビット値は、すべてのプログラマブルレジスタにわたって一定の値であり得る。いくつかの実施形態では、マルチビット値は、各プログラマブルレジスタに固有の値であり得る。例えば、マルチビット値は、ベースフィールド値およびマスクフィールド値を含むことができる。各プログラマブルレジスタはまた、バンク選択フィールド値、バンクアドレスマスク値および/または構成モードフィールド値を含む追加の値を格納することもできる。各プログラマブルレジスタは、NVM ICデバイス110のファームウェアによるシステムブート中に、各値を格納するように構成することができる。いくつかの実施形態では、ベースフィールド値およびマスクフィールド値は、マルチビット値、例えば、6ビット値である。いくつかの実施形態では、バンク選択フィールド値は、マルチビット値、例えば、3ビット値である。いくつかの実施形態では、バンクアドレスマスクフィールド値および構成モードフィールド値は、それぞれシングルビット値、例えば、1ビット値である。
いくつかの実施形態では、プログラマブルレジスタに格納された各値を使用して、ルーティング回路で着信した論理アドレスを復号することができる。いくつかの実施形態では、ルーティング回路に結合されたデコーダは、ルーティング回路に関連付けられたプログラマブルレジスタに格納された値のうちの1つまたは複数を使用して論理アドレスを復号する。例えば、ルーティング回路106bは、NVM ICデバイス110のメモリアクセス用の論理アドレスをホストマイクロコントローラ151から受信することができる。デコーダ106aは、1つまたは複数の数式を用いて論理アドレスを復号することができる。1つまたは複数の数式は、1つまたは複数の値に対して論理アドレスを評価するために、ブール論理を使用することができる。いくつかの実施形態では、デコーダは、ルーティング回路で論理アドレスを受け入れるか拒否するかを決定するために、マルチビット値(例えば、ベースフィールド値およびマスクフィールド値)を使用して論理アドレスを復号することができる。いくつかの実施形態では、デコーダが、論理アドレスはルーティング回路で受け入れられると決定した場合、デコーダは、NVM ICデバイスが分割された物理領域のうち、論理アドレスに関連付けられたデータを送信する物理領域を決定するために、マルチビット値およびバンク選択フィールド値を使用して論理アドレスを復号することができる。いくつかの実施形態では、デコーダはまた、論理アドレスに関連付けられたデータを送信する物理領域内の宛先アドレスを決定するために、マルチビット値およびバンクアドレスマスクフィールド値を使用して論理アドレスを復号することもできる。いくつかの実施形態では、デコーダは、NVM ICデバイスがどの構成モード(例えば、線形、SOTA-A-、SOTA-B構成モード)にあるかを決定するために、マルチビット値および構成モードフィールド値を使用して論理アドレスを復号することもできる。いくつかの実施形態では、デコーダは、論理アドレスを受信し、論理アドレスとNVM ICデバイス110のルーティング回路セットの各プログラマブルレジスタに格納されたマルチビット値とを比較することができる。論理アドレスとルーティング回路セットの各プログラマブルレジスタに格納されたマルチビット値とを比較することに応答して、デコーダは、ルーティング回路セットのうちどのルーティング回路が論理アドレスに関連付けられたデータを送信するかを特定することができる。例えば、処理論理は、論理アドレスに関連付けられたデータをルーティング回路107bに送信することができ、デコーダ107aは、本明細書で上記のデコーダ106aに関して説明したように、受信した論理アドレスを復号することができる。
図1Bは、NVM ICデバイス110が、ルーティング回路106bおよび111bにそれぞれ結合されたデコーダ106aおよび111aを含む、図1Aのシステム100のブロック図である。各デコーダ106aおよび111bはまた、それぞれNVMインタフェース0および4に関連付けられ(例えば、接続され)得る。各NVMインタフェースは、NVM ICデバイスの物理領域の各々の一部に接続することができる。例えば、NVMインタフェース0は、物理領域105aの1つまたは複数のメモリセル190および物理領域105bの1つまたは複数のメモリセル191に接続することができる。NVMインタフェース4は、物理領域105aの1つまたは複数のメモリセル193および物理領域105bの1つまたは複数のメモリセル194に接続することができる。システム100の各構成要素に関するさらなる詳細は、本明細書で以下に記載される。
図2は、本開示の実施形態による、さまざまなNVM ICデバイスのメモリマップ図である。図2に示すように、デバイス101、103、105、107が存在し得る。各デバイスは、線形構成に従って構成することができる。各デバイスは、1つまたは複数のNVMインタフェースを含むことができる。例えば、デバイス101は、NVMインタフェース0~5を含むことができる。各NVMインタフェースは、2つの別個のメモリバンク(例えば、フラッシュ)に接続することができる。例えば、各NVMインタフェースは、AバンクおよびBバンクに接続することができる。NVMインタフェースに接続された各バンクは、2MBなどの特定の量のデータを格納することができる。線形構成では、各デバイス内の各アドレスは連続することができる。例えば、デバイス101は、論理アドレス800、802、804、806、80A、80C、80E、810、812、814、816、840などを含む連続する論理アドレスに格納された、各NVMインタフェースの各バンクのデータを有することができる。図2に示すように、各デバイス101~107はさまざまなサイズのものである。例えば、デバイス103は、NVMインタフェース0~4を含む。各NVMインタフェースは、2つの別々のメモリバンクに接続することができる。NVMインタフェースに接続された各バンクは、1MBまたは2MBなどの特定の量のデータを格納することができる。デバイス103は、800、802、804、806、80A、80C、80D、80E、80Fなどの連続する論理アドレスに格納された各NVMインタフェースの各バンクのデータを有することができる。
図3は、本開示の実施形態による、さまざまなNVM ICデバイスのメモリマップ図である。いくつかの実施形態では、NVM ICデバイスは、SOTA-A構成モードに従って構成することができ、デバイスは2つの等しいイメージに分割され、デバイスはイメージAから実行される。各デバイスは、1つまたは複数のNVMインタフェースを含むことができる。例えば、デバイス101は、NVMインタフェース0~5を含むことができる。各NVMインタフェースは、2つの別個のメモリバンク(例えば、フラッシュ)に接続することができる。例えば、各NVMインタフェースは、AバンクおよびBバンクに接続することができる。NVMインタフェースに接続された各バンクは、2MBなどの特定の量のデータを格納することができる。いくつかの実施形態では、デバイス101は、論理アドレス800、802、804、806、808、80Aなどに格納された各NVMインタフェースのバンクAに対するデータを有することができる。デバイス101はまた、論理アドレス820、822、824、826、828、82Aなどに格納された各NVMインタフェースのバンクBに対するデータを有することもできる。図3に示すように、各デバイス101~107はさまざまなサイズのものである。例えば、デバイス103は、NVMインタフェース0~4を含む。各NVMインタフェースは、2つの別々のメモリバンクに接続することができる。NVMインタフェースに接続された各バンクは、1MBまたは2MBなどの特定の量のデータを格納することができる。デバイス103は、論理アドレス800、802、804、806、807などに格納された各NVMインタフェースのバンクAに対するデータを有することができる。デバイス103はまた、論理アドレス820、822、824、826、827などに格納された各NVMインタフェースのバンクBに対するデータを有することもできる。
図4は、本開示の実施形態による、さまざまなNVM ICデバイスのメモリマップ図である。いくつかの実施形態では、NVM ICデバイスは、SOTA-B構成モードに従って構成することができ、デバイスは2つの等しいイメージに分割され、イメージBに格納されたデータはイメージAとスワップされる。各デバイスは、1つまたは複数のNVMインタフェースを含むことができる。例えば、デバイス101は、NVMインタフェース0~5を含むことができる。各NVMインタフェースは、2つの別個のメモリバンク(例えば、フラッシュ)に接続することができる。例えば、各NVMインタフェースは、AバンクおよびBバンクに接続することができる。NVMインタフェースに接続された各バンクは、2MBなどの特定の量のデータを格納することができる。いくつかの実施形態では、デバイス101は、論理アドレス820、822、824、826、828、82Aなどに格納された各NVMインタフェースのバンクAに対するデータを有することができる。デバイス101はまた、論理アドレス800、802、804、806、808、80Aなどに格納された各NVMインタフェースのバンクBに対するデータを有することもできる。図4に示すように、各デバイス101~107はさまざまなサイズのものである。例えば、デバイス103は、NVMインタフェース0~4を含む。各NVMインタフェースは、2つの別々のメモリバンクに接続することができる。NVMインタフェースに接続された各バンクは、1MBまたは2MBなどの特定の量のデータを格納することができる。デバイス103は、論理アドレス820、822、824、826、827などに格納された各NVMインタフェースのバンクAに対するデータを有することができる。デバイス103はまた、論理アドレス800、802、804、806、807などに格納された各NVMインタフェースのバンクBに対するデータを有することもできる。
図5は、本開示の実施形態による、さまざまなNVM ICデバイスのメモリマップ図である。特に、図5は、図2~図4に示す3つの構成による、各NVMインタフェースのバンクAに必要とされ得るアドレスレンジを示す。図5に示すように、構成に応じて、各デバイスの各NVMインタフェースは、複数の論理アドレスによってアドレス指定可能であり得る。例えば、デバイス101が線形構成にある場合、NVMインタフェース0は、図2に例示されるように、800によってアドレス指定される必要がある。デバイス101がSOTA-A構成にある場合、NVMインタフェース0は、図3に例示されるように、800によってアドレス指定される必要がある。デバイス101がSOTA-B構成にある場合、NVMインタフェース0は、図4に例示されるように、820によってアドレス指定される必要がある。さらに、構成に応じて、各NVMインタフェースの各バンクに存在できるアドレスレンジの数が原因で、デバイスエミュレーションが困難になる場合があり得る。例えば、デバイス101がSOTA-B構成にある場合、NVMインタフェース4は、図4に示すように、828によってアドレス指定される必要がある。しかしながら、デバイス101がSOTA-B構成においてデバイス103をエミュレートする場合、NVMインタフェースは、図4に示すように、SOTA-B構成におけるデバイス103のNVMインタフェース4のアドレスである827など、別のアドレスによってアドレス指定する必要がある可能性がある。上述したように、構成やデバイスエミュレーションモードを考慮し、各デバイスに必要となる可能性のある潜在的なアドレスの数を考慮すると、各デバイスのハードウェアに各潜在的なアドレスレンジをハードコード化するのはコストがかかる可能性がある。その代わりに、以下に本明細書でより詳細に説明するように、アドレスレンジを復号するために使用できる構成可能なレジスタを使用することによって、柔軟なサポートを提供することが望ましい場合があり得る。
図6Aは、本開示の実施形態による、さまざまなNVM ICデバイス内に構成されるべきベースフィールド値およびマスクフィールド値を示すブロック図である。図6Bは、本開示の実施形態による、さまざまなNVM ICデバイスにおいて構成されるべきベース選択およびベースアドレスマスク値を示すブロック図である。図6A~図6Bは、本明細書の以下の図7を参照してより詳細に説明される。
図7は、本開示の実施形態による、アドレスレンジを復号するために使用することができる構成可能なレジスタを使用することによって、メモリデバイスエミュレーションおよびバンクスワッピングのための柔軟なサポートを提供するための方法700の流れ図である。方法700は、ハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコードなど)、ソフトウェア(処理デバイス上で実行される命令など)、ファームウェア、またはそれらの組合せを含み得る処理論理によって実施され得る。一実施形態では、方法700は、図1AのNVM集積回路デバイス110によって、より具体的にはNVM集積回路デバイス110の処理デバイス103によって実施される。
図7を参照すると、動作701において、処理論理は論理アドレスを受信する。いくつかの実施形態では、NVM ICデバイス(例えば、図1AのNVM ICデバイス110)のデコーダ(例えば、図1A~図1Bのデコーダ106a)を介して論理アドレスを受信することができる。デコーダは、デコーダセット、例えば、図1Aのデコーダ106a~111aのうちの1つであり得る。デコーダは、NVM ICデバイスのルーティング回路(例えば、図1A~図1Bのルーティング回路106b)に関連付けることができる。いくつかの実施形態では、ルーティング回路は、ルーティング回路セット、例えば、図1Aのルーティング回路106b~111bのうちの1つであり得る。いくつかの実施形態では、処理論理は、ホストマイクロコントローラ(例えば、図1Aのホストマイクロコントローラ151)からメモリアクセス要求のための論理アドレスを受信することができる。
動作703において、処理論理は論理アドレスを復号する。いくつかの実施形態では、論理アドレスを復号すると、論理アドレスに関連付けられたメモリアクセスの受け入れまたは拒否が生じる。いくつかの実施形態では、論理アドレスを復号するステップは、デコーダに関連付けられたプログラマブルレジスタ、例えば、図1Aの1つまたは複数のプログラマブルレジスタ107のうち1つのプログラマブルレジスタに格納された値のセットを特定するステップを含む。いくつかの実施形態では、プログラマブルレジスタは、マルチビット値を格納することができる。いくつかの実施形態では、マルチビット値は、各デコーダ/ルーティング回路のすべてのプログラマブルレジスタにわたって共通の定数値であり得る。いくつかの実施形態では、マルチビット値は、各プログラマブルレジスタに固有の値であり得る。例えば、マルチビット値は、図6Aに示すように、ベースフィールドおよびマスクフィールドを含むことができる。いくつかの実施形態では、ベースフィールドおよびマスクフィールドはそれぞれ、マルチビット値、例えば、6ビット値であり得る。図6Aに示すように、デバイス661は、各NVMインタフェース0~5に対するベース値およびマスク値を格納することができる。例えば、デバイス661は、NVMインタフェース0のベースフィールド値0x800およびマスクフィールド値0xDFCを格納することができる。デバイス661は、NVMインタフェース1のベースフィールド値0x804およびマスクフィールド値0xDFCを格納することができる。いくつかの実施形態では、図6Aのアドレスマップ601は、線形構成モードのデバイス661~667を反映する。いくつかの実施形態では、図6Aのアドレスマップ603は、SOTA-Aおよび/またはSOTA-B構成モードのデバイス661~667を反映する。いくつかの実施形態では、論理アドレスを復号するステップは、1つまたは複数のプログラマブルレジスタに格納されたマルチビット値(例えば、ベースフィールドおよびマスクフィールド)を特定するステップを含む。処理論理は、論理アドレスと各特定されたマルチビット値とを比較することができる。いくつかの実施形態では、論理アドレスを比較するステップは、特定された各マルチビット値に対して論理アドレスを評価するステップを含むことができ、ブール論理を使用する1つまたは複数の数式を使用するステップを含む。
動作705において、処理論理は、論理アドレスに関連付けられたデータを送信するためのルーティング回路を決定することができる。ルーティング回路を決定するステップは、論理アドレスを復号することに応答してルーティング回路を特定するステップを含むことができる。処理論理は、1つまたは複数の数式を使用して、特定された各マルチビット値に対して論理アドレスを評価した結果に基づいて、ルーティング回路を特定することができる。
動作707において、処理論理は、動作705で特定されたルーティング回路に論理アドレスに関連付けられたデータを送信する。いくつかの実施形態では、論理アドレスに関連付けられたデータを送信するステップは、ルーティング回路に関連付けられた物理領域にデータを送信するステップを含むことができる。いくつかの実施形態では、動作705に関して本明細書で上述したように、特定されたルーティング回路で特定されたデコーダは、受信した論理アドレスをさらに復号することができる。
さらに動作707において、処理論理は、動作705で特定されたルーティング回路に関連付けられたデコーダを使用して、論理アドレスをさらに復号することができる。いくつかの実施形態では、論理アドレスをさらに復号するステップは、デコーダ/ルーティング回路に関連付けられたプログラマブルレジスタに格納されたバンク選択フィールド値を特定するステップを含むことができる。図6Bに示すように、デバイス661は、各NVMインタフェース0~5に対するバンク選択値を格納することができる。例えば、デバイス661は、NVMインタフェース0に対してバンク選択ビット値1を格納することができる。いくつかの実施形態では、アドレスマップ601は、線形構成モードにあるデバイス661~667を表示することができる。いくつかの実施形態では、アドレスマップ603は、SOTA-Aおよび/またはSOTA-B構成モードにあるデバイス661~667を表示することができる。いくつかの実施形態では、プログラマブルレジスタ内のバンク選択フィールド値の特定に応答して、処理論理は、バンク選択フィールド値およびプログラマブルレジスタに格納されたマルチビット値を使用して論理アドレスを復号することができる。バンク選択フィールド値およびマルチビット値を使用して論理アドレスを復号するステップは、論理アドレスをバンク選択フィールド値およびマルチビット値に対して評価するステップを含むことができる。いくつかの実施形態では、バンク選択フィールド値およびマルチビット値に対して論理アドレスを評価するステップは、ブール論理を使用する数式を使用するステップを含む。論理アドレスを復号すると、NVM ICデバイスが分割される物理領域のうちの1つの物理領域を特定することができる。例えば、論理アドレスを復号すると、論理アドレスを送信するために図1Bの物理領域105aまたは105bのうちの一方を特定することができる。
さらに動作707において、処理論理は、デコーダを使用して、論理アドレスをさらに復号し、動作705で特定された物理領域内の宛先アドレスを特定し、論理アドレスを送信することができる。いくつかの実施形態では、処理論理は、デコーダ/ルーティング回路に関連付けられたプログラマブルレジスタに格納されたバンクアドレスマスクフィールド値を特定することができる。図6Bに示すように、デバイス661は、各NVMインタフェース0~5に対するバンクアドレスマスクフィールド値を格納することができる。例えば、デバイス661は、NVMインタフェース0に対するバンクアドレスマスク値0x1を格納することができる。いくつかの実施形態では、アドレスマップ601は、線形構成モードにあるデバイス661~667を表示することができる。いくつかの実施形態では、アドレスマップ603は、SOTA-Aおよび/またはSOTA-B構成モードにあるデバイス661~667を表示することができる。いくつかの実施形態では、プログラマブルレジスタ内のバンクアドレスマスクフィールド値の特定に応答して、処理論理は、プログラマブルレジスタに格納されたバンクアドレスマスクフィールド値およびマルチビット値を使用して論理アドレスを復号することができる。バンクアドレスマスクフィールド値およびマルチビット値を使用して論理アドレスを復号するステップは、論理アドレスをバンクアドレスマスクフィールド値およびマルチビット値に対して評価するステップを含むことができる。いくつかの実施形態では、バンクアドレスマスクフィールド値およびマルチビット値に対して論理アドレスを評価するステップは、ブール論理を使用する数式を使用するステップを含む。
さらに動作707において、処理論理は、デコーダを使用して、論理アドレスをさらに復号し、構成モードを特定することができる。いくつかの実施形態では、論理アドレスをさらに復号するステップは、デコーダ/ルーティング回路に関連付けられたプログラマブルレジスタに格納された構成モードフィールド値を特定するステップを含むことができる。各デバイスは、各NVMインタフェースの構成モードフィールド値を格納することができる。いくつかの実施形態では、構成モードフィールド値は1ビット値であり得る。いくつかの実施形態では、構成モードフィールド値が0である場合、デバイスは線形構成モードにある。いくつかの実施形態では、構成モードフィールド値が0または1である場合、デバイスはSOTA-AまたはSOTA-B構成モードにあり得る。
図8は、本明細書で説明される方法論のうちの任意の1つまたは複数をマシンに実施させるための命令セットが実行され得るコンピューティングシステム800の例示的な形態のマシンの概略図を示す。代替的な実施態様では、マシンは、LAN、イントラネット、エクストラネット、またはインターネット内の他のマシンに接続(例えば、ネットワーク接続)されてもよい。マシンは、クライアントサーバネットワーク環境におけるサーバまたはクライアントデバイスの能力で動作し、またはピアツーピア(または分散型の)ネットワーク環境におけるピアマシンとして動作することができる。マシンは、ホストコンピューティングシステムまたはコンピュータ、自動車用コンピューティングデバイス、サーバ、コントローラエリアネットワーク(CAN)またはローカル相互接続ネットワーク(LIN)などの自動車ネットワーク用のネットワークデバイス、またはそのマシンがとるべき動作を指定する命令セット(シーケンシャルまたはその他)を実行することができる任意のマシンであってもよい。さらに、単一のマシンのみが示されているが、「マシン(machine)」という用語はまた、本明細書で説明される方法論のうちの任意の1つまたは複数を実施するための1つの命令セット(または複数のセット)を個別にまたは共同で実行するマシンの任意の集合も含むと解釈されるものとする。ページやセクションを変換する実施態様をコンピューティングシステム800に実装することができる。
コンピューティングシステム800は、処理デバイス802、メインメモリ804(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)(例えば、シンクロナスDRAM(SDRAM)またはDRAM(RDRAM)など)、スタティックメモリ806(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)およびデータストレージデバイス818を含み、これらはバス830を介して互いに通信する。
処理デバイス802は、マイクロプロセッサ装置、中央処理装置などの処理デバイスのような1つまたは複数の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ装置、縮小命令セットコンピュータ(RISC)マイクロプロセッサ装置、超長命令語(VLIW)マイクロプロセッサ装置、または他の命令セットを実装する処理デバイス、または命令セットの組合せを実装する処理デバイスであってもよい。処理デバイス802はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号処理デバイス(DSP)、ネットワーク処理デバイスなどの1つまたは複数の専用処理デバイスであってもよい。一実施態様では、処理デバイス802は、1つまたは複数の処理デバイスコアを含むことができる。処理デバイス802は、本明細書で説明した動作を実施するための命令826を実行するように構成される。一実施態様では、処理デバイス802は、図1Aおよび/または図1Bのシステム100の一部であってもよい。
代替的に、コンピューティングシステム800は、本明細書で説明する他の構成要素を含んでもよい。コンピューティングシステム800は、ネットワーク820に通信可能に結合されたネットワークインタフェースデバイス808をさらに含むことができる。コンピューティングシステム800はまた、ビデオディスプレイユニット810(例えば、液晶ディスプレイ(LCD))、英数字入力デバイス812(例えば、キーボード)、カーソル制御デバイス814(例えば、マウス)、信号生成デバイス816(例えば、スピーカ)、または他の周辺デバイスを含むことができる。さらに、コンピューティングシステム800は、グラフィックス処理ユニット822、ビデオ処理ユニット828およびオーディオ処理ユニット832を含むことができる。別の実施態様では、コンピューティングシステム800は、チップセット(図示せず)を含むことができ、これは、処理デバイス802と連携するように設計され、処理デバイス802と外部デバイスとの間の通信を制御する集積回路、すなわち、チップのグループを指す。例えば、このチップセットは、処理デバイス802をメインメモリ804やグラフィックコントローラなどの超高速デバイスにリンクさせるとともに、処理デバイス802をUSB、PCI、またはISAバスなどの周辺機器の低速周辺バスにリンクさせる、マザーボード上のチップセットであってもよい。
データストレージデバイス818は、本明細書に説明の方法論または機能のいずれか1つまたは複数を具現化する命令826が格納されたコンピュータ可読記憶媒体824を含むことができる。命令826はまた、完全にまたは少なくとも部分的に、命令826としてメインメモリ804内におよび/またはコンピューティングシステム800による実行中に処理論理として処理デバイス802内に存在してもよく、メインメモリ804および処理デバイス802もまた、コンピュータ可読記憶媒体を構成する。
コンピュータ可読記憶媒体824はまた、図1A~図1Bに関して説明したような、処理デバイス802および/または上記のアプリケーションを呼び出す方法を含むソフトウェアライブラリを利用する命令826を格納するためにも使用され得る。コンピュータ可読記憶媒体824は、例示的な実施態様では単一の媒体であるように示されているが、「コンピュータ可読記憶媒体(computer-readable storage medium)」という用語は、1つまたは複数の命令セットを格納する単一の媒体または複数の媒体(例えば、集中型もしくは分散型データベース、並びに/または関連するキャッシュおよびサーバ)を含むと解釈されるべきである。「コンピュータ可読記憶媒体」という用語はまた、マシンによる実行のための命令セットを格納、符号化、または搬送することができ、マシンに実施態様の方法論のうちの任意の1つまたは複数を実施させる任意の媒体を含むと解釈されるものとする。したがって、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、並びに光学および磁気媒体を含むが、これらに限定されないと解釈されるものとする。
上記の説明では、多数の詳細が記載されている。しかしながら、本開示の利益を有する当業者には、本開示の実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであろう。いくつかの例では、説明を不明瞭にすることを避けるために、周知の構造およびデバイスを詳細ではなくブロック図形式で示している。
本明細書で使用されるモジュールとは、ハードウェア、ソフトウェアおよび/またはファームウェアの任意の組合せを指す。一例として、モジュールは、マイクロコントローラによって実行されるように適合されたコードを格納するための非一時的媒体と関連付けられた、マイクロコントローラなどのハードウェアを含む。したがって、一実施態様におけるモジュールへの言及は、非一時的媒体に保持されるコードを認識および/または実行するように具体的に構成されるハードウェアを指す。さらに、別の実施態様では、モジュールの使用は、マイクロコントローラによって実行されて所定の動作を実施するように、具体的に適合された、コードを含む非一時的媒体を指す。また、推測され得るように、さらに別の実施態様では、(この例では)モジュールという用語は、マイクロコントローラと非一時的媒体との組合せを指すことがある。別個のものとして図示されているモジュール境界は、一般的にさまざまであり、重複する可能性がある場合が多い。例えば、第1のモジュールと第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを共有することができるが、潜在的にいくつかの独立したハードウェア、ソフトウェア、またはファームウェアを保持することができる。一実施態様では、論理という用語の使用は、トランジスタ、レジスタなどのハードウェア、またはプログラマブル論理デバイスなどの他のハードウェアを含む。
一実施態様では、「構成された(configured to)」という語句の使用は、指定または決定されたタスクを実施するための装置、ハードウェア、論理、または要素を配置、まとめる、製造、販売提供、インポートおよび/または設計することを指す。この例では、動作していない装置またはその要素は、指定されたタスクを実施するように設計、結合および/または相互接続されている場合、前記指定されたタスクを実施するように依然として「構成されて」いる。純粋に例示的な例として、論理ゲートは、動作中に0または1を提供することができる。しかし、イネーブル信号をクロックに提供するように「構成された」論理ゲートは、1または0を提供し得るすべての潜在的な論理ゲートを含むわけではない。その代わりに、論理ゲートは、動作中に1または0出力がクロックを有効にするように、何らかの方法で結合されているものである。ここでも、「構成された」という用語の使用は動作を必要としないが、その代わりに、装置、ハードウェアおよび/または要素の潜在的な状態に焦点を当て、潜在的な状態では、装置、ハードウェアおよび/または要素は、装置、ハードウェアおよび/または要素が動作しているときに特定のタスクを実施するように設計されていることに留意されたい。
さらに、一実施態様では、「する(to)」、「することができる(capable of/to)」および/または「するように動作可能である(operable to)」という語句の使用は、指定された方法で装置、論理、ハードウェアおよび/または要素の使用を可能にするように設計されたいくつかの装置、論理、ハードウェアおよび/または要素を指す。上記のように、一実施態様では、「する」、「することができる」、または「するように動作可能である」の使用は、装置、論理、ハードウェアおよび/または要素の潜在的な状態を指し、装置、論理、ハードウェアおよび/または要素は動作しないが、指定された方法で装置の使用を可能にするように設計されていることに留意されたい。
本明細書で使用される値には、数値、状態、論理状態、または2進数論理状態の任意の既知の表現が含まれる。多くの場合、論理レベル、論理値(logic values)、すなわち、論理値(logical values)の使用は、1および0とも呼ばれ、単に2進数論理状態を表す。例えば、「1」は高論理レベル、「0」は低論理レベルを意味する。一実施態様では、トランジスタまたはフラッシュセルなどのストレージセルは、単一の論理値または複数の論理値を保持することが可能であり得る。しかしながら、コンピュータシステムにおける値の他の表現が使用されてきた。例えば、10進数の10は、2進数の1010および16進数のAと表され得る。したがって、値には、コンピュータシステムで保持することが可能な情報の任意の表現が含まれる。
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現の観点から提示される。これらのアルゴリズムによる記述や表現は、データ処理技術の当業者が、仕事の内容を他の当業者に最も効果的に伝えるために使用する手段である。アルゴリズムは、ここでは一般に、所望の結果をもたらす自己矛盾のない一連のステップであると考えられる。このステップは、物理量の物理的操作を必要とするものである。通常、これらの量は、必ずしもそうではないが、格納、転送、結合、比較およびその他の操作が可能な電気信号または磁気信号の形態をとる。これらの信号をビット、値、要素、記号、文字、用語、数字などとして参照することは、主に一般的な使用上の理由から、時には便利であることが証明されている。
しかしながら、これらの用語や類似の用語はすべて、適切な物理量と関連付けられるべきであり、これらの量に適用される便利なラベルにすぎないことを念頭に置く必要がある。上記の説明から明らかなように特に明記しない限り、説明全体を通して、「受信する(receiving)」、「調整する(adjusting)」などの用語を利用した説明は、コンピューティングシステムのレジスタおよびメモリ内の物理(例えば、電子)量として表されるデータを操作し、コンピューティングシステムのメモリもしくはレジスタまたは他のそのような情報記憶装置、伝送装置もしくは表示装置内の物理量として同様に表される他のデータに変換するコンピューティングシステムまたは同様の電子コンピューティングデバイスの動作およびプロセスを指すことが理解される。
本明細書では、「例(example)」または「例示的(exemplary)」という言葉は、例、実例、または例示として役立つことを意味するために使用される。「例」または「例示的」として本明細書に記載された態様または設計は、必ずしも他の態様または設計よりも好ましいまたは有利であると解釈されるべきではない。むしろ、「例」または「例示的」という用語の使用は、概念を具体的に提示することを意図している。本出願で使用される場合、「または(or)」という用語は、排他的な「または」ではなく包括的な「または」を意味することを意図している。すなわち、別段の指定がない限り、または文脈から明らかでない限り、「XはAまたはBを含む」は、当然の包含的並べ替えのうちいずれかを意味することを意図している。すなわち、XがAを含む場合、XがBを含む場合、またはXがAとBの両方を含む場合、前述のいずれの場合にも、「XはAまたはBを含む」が満たされることになる。さらに、本出願および添付の請求項の中で使用される冠詞「1つの(a)」および「1つの(an)」は、特に指定されない限り、または文脈から単数形を対象とすることが明らかでない限り、一般に「1つまたは複数」を意味すると解釈されるべきである。さらに、全体を通して「実施形態(an embodiment)」または「一実施形態(one embodiment)」という用語の使用は、そのように説明されない限り、同じ実施形態を意味することを意図していない。
本明細書に記載の実施形態は、本明細書の動作を実施するための装置にも関連し得る。この装置は、必要な目的のために特別に構成されてもよく、またはその中に格納されたファームウェアによって選択的に起動または再構成される汎用ハードウェアを備えてもよい。そのようなファームウェアは、NVM、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、フラッシュメモリ、または電子命令を格納するのに適した任意のタイプの媒体などの非一時的コンピュータ可読記憶媒体に格納することができるが、これらに限定されない。「コンピュータ可読記憶媒体(computer-readable storage medium)」という用語は、1つまたは複数の命令セットを格納する単一の媒体または複数の媒体を含むと解釈されるべきである。「コンピュータ可読媒体(computer-readable medium)」という用語はまた、ハードウェアによって実行するための命令セットを格納、符号化、または搬送することができ、ハードウェアに本実施形態の方法論のうちの任意の1つまたは複数を実施させる任意の媒体を含むと解釈されるものとする。したがって、「コンピュータ可読記憶媒体(computer-readable storage medium)」という用語は、ソリッドステートメモリ、光学媒体、電磁媒体、ハードウェアによる実行のための命令セットを格納することができ、ハードウェアに本実施形態の方法論のうちの任意の1つまたは複数を実施させる任意の媒体を含むが、これらに限定されないと解釈されるものとする。
上記の説明では、本開示のいくつかの実施形態の理解を深めるために、特定のシステム、構成要素、方法などの例など、多数の具体的な詳細が示されている。しかしながら、当業者には、本開示の少なくともいくつかの実施形態がこれらの具体的な詳細なしで実施され得ることは明らかであろう。他の例では、本開示を不必要に曖昧にしないために、周知の構成要素や方法は詳細に説明されないか、または単純なブロック図形式で提示される。したがって、上記の具体的な詳細は単なる例示である。特定の実施形態は、これらの例示的な詳細とは異なり、依然として本開示の範囲内にあると考えられる。
上記の説明は例示を意図しており、限定を意図していないことを理解されたい。多くの他の実施形態は、上記の説明を読み理解すれば、当業者には明らかであろう。したがって、本開示の範囲は、添付の請求項を参照し、このような請求項が権利を有する均等物の全範囲と共に決定されるべきである。
上記の説明では、説明の目的のために、本開示の完全な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者には、本開示がこれらの具体的な詳細なしで実施され得ることは明らかであろう。他の例では、周知の回路、構造および技術は詳細には示されておらず、むしろこの説明の理解を不必要に不明瞭にすることを避けるためにブロック図で示されている。
「一実施形態(one embodiment)」または「実施形態(an embodiment)」への説明における言及は、その実施形態に関連して説明される特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。本明細書のさまざまな箇所に位置する「一実施形態では(in one embodiment)」という語句は、必ずしも同じ実施形態を指すとは限らない。
Claims (20)
- 不揮発性メモリ(NVM)集積回路デバイスであって、前記NVM集積回路デバイスは、
処理デバイスと、
第1の物理領域と第2の物理領域とに分割されたメモリセルのNVMアレイと、
複数のルーティング回路と、
第1のルーティング回路に関連付けられた第1のデコーダと、
第2のルーティング回路に関連付けられた第2のデコーダと、
前記複数のルーティング回路に結合された第1のプログラマブルレジスタであって、前記第1のプログラマブルレジスタは、第1のマルチビット値を格納し、前記第1のマルチビット値は、前記第1のデコーダに関連付けられた第1のアドレスレンジを構成するように前記処理デバイスによってプログラムされる、第1のプログラマブルレジスタと、
前記複数のルーティング回路に結合された第2のプログラマブルレジスタであって、前記第2のプログラマブルレジスタは、第2のマルチビット値を格納し、前記第2のマルチビット値は、前記第2のデコーダに関連付けられた第2のアドレスレンジを構成するように前記処理デバイスによってプログラムされる、第2のプログラマブルレジスタと、
を備えるNVM集積回路デバイス。 - 前記第1のマルチビット値は、第1のベースフィールドおよび第1のマスクフィールドを備える、
請求項1に記載のNVM集積回路デバイス。 - 前記第1のデコーダは、論理アドレスを受信し、前記第1のマルチビット値を使用して前記論理アドレスを復号し、前記論理アドレスに関連付けられたメモリアクセスを受け入れるか拒否する、
請求項1に記載のNVM集積回路デバイス。 - 前記第1のデコーダは、
論理アドレスを受信し、
前記論理アドレスと前記第1のマルチビット値および前記第2のマルチビット値とを比較し、
前記論理アドレスと前記第1のマルチビット値および前記第2のマルチビット値とを比較することに応答して、前記論理アドレスに関連付けられたデータを送信するための前記第1のルーティング回路および前記第2のルーティング回路のうち1つのルーティング回路を決定し、
前記論理アドレスに関連付けられた前記データを前記ルーティング回路に送信する、
請求項1に記載のNVM集積回路デバイス。 - 前記第1のデコーダが前記論理アドレスに関連付けられた前記メモリアクセスを受け入れることに応答して、前記第1のデコーダは、
前記第1のマルチビット値および第1のバンク選択フィールドを使用して前記論理アドレスをさらに復号し、前記第1の物理領域および前記第2の物理領域のうちの1つの物理領域を特定し、前記論理アドレスに関連付けられたデータを送信し、前記第1のプログラマブルレジスタは、前記第1のバンク選択フィールドをさらに格納する、
請求項3に記載のNVM集積回路デバイス。 - 前記論理アドレスを復号するステップは、構成モードフィールドを使用するステップをさらに含み、前記第1のプログラマブルレジスタは、前記構成モードフィールドをさらに格納する、
請求項5に記載のNVM集積回路デバイス。 - 前記第1のデコーダが前記論理アドレスに関連付けられた前記メモリアクセスを受け入れることに応答して、前記第1のデコーダは、
前記第1のマルチビット値および第1のバンクアドレスマスクフィールドを使用して前記論理アドレスをさらに復号し、前記物理領域内の宛先アドレスを特定し、前記第1のプログラマブルレジスタは、前記第1のバンクアドレスマスクフィールドをさらに格納する、
請求項5に記載のNVM集積回路デバイス。 - 方法であって、前記方法は、
第1のデコーダによって、論理アドレスを受信するステップであって、前記第1のデコーダは、不揮発性メモリ(NVM)集積回路デバイスに含まれる複数のルーティング回路のうち第1のルーティング回路に関連付けられるステップと、
前記論理アドレスを復号するステップであって、前記論理アドレスに関連付けられたメモリアクセスを受け入れるか拒否するステップと、
前記論理アドレスを復号するステップに応答して、前記論理アドレスに関連付けられたデータを送信するための前記複数のルーティング回路のうちの1つのルーティング回路を決定するステップと、
前記論理アドレスに関連付けられた前記データを前記ルーティング回路に送信するステップと、
を含む方法。 - 前記論理アドレスを復号するステップは、
前記複数のルーティング回路に結合された第1のプログラマブルレジスタ内の第1のベースフィールドおよび第1のマスクフィールドを含む第1のマルチビット値を特定するステップと、
前記複数のルーティング回路に結合された第2のプログラマブルレジスタ内の第2のベースフィールドおよび第2のマスクフィールドを含む第2のマルチビット値を特定するステップと、
前記論理アドレスと前記第1のマルチビット値および前記第2のマルチビット値とを比較するステップと、
をさらに含む、
請求項8に記載の方法。 - 前記第1のベースフィールドおよび前記第1のマスクフィールドは、各々、前記NVM集積回路デバイスの処理デバイスによって前記プログラマブルレジスタにプログラムされる、
請求項9に記載の方法。 - 前記プログラマブルレジスタは、プロテクト付きレジスタである、
請求項9に記載の方法。 - 前記方法は、前記論理アドレスに関連付けられた前記メモリアクセスを受け入れるステップに応答して、第1のマルチビット値および第1のバンク選択フィールドを使用して前記論理アドレスを前記第1のデコーダによって復号し、前記NVM集積回路デバイスの第1の物理領域および第2の物理領域のうちの1つの物理領域を特定し、前記論理アドレスに関連付けられた前記データを送信するステップをさらに含み、
前記第1のマルチビット値および前記第1のバンク選択フィールドは、前記複数のルーティング回路に結合されたプログラマブルレジスタ内に格納される、
請求項8に記載の方法。 - 前記方法は、構成モードフィールドを使用して前記論理アドレスを復号するステップをさらに含み、
前記構成モードフィールドは、前記プログラマブルレジスタに格納される、
請求項12に記載の方法。 - 前記方法は、前記論理アドレスに関連付けられた前記メモリアクセスを受け入れるステップに応答して、前記第1のデコーダによって、前記第1のマルチビット値および第1のバンクアドレスマスクフィールドを使用して前記論理アドレスを復号し、前記物理領域内の宛先アドレスを特定するステップをさらに含み、
前記第1のバンクアドレスマスクフィールドは、前記プログラマブルレジスタに格納される、
請求項12に記載の方法。 - ホストマイクロコントローラと、
前記ホストマイクロコントローラに結合された不揮発性メモリ(NVM)集積回路デバイスと、
を備えるシステムであって、
前記不揮発性メモリ(NVM)集積回路デバイスは、
処理デバイスと、
第1の物理領域と第2の物理領域とに分割されたメモリセルのNVMアレイと、
複数のルーティング回路と、
第1のルーティング回路に関連付けられた第1のデコーダと、
第2のルーティング回路に関連付けられた第2のデコーダと、
前記複数のルーティング回路に結合された第1のプログラマブルレジスタであって、前記第1のプログラマブルレジスタは、第1のマルチビット値を格納し、前記第1のマルチビット値は、前記第1のデコーダに関連付けられた第1のアドレスレンジを構成するように前記処理デバイスによってプログラムされる、第1のプログラマブルレジスタと、
前記複数のルーティング回路に結合された第2のプログラマブルレジスタであって、前記第2のプログラマブルレジスタは、第2のマルチビット値を格納し、前記第2のマルチビット値は、前記第2のデコーダに関連する第2のアドレスレンジを構成するように前記処理デバイスによってプログラムされる、第2のプログラマブルレジスタと、
を備える、
システム。 - 前記第1のマルチビット値は、第1のベースフィールドおよび第1のマスクフィールドを含む、
請求項15に記載のシステム。 - 前記第1のデコーダは、論理アドレスを受信し、前記第1のマルチビット値を使用して前記論理アドレスを複号し、前記論理アドレスに関連付けられたメモリアクセスを受け入れるか拒否する、
請求項16に記載のシステム。 - 前記第1のデコーダは、
論理アドレスを受信し、
前記論理アドレスと前記第1のマルチビット値および前記第2のマルチビット値とを比較し、
前記論理アドレスと前記第1のマルチビット値および前記第2のマルチビット値とを比較することに応答して、前記論理アドレスに関連付けられたデータを送信するための前記第1のルーティング回路および前記第2のルーティング回路のうち1つのルーティング回路を決定し、
前記論理アドレスに関連付けられた前記データを前記ルーティング回路に送信する、
請求項15に記載のシステム。 - 前記第1のデコーダが前記論理アドレスに関連付けられた前記メモリアクセスを受け入れることに応答して、前記第1のデコーダは、
前記第1のマルチビット値および第1のバンク選択フィールドを使用して前記論理アドレスをさらに復号し、前記第1の物理領域および前記第2の物理領域のうちの1つの物理領域を特定し、前記論理アドレスに関連付けられたデータを送信し、前記第1のプログラマブルレジスタが前記第1のバンク選択フィールドをさらに格納する、
請求項17に記載のシステム。 - 前記第1のデコーダが前記論理アドレスに関連付けられた前記メモリアクセスを受け入れることに応答して、前記第1のデコーダは、
前記第1のマルチビット値および第1のバンクアドレスマスクフィールドを使用して前記論理アドレスをさらに復号し、前記物理領域内の宛先アドレスを特定し、
前記第1のプログラマブルレジスタは、前記第1のバンクアドレスマスクフィールドをさらに格納する、
請求項19に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/708,882 | 2022-03-30 | ||
US17/708,882 US12032960B2 (en) | 2022-03-30 | Flexible support for device emulation and bank swapping |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023152931A true JP2023152931A (ja) | 2023-10-17 |
Family
ID=88019284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023052809A Pending JP2023152931A (ja) | 2022-03-30 | 2023-03-29 | デバイスエミュレーションおよびバンクスワッピングのための柔軟なサポート |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2023152931A (ja) |
DE (1) | DE102023107204A1 (ja) |
-
2023
- 2023-03-22 DE DE102023107204.8A patent/DE102023107204A1/de active Pending
- 2023-03-29 JP JP2023052809A patent/JP2023152931A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102023107204A1 (de) | 2023-10-05 |
US20230315448A1 (en) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10783942B2 (en) | Modified decode for corner turn | |
US10141033B2 (en) | Multiple register memory access instructions, processors, methods, and systems | |
US9836415B2 (en) | Buffer device, method and apparatus for controlling access to internal memory | |
US9836277B2 (en) | In-memory popcount support for real time analytics | |
US9772803B2 (en) | Semiconductor memory device and memory system | |
US10373668B2 (en) | Memory device shared by two or more processors and system including the same | |
US10983792B2 (en) | Memory device that performs internal copy operation | |
US10026458B2 (en) | Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size | |
US20220076717A1 (en) | Memory system for performing data operations within memory device and method of operating the same | |
US9711192B2 (en) | Memory device having different data-size access modes for different power modes | |
US10387072B2 (en) | Systems and method for dynamic address based mirroring | |
CN104115230A (zh) | 高效pcms刷新机制背景 | |
US8127110B2 (en) | Method, system, and medium for providing interprocessor data communication | |
US10055346B2 (en) | Polarity based data transfer function for volatile memory | |
US8976618B1 (en) | Decoded 2N-bit bitcells in memory for storing decoded bits, and related systems and methods | |
JP2023152931A (ja) | デバイスエミュレーションおよびバンクスワッピングのための柔軟なサポート | |
US12032960B2 (en) | Flexible support for device emulation and bank swapping | |
US20120246407A1 (en) | Method and system to improve unaligned cache memory accesses | |
US20220197642A1 (en) | Processor instructions for data compression and decompression | |
JP2007140750A (ja) | 直交変換回路 | |
US20210286740A1 (en) | In-line memory module (imm) computing node with an embedded processor(s) to support local processing of memory-based operations for lower latency and reduced power consumption | |
KR20180013212A (ko) | 데이터 비트 인버전 제어 장치 및 이를 포함하는 반도체 장치 | |
JP2005322390A (ja) | 書込み動作時にメモリセルアレイの一部領域に書込まれるデータをマスキングする半導体メモリ装置及びそのマスキング方法 | |
CN106886495B (zh) | 一种嵌入式系统及其控制方法 | |
KR20160051543A (ko) | 전력 모드에 따라 선택적으로 동작되는 메모리 장치 |