(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-09
(45)【発行日】2023-11-17
(54)【発明の名称】コンピューティングメモリシステム
(51)【国際特許分類】
G11C 7/10 20060101AFI20231110BHJP
G06F 12/00 20060101ALI20231110BHJP
G06F 12/02 20060101ALI20231110BHJP
G06F 12/0862 20160101ALI20231110BHJP
G06F 12/0879 20160101ALI20231110BHJP
G06F 12/0882 20160101ALI20231110BHJP
【FI】
G11C7/10 240
G06F12/00 560B
G06F12/02 580J
G06F12/0862 100
G06F12/0879
G06F12/0882
G11C7/10 212
G11C7/10 405
(21)【出願番号】P 2022509108
(86)(22)【出願日】2020-08-14
(86)【国際出願番号】 US2020046506
(87)【国際公開番号】W WO2021030750
(87)【国際公開日】2021-02-18
【審査請求日】2022-04-13
(32)【優先日】2019-08-14
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-31
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-04-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521152334
【氏名又は名称】スーパーメム,アイエヌシー.
(74)【代理人】
【識別番号】100091683
【氏名又は名称】▲吉▼川 俊雄
(74)【代理人】
【識別番号】100179316
【氏名又は名称】市川 寛奈
(72)【発明者】
【氏名】ル,ユ
(72)【発明者】
【氏名】リン,チエ-ユ
【審査官】後藤 彰
(56)【参考文献】
【文献】特表2016-506009(JP,A)
【文献】特表2019-536165(JP,A)
【文献】米国特許出願公開第2005/0041517(US,A1)
【文献】米国特許出願公開第2013/0132685(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 7/10
G06F 12/00
G06F 12/02
G06F 12/0862
G06F 12/0879
G06F 12/0882
(57)【特許請求の範囲】
【請求項1】
メモリアクセスの方法であって、
メモリアレイのワード線にアクセスし、
メモリアレイのワード線にアクセスした状態で、センスアンプは第1ビット線に電気的に接続されて、メモリアレイ内の前記ワード線及び第1ビット線に対応する第1ビットセルのデータにアクセスし、同一のセンスアンプが第2ビット線に電気的に接続され
、
第1メモリビットセルの検出に基づいて第1メモリビットセルの状態に対応する第1データ出力を生成し、前記第1データ出力をサンプリングしてデータバッファに格納する方法。
【請求項2】
更に、同一のセンスアンプがメモリアレイ内の前記ワード線及び第2ビット線に対応する第2ビットセルのデータにアクセスする請求項1に記載の方法。
【請求項3】
前記第2ビット線にアクセスする動作には、前記第2ビット線にアクセスするのと同時に前記第1ビット線にアクセスすることが含まれる請求項1に記載の方法。
【請求項4】
更に、
メモリアレイ内の前記ワード線及び第2ビット線に対応する第2ビットセルのデータにアクセスし、
第2メモリビットセルの検出に基づいて、第2メモリビットセルの状態に対応する第2データ出力を生成し、前記第2データ
出力をデータバッファに格納し、
第1データ出力の格納と第2データ出力の格納との間の時間差は、第1メモリビットセルの検出と第2メモリビットセルの検出との間の遅延である請求項
1に記載の方法。
【請求項5】
ワード線及び第1ビット線はメモリアレイの第1アドレスに対応しており、
前記方法は、更に、
メモリアドレスを受信し、
メモリアドレスが第1アドレスか否かを判定し、
判定結果に基づいて、メモリアドレスが第1アドレスであれば、データバッファから第1データ出力を送出し、
メモリアドレスが第1アドレスでない場合には、データバッファから第1データ出力を送出しない請求項
1に記載の方法。
【請求項6】
第1
データ出力をデータバッファに格納することには、データバッファに第1データ出力をラッチすることが含まれ、且つ、前記方法は、更に、第1データ出力のラッチに応答して、第1データ出力を準備完了状態とマークし、第1
データ出
力のマーク判定に基づいて、準備完了状態であればデータバッファから第1データ出力を送出する請求項
5に記載の方法。
【請求項7】
更に、
メモリアドレスを受信し、
メモリアドレスが第1アドレスとは異なる第2アドレスか否かを判定し、
メモリアドレスが第2アドレスであるとの判定結果に基づいてビット線のアクセス順序を更新し、
メモリアドレスが第2アドレスではないとの判定結果に基づいてビット線のアクセス順序を更新せず、
ビット線のアクセス順序の更新に応答して、センスアンプは、第2ビット線に電気的に接続されて、第2アドレスに対応するワード線及び第2ビット線にアクセスする請求項1に記載の方法。
【請求項8】
更に、
基準電圧を生成し、
ワード線及び第2ビット線に対応するメモリアレイ内の第2メモリビットセルを検出し、
メモリアレイ内の第1メモリビットセルを検出することには、構築済みの定電圧と基準電圧との差を増幅することが含まれ、前記構築済みの定電圧は第1メモリビットセルの状態に対応しており、
メモリアレイ内の第2メモリビットセルを検出することには、構築済みの定電圧と基準電圧との差を増幅することが含まれ、前記構築済みの定電圧は第2メモリビットセルの状態に対応している請求項1に記載の方法。
【請求項9】
更に、
基準電圧の生成を停止して、第1メモリビットセル及び第2メモリビットセルの検出が完了するまで基準電圧を保持する請求項
8に記載の方法。
【請求項10】
更に、メモリアレイのワード線にアクセスするのと同時に、第1メモリビットセルの状態に対応する構築済みの定電圧をサンプリング及び保持する請求項1に記載の方法。
【請求項11】
第1及び第2メモリビットセルは、磁気抵抗ランダムアクセスメモリ(MRAM)ビットセル、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、抵抗変化型メモリ(RRAM)、強誘電体メモリ(FRAM(登録商標))、フラッシュメモリ、及び相変化メモリ(PCM)のいずれかである請求項1に記載の方法。
【請求項12】
メモリはページモードで動作し、
前記方法は、更に、
メモリの動作をページモードからランダムアクセスモードに切り替え、
メモリアレイの第2ワード線にアクセスし、
メモリアレイの第2ワード線にアクセスするのと同時に、センスアンプに対応する第3ビット線にアクセスし、同一のセンスアンプに対応するその他のビット線にはアクセスしない請求項1に記載の方法。
【請求項13】
第1モードでメモリを動作させ、第1モードは、ページモード(page mode)、ランダムアクセスモード及びストリーミングモード(streaming mode)のうちの少なくとも1つを含み、
第1動作モードにおいて、入力を受信してメモリの動作を第1モードとは異なる第2モードに変更し、第2モードは、ページモード、ランダムアクセスモード及びストリーミングモードのうちの少なくとも1つを含み、
メモリの動作を第1モードから第2モードに変更するとの入力の受信に応答して、第2モードでメモリを動作させ
、
メモリに記憶されている要求されたデータに対応する第1アドレスを受信し、
データのプリフェッチのためにメモリの第2アドレスのデータにアクセスし、
要求されたデータはメモリの第2アドレスに記憶され、
受信した第1アドレスをメモリの第2アドレスにマッピングし、
前記第2アドレスへのマッピングは、以前に要求されたデータへのアクセスの履歴に基づいている方法。
【請求項14】
請求項1~1
3項のいずれか1項に記載の方法を実行するよう構成されたメモリ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してコンピューティングメモリに関し、特に、コンピューティングメモリシステムに用いられるデバイス及び方法に関する。
【背景技術】
【0002】
磁気抵抗ランダムアクセスメモリ(MRAM)、相変化メモリ(PCM)、抵抗変化型メモリ(RRAM)及び強誘電体メモリ(FRAM)といった不揮発性メモリ(non-volatile memory)は、通常、高速のプログラム制御可能性や、高い書き換え耐久性といった特性を有する。例えば、高性能MRAMは、人工知能(AI)コンピューティングの運用に使用可能である。しかし、人工知能(AI)モデルでは、最適化後のデータ構造が従来のデータと異なる特徴を有する。よって、高速読み取りという高性能を達成しようとする場合、MRAMのような一部の不揮発性メモリは特定の回路に問題を有する。例えば、MRAMビットセル(例えば、1T1J MRAMビットセル)に関する制約(例えば、読み出しマージンの低さ、トンネル磁気抵抗比のオンオフ比、寄生抵抗、リードディスターブエラー等)から、MRAM検出回路にはDRAM以上の精度が求められる。そのため、MRAM検出回路はより複雑となり、及び/又はより多くの面積を占有する。特定の事例において、MRAM検出回路は、32又は64のビット線ピッチ幅を有しており、代表的なDRAM検出回路における2ビット線ピッチ幅よりも大きい。検出回路の制約から、従来のMRAM(例えば、1MBセル、4096本のビット線)の場合には、1回に並行して64ビット線以下しか読み取ることができない(即ち、64個の検出回路を有しており、各検出回路が1回に1ビットを読み取り可能)。仮に、ビット線信号の生成に10~15ナノ秒(ns)を要し、且つ2ビットの誤り訂正(ECC)の計算に少なくとも5nsを要するとすれば、必要な読み取り動作サイクルの時間は20~25ナノ秒(ns)となる。そのため、このMRAMセルは0.4GB/sのデータ流量しか出力できず、DRAMと比較して、このようなデータ流量ではニューラルネットワークや機械学習といったAIシステムの応用に必要な性能を提供できない。また、MRAM読み取り回路は、大量のエネルギーを消費してロウデコーダを起動し、各読み取りサイクルに必要とされる正確な基準信号を生成するため、MRAMの読み取り性能及び電力が制限される。
【0003】
メモリコントローラは、少なくとも1つの主制御回路(例えば、CPU、GPU、DSP、ASIC)からのデータアクセス要求を調整し、メモリ回路に命令を発するための回路である。これらのデータ要求には、頻繁に変化するデータ(例えば動的データ)及び変化の少ないデータ(例えば静的データ)が含まれる。いくつかの例において、静的データ要求は動的データの帯域幅を減少させて、システム性能を低下させる。例えば、DRAMメモリコントローラでは、動的データ要求と静的データ要求が同一のDRAMアレイを対象とする場合があり、このようなコンフリクトによって動的データの帯域幅が減少する。また、一部のニューラルネットワークシステムでは、大量(例えばTB)のモデルデータを極めて短時間のうちにプロセッサに伝送する必要があるが、DRAMコントローラが静的データ(例えば、動的データを記憶するのと同一のDRAMアレイ)を要求することで、システムの演算速度が遅くなる場合がある。
【0004】
現代のDRAMデバイスは、ページモード(page mode)アクセスを使用しており(例えばJEDEC標準)、同一のワード線上のDRAMアレイセルが並行して読み取られる(row activation)。しかし、大多数の応用事例では、読み取りページのデータの90%が主制御チップにとって必要なデータではないため、無駄な消費電力が発生する。従来は、DRAMメモリコントローラを最適化することで使用されないデータ量を減少可能としてきたが、ページ幅及び境界(boundaries)が固定されていることから改良効果には限界がある。このほか、メモリの帯域幅を減少させたいとのニーズに対し、ニューラルネットワークは複雑なデータ構造(例えば、ワード長、プルーニング、圧縮技術の混合)を使用してデータの帯域幅を減少させている。しかし、この種の複雑なデータ構造のアクセス効率は、従来のメモリにおける固定されたデータページ幅及び境界によって制限される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、メモリ、メモリコントローラ、コンピューティングシステム及びその動作方法を開示する。
【課題を解決するための手段】
【0006】
いくつかの実施例において、本発明で開示するメモリアクセスの方法は以下を含む。即ち、メモリアレイのワード線にアクセスし、センスアンプに対応する第1ビット線にアクセスし、同一のセンスアンプに対応する第2ビット線にアクセスする。また、同一のセンスアンプを使用して、メモリアレイの同一ワード線の第1メモリビットセル及び第1ビット線を検出する。このように、上記で開示した方法を実行するようメモリを構成することで、低消費電力で迅速なデータアクセスが実施される。
【0007】
いくつかの実施例において、本発明で開示するメモリコントローラは、主制御チップと通信する第1メモリインターフェースと、第1メモリと通信する第2メモリインターフェースを含む。上記の第1メモリは第1データタイプを記憶するよう構成される。上記のメモリコントローラは、第2データタイプを記憶するよう構成される第2メモリを含む。上記のメモリコントローラは、第1データバッファ及び第2データバッファを含む。第1データバッファは、第1メモリインターフェース及び第2メモリインターフェースに接続される。第2データバッファは、第1メモリインターフェース及び第2メモリに接続される。これにより、本発明で開示するメモリコントローラはデータアクセスの速度を上昇させられる。
【0008】
いくつかの実施例において、本発明で開示するメモリの動作方法は、第1動作モード及び第2動作モードを含み、第1動作モードから第2動作モードへの切り替えが行われる。第1動作モード及び第2動作モードは、少なくとも、ページモード、ランダムアクセスモード、バーストアクセスモードのいずれかを含む。例えば、本発明で開示するメモリの動作方法は、第1動作モードで第1演算の効率を向上させるとともに、第2動作モードで第2演算の効率を向上させることが可能である。
【0009】
以下に、本発明がよりよく理解されるよう、図面を組み合わせて本発明の実施例につき詳細に説明する。
【図面の簡単な説明】
【0010】
【
図1】
図1は、実施例に基づき記載した代表的なメモリである。
【
図2】
図2は、実施例に基づき記載した代表的なメモリである。
【
図3】
図3は、実施例に基づき記載したメモリの代表的なタイミング図である。
【
図4】
図4は、実施例に基づき記載したメモリの代表的な検出回路である。
【
図5】
図5は、実施例に基づき記載したメモリの代表的なセンスアンプである。
【
図6】
図6は、実施例に基づき記載したメモリを動作させる代表的な方法である。
【
図7】
図7は、実施例に基づき記載したメモリを動作させる代表的な方法である。
【
図8】
図8は、実施例に基づき記載した代表的なメモリコントローラである。
【
図9】
図9は、実施例に基づき記載した代表的なコンピューティングシステムである。
【
図10】
図10は、実施例に基づき記載した代表的なコンピューティングシステムである。
【
図11】
図11は、実施例に基づき記載した代表的なコンピューティングシステムである。
【
図12】
図12は、実施例に基づき記載したメモリを動作させる代表的な方法である。
【
図13】
図13は、実施例に基づき記載した代表的なメモリである。
【
図14】
図14は、実施例に基づき記載した代表的なメモリである。
【
図15】
図15は、実施例に基づき記載したメモリを動作させる代表的な方法である。
【
図16】
図16は、コンピューティングデバイスの事例を示す。
【発明を実施するための形態】
【0011】
以下で、実施例を説明する際に図示する実施可能な特定の実施例は参考にすぎない。本発明で開示する構造及び方法の原理を使用するその他の実施例について、記載されている実施例に違反しない範囲で行われる構造上の変更は、本発明がカバーする範囲に含まれるものとする。
【0012】
図1は、実施例に基づき記載した代表的なメモリ100である。いくつかの実施例において、コンピューティングメモリ100は、メモリアレイ102、ビット線検出回路104、基準信号発生器106、センスアンプ108及びデータバッファ110を含む。
【0013】
いくつかの実施例において、前記コンピューティングメモリ100は、エッジAIシステム(edge AI system)、ニューラルネットワークシステム(neural-network system)、IoTシステム(internet-of-things system)、カーエレクトロニクスシステム、マイクロコントローラシステム(microcontroller system)、移動通信システム(mobile communication system)、プログラマブルコンピューティングシステム(programmable computing system)、ハードウェアセキュリティシステム(hardware security system)、テレマティクスシステム(telematics system)、バイオメディカル電子機器(biomedical electronics device)、ロボット(robot)及び無人航空機(drone)、といったコンピューティングシステムに応用される。
【0014】
いくつかの実施例において、メモリアレイ100は不揮発性メモリビットアレイを含む。例えば、不揮発性メモリビットセルはMRAMである。いくつかの実施例において、メモリアレイ100は、スタティックランダムアクセスメモリ(SRAM)、DRAM、及び/又はトランジスタ-MTJビットセルのアレイを含む。いくつかの実施例において、メモリアレイ100は、SRAM、RRAM、FRAM、フラッシュメモリ及びPCMのうちの少なくとも1つを含む。なお、ここでは説明しないが、開示するコンピューティングメモリにはその他のタイプのメモリも含まれる。また、
図1にはメモリアレイを1つ記載しているが、コンピューティングメモリ100は複数のメモリアレイを含み得る。いくつかの実施例において、メモリアレイ100は、行又はワード線、及び、列又はビット線として構成される。ここで使用する列又はビット線は、メモリアレイ内に配列される複数のビットセルを含む。
【0015】
いくつかの実施例において、メモリアレイ100はビット線群(例えばビット線群112)に分割される。ビット線群は、複数のビット線と、それに接続されるビット線検出回路(例えば、ビット線検出回路104、ビット線検出回路204)を含む。
図1にはこのようなビット線群のみを示しているが、ビット線群に含まれる全てのビット線が互いに隣接している必要はない。且つ、コンピューティングアレイのビット線群は異なる数のビット線を含み得る。
【0016】
一例において、1MB(8192Kビット)のコンピューティングメモリは、2048本のワード線及び4096本のビット線を有するメモリアレイを含む。当該メモリの事例において、ビット線検出回路104は4本のビット線を含む幅を有しており、センスアンプ108は64本のビット線(又は16個のビット線検出回路)を含む幅を有している。つまり、当該コンピューティングメモリは、256個のビット線検出回路及び64個のセンスアンプを有している。いくつかの実施例において、当該コンピューティングメモリの事例は、少なくとも1024ビットのデータバッファを有している(例えば、読み取りサイクルの出力ごとに少なくとも1024ビットをバッファリングする)。いくつかの実施例では、第1マルチプレクサ(Multiplextor、MUXとも称する)がデータメモリアレイとビット線検出回路の間に配置される。第1マルチプレクサの制御信号は、
図2のBLEN1
<i>信号又は
図3のイネーブル信号(enable signal)306である。また、いくつかの実施例では、第2マルチプレクサ(MUX)がビット線検出回路とセンスアンプの間に配置される。第2マルチプレクサの制御信号は
図2のBLEN2
<j>信号である。当該1MBのコンピューティングメモリの事例では、第1マルチプレクサ(MUX)が4対1で構成されている。即ち、4本のビット線ごとに1つのビット線検出回路が接続されている。また、第2マルチプレクサ(MUX)は16対1で構成されている。即ち、16個のビット線検出回路ごとに1つのセンスアンプが接続されている。
【0017】
いくつかの実施例において、ビット線とビット線検出回路との電気接続(BLEN1<i>信号)、及びビット線検出回路とセンスアンプとの電気接続(BLEN2<j>信号)は、コンピューティングメモリが受信するビットアドレスに基づき決定される。いくつかの実施例において、選択されたワード線上の複数のビット線、及びそれに対応するビットセルは、同一のアクセス動作においてアクセスされる。いくつかの実施例において、選択されたビットセル及びそれに対応するビット線検出回路は電流経路を形成して、ビット線電圧を生成する。上記のビット線電圧は、ビットセルの状態(即ち、記憶されているデータ)に対応する。
【0018】
上記の事例で説明したコンピューティングメモリは、特定のメモリアレイの大きさ及び素子(例えば、ビット線検出回路、センスアンプ、データバッファ、メモリアレイ)数を有しているが、このようなアレイの大きさ及び素子数は一例にすぎない。本発明で開示するコンピューティングメモリは、任意の大きさのメモリアレイ及び任意の数の素子を有し得る。例えば、上述したコンピューティングメモリは、複数のメモリアレイや、より多くの又は少ない対応するビット線検出回路や、より多くの又は少ないセンスアンプや、より多くの又は少ないアレイアクセスデコーダ(例えば、ワード線デコーダ、decoder)や、より多くの又は少ないデータバッファ記憶領域を含み得る。また、別の事例として、いくつかの実施例では、各ビット線検出回路が1本のビット線に対応している。よって、こうした実施例では、ビット線とそれに対応するビット線検出回路との間にMUXを配置する必要はない。また、別の事例として、いくつかの実施例では、各センスアンプが1つのビット線検出回路に対応している。よって、こうした実施例では、ビット線検出回路とそれに対応するセンスアンプとの間にMUXを配置する必要はない。
【0019】
いくつかの実施例では、上記で述べたように、1つのセンスアンプが複数のビット線に対応している(例えば、複数のビット線検出回路が同一のセンスアンプに電気的に接続されている)。そのため、1つの読み書きサイクル内で複数のビット線にアクセス可能であり、読み書き速度が上昇する。上記の読み書きサイクルは、1つの読み書き命令で実行される回路動作に対応している。当該読み書き命令は、中央処理装置(CPU)、グラフィックスプロセッサ(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、及びその他の集積回路(IC)といった主制御チップから発せられる。読み書きサイクルの完了後に、メモリ回路は別の命令を受信可能となる。例えば、いくつかの実施例において、読み書きサイクルには、次の動作の一部が少なくとも含まれる。即ち、主制御チップから読み取り命令及びビットアドレス(command and address C&A)を受信する。次に、C&Aをデコードし、対応するバンク(bank)又はアレイを選択する。また、対応するワード線デコーダを起動し、対応するワード線を選択する。続いて、読み取り回路を起動してビットセルからデータをフェッチする。また、データをセンスアンプからメモリインターフェースへ伝送し、主制御チップに伝送する。同一の読み書きサイクル内で、コンピューティングメモリがビット線群の複数のビット線に対応するビットセルへのアクセスを完了する方法については以下で詳述する。
【0020】
上記のビット線検出回路はセンスアンプに電気的に接続されており、且つ、ここで開示するコンピューティングメモリの利点についてセンスアンプを用いて説明するが、前記センスアンプは限定を意図する用語ではなく、ビット線電圧を受け付けてデータ出力を発生可能な任意の回路又はハードウェアを示し得る。
【0021】
本発明で開示するコンピューティングメモリの利点の一例として、各センスアンプが同一の読み書きサイクル内で1本を超えるビット線上の線を検出することが含まれる。これに対し、従来のメモリ回路内のセンスアンプは、同一の読み書きサイクル内で1本のビット線上のデータしか検出できない。例えば、各センスアンプは複数のビット線検出回路に電気的に接続可能である。そのため、複数のビット線は、同時に電流経路を形成して、複数のデータ位置に対応するビット線電圧を同時に生成可能である。また、これに伴い、センスアンプは、これら複数のビット線電圧を論理電圧まで迅速に増幅することで、データ出力を形成可能である。これにより、単位データ量の検出に要する時間が短縮される。
【0022】
同一の読み書きサイクルのメモリと比較して、本発明で開示するコンピューティングメモリの利点の1つは、4~32倍超の帯域幅を有することである。これにより、MRAMに類似したメモリ技術をAIやニューラルネットワーク及び機械学習の演算に応用可能となる。例えば、1MBのMRAMの場合、本発明で開示するコンピューティングメモリの出力帯域幅は7GB/sを超え得る。MRAMの出力帯域幅を向上させることで、例えば、LPDDR4又はLPDDR5のMRAMのような高速メモリインターフェースを採用し、例えばtRCDのようなJEDEC標準タイミング規格を満たすことが可能となる。これにより、データページのサイズを低下させることも、消費電力を増加させることも、メモリの密度を減少させることも、製造コストを増加させることも不要となる。これに対し、従来のメモリ回路を使用する場合には、データページを4倍減少させてようやくJEDEC標準タイミング規格の10分の1を達成可能である。
【0023】
いくつかの実施例において、総容量128MBのMRAMチップ内の全てのメモリアレイは、いずれも本発明で開示するコンピューティングメモリを使用し、900GB/sの総帯域幅を達成可能である。これは、既知の最も高速のDRAMインターフェース(例えば、高帯域幅のメモリ又はHBM3)よりも高い。高速動作が可能なことから、開示するコンピューティングメモリは、性能要求をより容易に満たして電力消費を減少させる。且つ、本明細書で述べるように、コンピューティングメモリは、異なる動作モードに設定されることで、いっそう効率的なデータページ、行データへのアクセス動作が可能となる。
【0024】
いくつかの実施例では、ビット線検出回路104を配置することで、これに電気的に接続されるビット線を検出可能とする(例えば、BLEN1<i>信号は、ビット線群からいずれかのビット線を選択してビット線検出回路に電気的に接続する)。例えば、ビット線検出回路104は、メモリのビットセルの状態(例えば、電圧、電流)に対応する信号を検出、キャプチャ又は生成するよう構成される。いくつかの実施例において、ビット線検出回路104は、複数のビット線に電気的に結合しており、マルチプレクサ(MUX)を通じていずれかを選択して電気的に接続される。例えば、前記2048本のワード線及び4096本のビット線からなるメモリの事例では、受信したアドレス信号に基づいて、マルチプレクサがビット線検出回路104を選択的に4本のビット線のいずれかに電気的に接続する。
【0025】
例えば、7番目のワード線及び各ビット線群内の3番目のビット線に位置するビットセルにアクセスしたい場合、ビット線検出回路104は、第1マルチプレクサを通じて3番目のビット線に電気的に接続される。そして、発生した電気信号が対応するセンスアンプに伝送されて、このビットセルの状態に対応するデータ信号が検出、キャプチャ又は生成される。
【0026】
このビットセルに記憶されているデータが論理「1」又は高抵抗状態の場合、ビット線検出回路104で生成されたビット線電圧が安定したあと、基準電圧よりも大きな電圧が生成される。反対に、このビットセルに記憶されているデータが論理「0」又は低抵抗状態の場合、ビット線電圧が安定したあと、基準電圧よりも小さな電圧が生成される。一般的には、ワード線を選択してアクセスし、且つ選択されたビット線にビット線検出回路104が接続されたあと、上記で述べたビット線電圧の生成が開始される。
【0027】
いくつかの実施例において、MRAMビットセルの論理「1」又は高抵抗状態に対応して、安定化後のビット線電圧は0.3~0.4Vの間となる。一方、MRAMビットセルの論理「0」又は低抵抗状態に対応して、安定化後のビット線電圧は0.2~0.35Vの間となる。いくつかの実施例において、読み取り動作時にMRAMビットセルの論理状態の違いに応じてビット線上に発生する電圧は、ビットセルのトンネル磁気抵抗及びビットセルを通過する電流により決定される。例えば、高抵抗状態及び低抵抗状態に応じてビット線上に発生する電圧の差は、コモンモード電圧の1/20~1/5となる。本発明に違反しない範囲において、いくつかの実施例では、MRAMビットセルの論理「1」又は高抵抗状態に対応するビット線電圧が、論理「0」又は低抵抗状態に対応するビット線電圧よりも低くなり得る。
【0028】
いくつかの実施例において、ビットセルの何らかの特徴は、記憶されている論理データを表す。例えば、このような特徴はビットセルの抵抗とすることができ、抵抗値の違いによって異なる論理データが示される。また、このような特徴はビットセル内部の電荷又は誘電体の分極状態とすることができ、電荷の違い又は分極状態の違いによって異なる論理データが示される。
【0029】
いくつかの実施例において、ビット線検出回路104は、ビットデータに対応するビット線電圧をキャプチャするためのサンプルアンドホールド回路(Sample-And-Hold)を含む。以下に、
図4を参照して、ビット線検出回路104の実施例で使用するサンプルアンドホールド回路について詳細に説明する。いくつかの実施例において、サンプルアンドホールド回路は、更に、信号入力スイッチ、サンプリングキャパシタ(sampling capacitor)及び信号出力スイッチを含む。いくつかの実施例において、当該サンプルアンドホールド回路には、安定性を増加させ、且つ無駄なノイズ電圧を減少させるために、電荷注入ノイズを低減させる回路及び信号バッファアンプが更に含まれている。いくつかの実施例において、ビット線検出回路にはオフセット補正回路を追加する必要がないため、ビット線検出回路の面積を減少させられる。いくつかの実施例において、第1ビット線検出回路104がビット線電圧を生成するとの同時に、第2ビット線検出回路104が別のビット線電圧を生成してもよい。いくつかの実施例において、生成されたビット線電圧はサンプルアンドホールド回路に一時的に保持される。複数のビット線検出回路104に結合されるセンスアンプは、生成されたビット線電圧を同一の読み書きサイクル内で順に検出して増幅し、データ出力を発生させる。
【0030】
上記には、同一の読み書きサイクル内で、検出及び増幅の前にビット線電圧を保持することで、1つのセンスアンプで少なくとも1つのビット線上のデータ信号を増幅可能となるため、読み書き速度が上昇するとの利点がある。例えば、同一の読み書きサイクル内で複数のビット線電圧を並行して生成可能なため、第2ビット線のデータの読み取りに要する時間が減少する。
【0031】
ここでは、特定の事例を用いてビット線検出回路の動作を説明したが、本発明に違反しない範囲において、ビット線検出回路は、ビットセルの状態に対応する電気信号をその他の方法で検出、キャプチャ又は生成してもよい。
【0032】
いくつかの実施例において、基準信号発生器106は、ビットセルの異なる論理状態に対応するビット線電圧を区別するための基準信号を発生させる。いくつかの実施例において、当該基準信号発生器で発生する基準電圧は、ビットセルの異なる状態(例えば、論理「1」及び論理「0」)に対応するビット線電圧の間となる。例えば、ビットセル内のデータが論理「1」の場合、生成される安定化したビット線電圧は高い電圧となる。一方、ビットセル内のデータが論理「0」の場合、生成される安定化したビット線電圧は低い電圧となる。基準信号発生器で発生する基準電圧は、上記の高い電圧と低い電圧の間となる。ビット線電圧と基準電圧を比較して増幅することで、ビットセル内に記憶されているデータを取得可能である。
【0033】
いくつかの実施例において、基準信号発生器106は、リファレンスセルを使用して基準信号を発生させる。いくつかの実施例において、当該リファレンスセルを設置することで発生する信号の値は、ビットセルの異なる状態(例えば、論理「1」及び論理「0」)に対応するビット信号の間となる。例えば、ビットセルの異なる状態が異なる有効抵抗に対応している場合、リファレンスセルに対応する有効抵抗は上記の異なる有効抵抗の間となる。いくつかの実施例において、基準信号発生器106は、複数のビットセルの信号を平均して基準信号を生成する。平均される複数の信号は、同数の異なる状態にあるビットセルから取得する。いくつかの実施例において、基準信号発生器106は、ビット線検出回路104及びリファレンスセル(通常のビットセルと置換)を使用して基準信号を発生させる。
【0034】
いくつかの実施例において、読み取りサイクル内で、センスアンプは自身に電気的に結合されている複数のビット線を読み取る。上記の基準信号発生器106で発生する基準信号は、複数のビット線信号を比較するために用いられる。
【0035】
いくつかの実施例において、基準信号は発生後に保持される(例えば、サンプルアンドホールド回路を使用する)ため、メモリは基準信号発生器106の電源をオフにして消費電力を低下させる。即ち、リファレンスセルを通過して基準信号を発生させる電流をオフにする。いくつかの実施例において、基準信号はキャパシタに保持される。例えば、当該キャパシタは基準信号を収集して保持するため、センスアンプは動作期間中に無駄な消費電力を必要としない。例えば、同一の読み取りサイクル内で、センスアンプが複数のビットセルの動作を検出する過程で、基準信号発生器106をオフにするとともに、保持した基準電圧を共用することで、基準電圧の発生に必要な消費電力を低減させられる。上記の事例のように、本発明で開示する基準信号発生方法は、既知の方法と比較して、同一のデータを出力する場合に4倍以上の消費電力を低減させられる。いくつかの実施例において、基準信号をサンプリング及び保持する回路には、保持する基準電圧の正確さを向上させるために、電荷注入ノイズを減少させる回路が含まれている。
【0036】
ここで開示するコンピューティングメモリでは、基準信号発生器の事例について説明したが、本発明に違反しない範囲において、開示するコンピューティングメモリは複数の基準信号発生器を含み得る。例えば、製造プロセスの違いを良好に追跡するために、第1基準信号発生器が第1組のセンスアンプに電気的に接続されて、基準信号を第1組のセンスアンプに提供し、第2基準信号発生器が第2組のセンスアンプ群に電気的に接続されて、基準信号を当該第2組のセンスアンプに提供する、等とする。
【0037】
いくつかの実施例において、センスアンプ108は、入力信号を増幅し、増幅した信号を出力するために用いられる(例えば、データ出力218、データ出力312、データ出力508)。いくつかの実施例において、入力信号は、ビット線電圧(例えば、ビット線検出回路104からのビット線電圧)と、基準電圧(例えば、基準信号発生器106からの基準電圧)との電圧差であり、出力信号は、増幅後のビット線信号と基準信号との電圧差である。いくつかの実施例において、当該出力信号はビットセルの状態(例えば、論理「1」、論理「0」)をよりしっかりと表す。ビット線電圧と比較して、センスアンプ108から出力される電圧は基準電圧との差が大きい。
【0038】
いくつかの実施例において、センスアンプ108は、複数のビット線検出回路104及びマルチプレクサ(MUX)に対応している。このマルチプレクサは、選択したビット線検出回路からビット線電圧を検出するために、選択した1つのビット線検出回路(例えば、BLEN2<j>信号を使用してビット線検出回路を選択する)をセンスアンプに電気的に接続する。例えば、2048本のワード線×4096本のビット線を有する1MBのコンピューティングメモリの事例では、各センスアンプ108を選択的に16個のビット線検出回路104のいずれかに電気的に接続可能である(こうすることで、センスアンプは、1つの読み取りサイクル内の異なる時間に、16個のビット線検出回路全てからの各ビット線電圧を検出して増幅し得る)。
【0039】
このような事例の利点としては、マルチプレクサによってビット線検出回路をセンスアンプに電気的に接続することで、同一の読み取りサイクル内でセンスアンプに対応する複数のビット線を検出可能となるため、読み取り動作を加速させられる。
【0040】
いくつかの実施例において、データバッファ110は、センスアンプからのデータ出力(例えば、データ出力218、データ出力312、データ出力508)を受信して、当該データを格納するとともに、当該データを出力(例えば、主制御チップへ出力、メモリインターフェースへ出力)するよう構成される。
【0041】
いくつかの実施例において、データバッファ110は、センスアンプの数(例えば
図2に記載)とセンスアンプに対応するビット線群の数(例えば
図2に記載)との積の倍数の大きさとなるよう構成される。例えば、1MBのメモリの事例において、データバッファ110は、1つの読み取りサイクル内で256ビットの倍数を格納する。いくつかの実施例において、データバッファ110はタグレジスタ(tag register)(例えば、タグレジスタ216)に接続される。当該タグレジスタ内のタグビットは、データ要求元(例えば、主制御チップ、プロセッサ、システム、メモリコントローラ)に対し、データバッファ110がデータ要求元へデータを出力する準備を完了したか否かを表示可能である。
【0042】
いくつかの実施例において、前記コンピューティングメモリは、データアドレスを受信して、当該アドレスがデータバッファ110内に存在するか否かを判定する。そして、存在する場合、データバッファ110は当該データアドレスに対応するデータをデータ要求元(例えば、主制御チップ、プロセッサ、システム、メモリコントローラ)に送信する。
【0043】
いくつかの実施例において、データバッファ100は1群のラッチ(latch)を含む。センスアンプのデータ出力を格納する方式として、データをこれらラッチ内に保持する。当該データバッファ110は、複数のビットデータを格納するとの利点を有するため、より素早くデータ要求に応答可能となる。
【0044】
いくつかの実施例において、センスアンプがデータ出力を完了すると、データバッファ110は当該データ出力を格納する。且つ、当該コンピューティングメモリが1つの読み取りサイクルの完了前(即ち、全てのビット線検出回路が電圧検出動作を完了しているわけではない)にデータ要求を受信すると、データバッファ110は存在するデータを先行して出力可能である。このような「先行モード」では、データ要求元に所望のデータをいっそう迅速に取得させられる。詳細については以下に述べる。
【0045】
いくつかの実施例において、データバッファの総容量(例えば、データバッファ110又はデータバッファ210が格納可能な全ビット数)は、センスアンプの数(例えば
図2に記載)と、センスアンプに電気的に結合されるカラムスライス(column slices)数(例えば
図2に記載)との積の倍数である。例えば、前記1MBのコンピューティングメモリの事例では、64個のセンスアンプを有しており(j=64)、各センスアンプが16個のビット線検出回路に電気的に結合されている(j=16)。よって、この1MBのコンピューティングメモリのデータバッファの総容量は、64×16=1024ビットの倍数となる。当該1MBの事例では、読み取るパイプラインの深さ(pipeline depth)が16の場合、即ち、読み取りサイクル内で16個のカラムスライス内におけるいずれかのビット線のデータを取得する場合、1つの読み取りサイクル内で各センスアンプは16ビットを出力する。つまり、各読み取りサイクル内で、前記1MBのコンピューティングメモリにおける64個のセンスアンプは全部で1024ビットを出力する。そのため、このデータバッファは、取得した全てのデータを格納するために、少なくとも1024ビットの総容量を有する必要がある。
【0046】
読み取るパイプラインの深さは、ビット線群に電気的に接続されている多数のビット線を循環することで増加させられる。また、別の事例として、同一の1MBのメモリにおいて、読み取るパイプラインの深さが16の倍数である場合には、1つの読み取りサイクルにおいて各ビット線群内の複数のビット線にアクセスする。こうすることで、1つの読み取りサイクル内で、各センスアンプが16ビットの倍数を出力し、前記1MBのコンピューティングメモリにおける64個のセンスアンプが1024ビットの倍数を出力する。このことは、1つの読み取りサイクル内でアクセスした全てのデータを格納するために、データバッファが少なくとも1024ビットを超える大きさを有さねばならないことを意味する。
【0047】
いくつかの実施例において、データバッファはラッチでデータを格納する。ラッチの物理的サイズはビット線の幅よりも大きい。そのため、いくつかの実施例において、データバッファ110又はデータバッファ210の物理的面積を最適化するために、データバッファの容量はビット線の総数よりも小さい容量を格納するよう構成される。例えば、前記1MBのメモリの事例では、メモリの面積を最適化するために、データバッファの容量は4096ビット未満に構成され得る(こうすることで、データバッファの幅は当該1MBのメモリにおける4096本のビット線の幅よりも小さくなる)。いくつかの実施例において、データバッファの容量はデータページ長パラメータに関連する(コンピューティングメモリ1300の説明を参照)。いくつかの事例において、データページのサイズは4~16Kビットである。また、別のいくつかの事例において、メモリは複数の小さなMRAMアレイで1つのデータページを形成する。例えば、4~16個の1MBのアレイが、同期するデータバッファを使用してJEDEC標準に適合するデータページ長を構成可能である。
【0048】
例えば、上記の特定の事例において、1MBのメモリは、2048本のワード線×4096本のビット線からなるアレイ(即ち、8192Kビット)である。読み取りサイクルの一例として、2048本のワード線の1つがデコード及び選択されると、センスアンプに接続されている第1組のビット線検出回路(例えば、ビット線検出回路104、ビット線検出回路204)がいずれかのビット線(iで示す)との接続を開始し、電流を流してビット線電圧を生成する。上記の特定の事例において、64個のビット線検出回路は同時に動作する。短い遅延の後(安定化したビット線電圧の生成に必要な時間の一部であり、例えば1/16、
図3のtCLK)、第2組の64個のビット線検出回路が上記に対応するビット線に接続され、電流を流してビット線電圧を生成する。このとき、第1組のビット線検出回路はまだ安定化したビット線電圧の生成を完了していない。同様にして、全j組のビット線検出回路全てをオンにする。第1組のビット線電圧は、安定値に達したあとセンスアンプに伝送される。また、短い遅延の後(例えば、安定化したビット線電圧の生成に必要な時間の1/16、
図3のtCLK、或いはセンスアンプの増幅に必要な時間)、センスアンプは増幅した信号をデータバッファに伝送する。また、これと同時に、第2組のビット線電圧の生成が完了し、増幅動作を完了したセンスアンプに伝送されて増幅が行われる。同様にして、全j個のカラムスライス内の全i本のビット線におけるデータ情報を含む電圧信号全ての増幅を完了し、合計で64×16=1024のデータ信号を生成してデータバッファに格納する。
【0049】
いくつかの実施例において、予測される読み取り時間は次の通りである。ワード線のデコード及びワード線の選択に必要な時間はt0と称することができ、約1~2nsとなる。また、ビット線検出回路がビット線電圧の生成に必要な時間はt1(例えば、ビット線のイネーブル信号306のパルス幅)と称することができ、MRAMのt1は約10~20nsとなる。また、センスアンプによるビット線電圧の増幅及びデータバッファのラッチに必要な時間はt2と称することができ、約1~2nsとなる。よって、第1組のビット線検出回路に対応する第1データセットは、読み取りサイクルの開始から約t0+t1+t2時間後にデータバッファに伝送可能となる。また、上記の事例で示したように、第2組のビット線検出回路が(1/16)t1時間の遅延後に動作を開始する場合、第2組の64ビットのデータは、t0+t1+t2+t1/16のタイミングでデータバッファに到達し得る。同様にして、第N組の64ビットのデータは、t0+t1+t2+t1*(N-1)/16のタイミングでデータバッファに到達し得る。上記の事例のように、N=j=16の場合には、N*64=1024ビットのデータを読み取るために、合計でt0+t1+t2+t1*(N-1)/16=t0+2*t1+t2の時間が必要となり、約21.4~42.8nsを要する。これに対し、周知のメモリの場合には、N*(t0+t1+t2)、又は約192~384nsの時間をかけなければ同じ数量のデータの読み取り動作を完了できない。換言すれば、本発明で開示するコンピューティングメモリ及び動作方法によれば、(N-1)*(t0+t2+15/16*t1)の時間を節約可能である。上記の事例で示したように、周知のメモリが1024ビット/192ns、約0.67GB/sを達成する条件で、本発明が開示するコンピューティングメモリであれば、1024ビット/21.4ns、約5.99GB/sの読み取り速度を達成可能である。
【0050】
いくつかの実施例では、帯域幅を更に向上させるために、第1組(i)のビット線電圧がセンスアンプに到達したあと、対応する各前記ビット線検出回路が選択的に第2組のビット線(i+1)に接続される。こうすることで、パイプラインの深さを増加させられる。全4096本の物理的ビット線を読み取る場合、周知のメモリでは4倍の時間が必要となり(例えば、4×192ns=768ns)、且つ、同一の帯域幅0.67GB/sに対応する。これに対し、本発明で開示するコンピューティングメモリはわずか51.4nsしか必要とせず、対応するデータ処理量は9.97GB/sとなる。128MBのMRAMチップの場合を例示すると、128個の前記1MBのアレイが上記で開示したコンピューティングメモリの回路を使用し、且つ、上記で開示したメモリの動作方法で並行動作する場合、TB/sの帯域幅を達成可能である。
【0051】
いくつかの周知の読み取り動作では、読み取り期間に全列のビットセルデータを更新しなければ当該データが失われてしまう。しかし、この行アクティブ化動作(row activation)は、汎用のCPU又はGPUによる簡単な読み取り及び書き込み命令の発信を明らかに複雑化させるため、性能が低下する。周知の方法では、複雑なメモリコントローラを使用することで、CPU/GPUが発信した読み取り/書き込み命令をストリーム命令に並べ替え、アクティブ行(activated row)の使用率を向上させている。また、いくつかの周知のメモリ動作では、全行のビットセルに一度にアクセスすることで速度が低下し、消費電力が増加する。また、いくつかのチップにおけるメモリの周知の読み取り動作では、インターフェースに帯域幅の制約がないことから、一度に全行のビットセルにアクセスする必要はない。
【0052】
本発明で開示するメモリ及び方法は、全行のビットセル又は一部に高速アクセスするとの利点を有する。例えば、いくつかのニューラルネットワークの演算では、大量の静的データを迅速に読み取る必要がある。当該静的データには既知のシーケンスが含まれている。また、汎用演算においても、ランダムアドレスの小さなセルデータに迅速にアクセスし得る。よって、本発明で開示するメモリ及び方法は、異なる演算タスクを同時に達成するとの利点を有する。
【0053】
図2は、一実施例に基づき記載したメモリ200の事例である。いくつかの実施例において、当該コンピューティングメモリ200は、ビット線BL、ビット線検出回路204、基準信号発生器206、センスアンプ208、データバッファ210及びタグレジスタ216を含む。いくつかの実施例において、コンピューティングメモリ200の素子はコンピューティングメモリ100の素子に対応している。例えば、ビット線BLはメモリアレイ102の一部であり、基準信号発生器206は基準信号発生器106に対応している。また、センスアンプ208はセンスアンプ108に対応しており、データバッファ210はデータバッファ110に対応している。いくつかの実施例において、タグレジスタ216はデータバッファ110に含まれている。上述したように、コンピューティングメモリ200はk個のセンスアンプを含む。各センスアンプはj個のビット線群及びj個のビット線検出回路204に対応しており、各ビット線群はi本のビット線に対応している。代表的な1MBのコンピューティングメモリには、2048本のワード線×4096本のビット線が含まれている。当該4096本のビット線は、それぞれ64個のセンスアンプ(即ち、k=64)に属する。各センスアンプは、第1MUX及び第2MUXを使用して、選択的に64本のビット線のいずれかに電気的に接続される。そのため、k=64、i=4及びj=16は、各ビット線検出回路204が選択的に4本のビット線のいずれかに電気的に接続されること、及び、各センスアンプ208が選択的に16個のビット線検出回路204のいずれかに電気的に接続されることを表している。いくつかの実施例では、同一の読み取りサイクル期間にj×k個のデータにアクセスする。つまり、対応する各センスアンプは、各ビット線検出回路に接続されているビット線を検出する。いくつかの実施例において、1MBのコンピューティングメモリの事例では、jが16であり、且つセンスアンプの数が64である。そのため、同一の読み取りサイクル期間に、代表的な当該コンピューティングメモリは1024ビットのデータにアクセス可能である。いくつかの実施例では、1つの読み書きサイクル内において、同一のセンスアンプがビット線群の複数のビット線を検出する。例えば、1MBのコンピューティングメモリの事例では、1つの読み取りサイクル内において、当該代表的なコンピューティングメモリが1024ビットの倍数のデータにアクセス可能である。
【0054】
いくつかの実施例では、センスイネーブル信号(例えば、SAEN)が各センスアンプ208に電気的に接続されることで、当該センスアンプがオン又はオフされる。例えば、当該センスアンプイネーブル信号がセンスアンプをオンにすることで、電流がアンプに流れ、信号が生成されて出力される。いくつかの実施例では、対応するセンスアンプがオンになると、各BLEN2<j>信号がオンとなる。また、対応するセンスアンプが信号の増幅を完了し、データが出力されると、各BLEN2<j>信号はオフとなる。こうすることで、各BLEN2<j>信号は、いずれかのビット線検出回路を選択してセンスアンプとの電気的接続を形成する。
【0055】
いくつかの実施例において、センスアンプに対する第1ビット線検出回路の選択的な電気接続と、第2ビット線検出回路の選択的な電気接続との間の遅延(例えば、
図3のtCLK 314)は、パルス幅よりも小さい。当該パルス幅は、センスアンプが検出増幅動作を1回完了する時間に対応しており、センスイネーブル信号(例えば、SAEN)の受信、ビット線検出回路からの信号の受信、信号の増幅及び出力、センスアンプ状態の再構成等を含む。いくつかの実施例において、センスイネーブル信号(例えば、SAEN)は、関連する全てのビット線検出回路から伝送されるビット線電圧信号の検出増幅動作が完了するまでオン状態(例えば、論理「1」)を維持する。こうして、センスアンプをオン状態に維持することで、動作速度が上昇するとともに、オン/オフ動作を繰り返すことに伴う電力消費が回避される。
【0056】
周知のメモリと比較して、本発明で開示するコンピューティングメモリは、選択的に複数のビット線検出回路を同一のセンスアンプに電気的に接続する。これにより、1つの読み書きサイクル内で複数のビット線上のデータにアクセス可能となるため、読み取り動作が加速する。
【0057】
いくつかの実施例では、リファレンスイネーブル信号(例えば、REFEN)が基準信号発生器206を制御する。いくつかの実施例では、リファレンスイネーブル信号が基準信号発生器206を起動して基準信号(例えば、基準電圧)を発生させる。また、基準信号をセンスアンプ208の入力端子に伝送して、ビット線電圧との差異信号の生成に用いる。いくつかの実施例では、基準信号の発生後に、リファレンスイネーブル信号が基準信号発生器206内の基準信号を発生させる電流をオフにして、発生した基準信号を基準信号発生器206に保持させる。
【0058】
いくつかの実施例において、データバッファ210は、タグレジスタ216に接続されるか、タグレジスタ216を含む。タグレジスタはタグビットを設定する。タグビットのデータは、データ要求元(例えば、主制御チップ、プロセッサ、システム、メモリコントローラ)に対し、データバッファ210がデータを出力できるか否かを通知可能である。例えば、センスアンプからの1組のデータがデータバッファに格納され、これに応じて、タグレジスタ216内の対応するビットが当該組のデータのデータバッファアドレスを「準備完了状態」にセットする。
【0059】
いくつかの実施例において、データバッファは、タグレジスタ216内のビットに基づいて、要求されたデータが「準備完了状態」であるか否か、及び、要求元にデータを出力するか否かを判定する。いくつかの実施例において、タグレジスタ216は、データバッファアドレスに対応するビットを設定することで当該アドレスのデータ状態をセットする。いくつかの実施例において、データの読み取り動作が完了していない場合、タグレジスタ216内の対応するビットは、当該組のデータのデータバッファアドレスを「準備未了状態」にセットする。
【0060】
いくつかの実施例では、コンピューティングメモリが受信した要求データが、データバッファ内の「準備完了状態」のデータではない。いくつかの実施例では、コンピューティングメモリが「先行モード」に設定されている。この「先行モード」において、コンピューティングメモリは、受信した要求データが「準備完了状態」であるか否かに基づいて、対応するビット線検出回路の動作順を並び変えることで、要求されたデータを優先的に読み取ってシステム性能を向上させる。いくつかの実施例において、当該並び変え動作は、タグレジスタ216内にマークされているデータ状態に基づき判定される。
【0061】
図3は、一実施例に基づき記載したコンピューティングメモリの代表的なタイミング
図300である。いくつかの実施例において、タイミング
図300の波形は、コンピューティングメモリ100又はコンピューティングメモリ200内の素子の動作信号に対応している。いくつかの実施例において、タイミング
図300の波形は1つのセンスアンプの波形に対応しているが、コンピューティングメモリのその他のセンスアンプも類似の波形を有している。いくつかの実施例において、タイミング
図300の波形は1つの読み取りサイクルの信号を示している。いくつかの実施例において、タイミング
図300は、ワード線信号302、リファレンスイネーブル信号304、ビット線イネーブル信号306、センスアンプイネーブル信号308、電圧310及びデータ信号312を含む。
【0062】
いくつかの実施例において、ワード線信号302は特定のワード線のアクセスに対応している。例えば、前記1MBのコンピューティングメモリの事例において、ワード線信号302は、コンピューティングメモリが受信及びデコードしたアドレスに基づいて、メモリ内の2048本のワード線のうちいずれかのワード線のドライバが出力する波形である。いくつかの実施例において、ワード線アドレスはデコード前にまずラッチに保持される。そして、特定のワード線が起動する(例えば、特定のワード線信号が高電圧になる)と、これに接続されている各ビットセル内のアクセストランジスタがいずれもオンとなる。いくつかの実施例では、性能を向上させるために、コンピューティングメモリは供給電圧よりも高い電圧でワード線を駆動させる。いくつかの実施例では、特定のワード線がアクティブとなったあと、コンピューティングメモリが当該特定のワード線に対応する複数のビット線を一度に起動する。既知のメモリと比較して、本発明で開示するコンピューティングメモリは、ワード線デコーダ又はワード線ドライバの電力消費を低減させられる。
【0063】
いくつかの実施例において、リファレンスイネーブル信号304は、コンピューティングメモリの基準信号発生器(例えば、基準信号発生器106、基準信号発生器206)を制御する。例えば、リファレンスイネーブル信号の高電圧状態によって、基準信号発生器に基準信号(例えば、基準電圧)を発生させる。また、リファレンスイネーブル信号の低電圧状態によって基準信号発生器はオフとなる。発生した基準信号は、センスアンプ(例えば、センスアンプ108、センスアンプ208)の入力端子に伝送されて、ビット線電圧との差異生成に用いられる。いくつかの実施例では、基準信号の発生後に、サンプルアンドホールド回路を使用して基準信号を保持する。いくつかの実施例では、基準信号の発生後に、リファレンスイネーブル信号が基準信号発生器をオフにし、発生した基準信号を基準信号発生器に保持させる。例えば、リファレンスイネーブル信号のパルス幅は、基準電圧(例えば、基準電圧Vref 310)が定電圧となるまでに必要な時間よりも大きい。
【0064】
いくつかの実施例において、ビット線イネーブル信号306は、特定のビット線を選択して対応するビット線検出回路(
図2のBLEN1
<i>信号を参照)に接続する。
【0065】
いくつかの実施例において、各センスアンプに対応するビット線検出回路の数はjであり、1つの読み取りサイクル内で、本発明が開示するコンピューティングメモリはj個のビット線電圧信号の読み取りを完了可能である。例えば、前記1MBのコンピューティングメモリの事例において、各ビット線検出回路は4本のビット線に対応しており、且つ、各センスアンプは16個のビット線検出回路に対応している。ビット線イネーブル信号306は、16個のビット線群における選択されたi番目のビット線に対応している。例えば、第0時間には第0ビット線検出回路のi番目のビット線に対応し、第1時間には第1ビット線検出回路のi番目に対応し、第2パルスには第2ビット線検出回路のi番目のビット線に対応する、等となる。
【0066】
いくつかの実施例では、ワード線信号302がワード線をアクティブにし、且つtWLだけ遅延したあと、ビット線イネーブル信号306がビット線をアクティブにする。いくつかの実施例において、遅延tWLとは、ワード線信号が安定値に達するのに必要な時間である。いくつかの実施例において、遅延tWLとは、一部のビットアドレスがラッチに対応し、及び/又は、ビット線をデコードして選択するのに必要な時間である。いくつかの実施例では、
図3内の垂直の点線で示すように、ビット線イネーブル信号に応答して、ビット線がビット線検出回路に選択的に接続され(例えば、対応するビット線イネーブル信号306が上昇する)、ビット線電圧(例えば、電圧310のビット線電圧)が成長を開始する。いくつかの実施例において、ビット線イネーブル信号306の幅は、ビット線電圧が安定値に達するのに必要な時間である。例えば、当該時間は、ビット線電圧(例えば、上記の電圧310、V
1又はV
0)が安定値まで成長するのに必要な時間である。いくつかの実施例において、ビット線イネーブル信号306の幅は10~15ナノ秒(ns)である。
【0067】
いくつかの実施例では、
図3に示すように、ワード線をアクティブにする(例えば、ワード線信号302が高電圧になる)のと同時に、各ビット線イネーブル信号306が順にi番目のビット線を有効にする。つまり、各ビット線イネーブル信号306は、i番目のビット線をビット線検出回路に電気的に接続する。これにより、ビット線電圧が成長可能となり、センスアンプでの検出に用いられる。本発明が開示するコンピューティングメモリは、ビット線イネーブル信号を制御することで、1つの読み書きサイクル内で複数のビット線データを読み取るとの利点を有する。
【0068】
図示のビット線イネーブル信号306は段階的に動作しているが、ビット線検出回路をセンスアンプに電気的に接続する前に、ビット線電圧が安定値まで成長するための十分な時間を有するよう、ビット線イネーブル信号306は別の時間順序でビット線検出回路とビット線を接続してもよい。例えば、全てのビット線イネーブル信号306が、読み取りサイクルの開始時に同時にオンとなってもよい。
【0069】
いくつかの実施例では、1つの読み取りサイクル内で、ビット線にアクセスする順序を更新可能である(例えば、前記「先行モード」)。例えば、ビット線にアクセスする順序は、j=0,1,2,3等のビット線検出回路のいずれかのビット線に対応している。仮に、第0ビット線データを読み取る際に、第3ビット線データを受信した場合、コンピューティングメモリは後続のビット線の順序を並び変える。例えば、第1、第2ビット線データを読み取る前に、第3ビット線データを読み取ることでデータ要求を満たす。つまり、更新後のビット線アクセス順序は、j=第0、第3、第1及び第2等のビット線検出回路に関連するビット線データへのアクセスとなる。ビット線のアクセス順序を並び変えることで、要求されたデータをより迅速に提供可能となり、システム性能が向上する。
【0070】
いくつかの実施例において、センスアンプイネーブル信号308(即ち、
図2のSAEN)は、センスアンプ(例えば、センスアンプ108、センスアンプ208、センスアンプ500)に電気的に接続されて、センスアンプをオン又はオフにする。例えば、センスアンプイネーブル信号308は、センスアンプをオンにし、電流をアンプに流すことで、増幅後の出力(例えば、データ出力218、データ出力508)を生成する。
【0071】
いくつかの実施例において、各BLEN2
<j>(
図2参照。
図3には示していない)信号は、対応するセンスアンプの検出準備時にオンとなり、データ出力動作の完了時にオフとなる。こうすることで、選択したビット線検出回路を検出開始前にセンスアンプに電気的に接続可能とする。例えば、第1センスアンプイネーブルパルスは、第0ビット線検出回路を検出するビット線電圧に対応しており、第2センスアンプイネーブルパルスは、第1ビット線検出回路を検出するビット線電圧に対応している等とする。
【0072】
いくつかの実施例において、いずれかのビット線に対する第1ビット線検出回路の選択的な電気接続と、いずれかのビット線に対する第2ビット線検出回路の選択的な電気接続との間の遅延(例えば、tCLK 314)は、ビット線検出回路がいずれかのビット線に接続される際のパルス幅よりも小さい。当該パルス幅は、検出及びデータ出力の生成に必要な時間、センスアンプがオンとなるのに必要な時間、及びセンスアンプがオフになって次の入力準備を行うために必要な時間、センスイネーブル信号308(SAEN)のサイクル、tCLK 314に対応している。
【0073】
いくつかの実施例では、関連する全てのビット線電圧(点線で示す)の検出が完了するまで、センスイネーブル信号(例えば、SAEN)をオン状態(例えば、高電圧)に維持する。つまり、センスアンプは、オン状態を維持して、関連する各ビット線電圧を連続的に検出する。こうすることで、ビット線の検出が加速されるとの利点を有するとともに、SAEN信号の切り替えに関連する電力を低減させられる。いくつかの実施例において、tCLKは0.6nsであり、安定化したビット線電圧を生成するのに必要な時間よりも小さい。即ち、ビット線イネーブル信号のパルス幅10~20nsよりも小さい。この事例による利点は次の通りである。選択的に複数のビット線検出回路を同一のセンスアンプに電気的に接続し(毎回tCLKだけ遅延する)、1つの読み取りサイクル内で1つよりも多いビット線データにアクセス可能とすることで、読み取り動作が加速する。例えば、第0(j)ビット線検出回路の動作以降の各ビット線検出動作に対応して節約される時間は、少なくとも、(ビット線イネーブル信号のパルス幅-tCLK)となる。この利点については
図1で詳細に説明しているため、ここでは繰り返し述べない。
【0074】
いくつかの実施例において、
図3の電圧曲線310はビット線電圧の波形の事例を示している。当該ビット線電圧は、ビットセル及び基準電圧の事例に対応している。いくつかの実施例において、ビットセルの状態に対応するビット線電圧は、ビット線検出回路の出力電圧である。即ち、
図4のV
data、428、又は
図5の電圧VBL
<i>である。いくつかの実施例において、基準電圧は、基準信号発生器(例えば、基準信号発生器106、基準信号発生器206)の出力電圧である。例えば、ビットセルに記憶されているデータが論理「1」又は高抵抗の場合、ビット線電圧が安定したあと、基準電圧よりも高い電圧(例えば、V
1)が生成される。また、ビットセルに記憶されているデータが論理「0」又は低抵抗の場合、ビット線電圧が安定したあと、基準電圧よりも低い電圧(例えば、V
1)が生成される。対応するワード線及びビット線がアクセスされると、ビットセルは、対応するビット線を通じてビット線検出回路104に電気的に接続され、ビット線電圧の生成が開始される。安定化したビット線電圧は、メモリのビットセル(例えば、MRAMビットセル)の有効信号値(例えば、抵抗)によって決定される。当該有効信号値は、ビットセルのデータに対応している。例えば、同じ電流がビット線検出回路からビットセルに流れるため、ビットセルの状態が論理「1」又は高抵抗の場合、安定化したビット線電圧は高くなり、ビットセルの状態が論理「0」又は低抵抗の場合、安定化したビット線電圧は低くなる。いくつかの実施例において、ビット線検出回路が検出、キャプチャ又は生成する信号とビットセルデータは、本発明に違反しない範囲において異なる対応関係を有し得る。例えば、論理「1」は低い信号値に対応し、論理「0」は高い信号値に対応する。
【0075】
いくつかの実施例において、電圧Vrefは、基準信号発生器の出力波形(例えば、基準信号発生器106からの基準電圧、基準信号発生器206からの基準電圧)を示す。いくつかの実施例において、基準信号イネーブルハイパルス(例えば、リファレンスイネーブル信号304)は、基準信号発生器に基準電圧Vrefの生成を開始させる。例えば、基準電圧Vrefは、安定化した基準電圧となるまで徐々に変化する。いくつかの実施例で示されるように、基準電圧が発生すると、リファレンスイネーブル信号304は基準信号発生器を停止させる(例えば、リファレンスイネーブル信号304が低下する)。いくつかの実施例では、基準電圧及び第0ビット線電圧が安定値に達すると(2つ目の垂直の点線で示す)、センスイネーブルパルス(例えば、第1センスイネーブルパルス308の立ち上がりエッジ)は、センスアンプをオンにして読み取りサイクル内の1回目の増幅を実行する。いくつかの実施例において、基準電圧Vrefは、センスアンプが最後のビット線電圧の検出を完了するまで保持される(例えば、サンプリングキャパシタを使用する)。
【0076】
いくつかの実施例において、データ出力信号312はセンスアンプの出力波形を示す。アクセスされたビットセルの状態、及びそれに対応するビット線電圧値に基づいて、センスアンプはビットセルの状態に対応するデータ出力信号を出力する。例えば、アクセスされたビットセルの状態が論理「1」の場合にはデータ出力信号は高信号となり、アクセスされたビットセルの状態が論理「0」の場合にはデータ出力信号は低信号となる。いくつかの実施例において、隣り合うデータ出力間の遅延はtCLK 314となる。
【0077】
いくつかの実施例において、コンピューティングメモリが受信したデータ要求に応答する前に、データ出力信号312はデータバッファ(例えば、データバッファ110、データバッファ210)に伝送されて格納される。ここで示すデータ出力信号312の波形の事例は、高から低への変換と、低から高への変換を示しているが、データ出力信号312は2つを超える異なる信号レベルを含んでもよい。いくつかの実施例では、連続する高電圧出力では信号変換が発生せず、連続する低出力でも信号変換は発生しない。
【0078】
いくつかの実施例において、読み取りサイクル内でアクセスするビット線はj個よりも少ない。例えば、コンピューティングメモリがランダムアクセスモードの場合、センスアンプは当該ランダムアクセスモードに対応するビットアドレスのビット線のみにアクセスする。
【0079】
別の事例として、j個よりも少ないビット線へのアクセス命令を受信した場合、未選択のビット線に対応するビット線検出回路が起動してビット線電圧を生成することはない。タイミング
図300に記載した波形は代表的な事例にすぎず、コンピューティングメモリを制御するその他の波形も本発明の範囲に違反しない。例えば、関連する全てのビット線検出回路のビット線電圧について検出を完了するまで、センスイネーブル信号(例えば、SAEN)は高電圧に維持される。また、別の事例として、低電圧パルスも素子のイネーブル信号(例えば、基準生成、センスアンプイネーブル、ビット線イネーブル、ワード線イネーブル)に使用可能である。また、別の事例として、センスアンプの出力はデータ出力信号を位相反転する反転バッファに接続される。
【0080】
図4は、一実施例に基づき記載したコンピューティングメモリの検出回路の事例400である。いくつかの実施例において、検出回路400はビット線検出回路404を含む。いくつかの実施例において、ビット線検出回路404は、ビット線検出回路104又はビット線検出回路204である。いくつかの実施例において、ビット線検出回路404はビットセル402に電気的に接続される。いくつかの実施例において、ビットセル402はメモリアレイ102の一部である。いくつかの実施例において、ビットセル402はビット線検出回路404に対応するビット線の1つである。例えば、1MBのコンピューティングメモリの事例において、ビットセル402はビット線検出回路に対応する4本のビット線の1つである。
【0081】
いくつかの実施例において、ビットセルは、ビット線トランジスタ432及びワード線トランジスタ434を含む。例えば、ワード線トランジスタは、メモリのビットセルアレイ内の磁気トンネル接合(MTJ)に隣接している。いくつかの実施例において、ビット線トランジスタ制御信号は、ビット線イネーブル信号(例えば、ビット線イネーブル信号306、BLEN1<i>)であり、ワード線トランジスタ制御信号はワード線信号(例えば、ワード線信号302)である。
【0082】
デコード後のメモリアドレスに基づいて、ビット線イネーブル信号及びワード線信号は、対応するビットセルをビット線検出回路404に接続する。いくつかの実施例において、メモリアドレスは、デコードする前にラッチに保持される。例えば、電流経路は、ビット線検出回路404から、接続されているビットセルのワード線トランジスタ434へ流れたあと、接続されているビットセルのビット線トランジスタ432へ流れてグランドに接続される。
【0083】
いくつかの実施例において、ビットセル402は有効抵抗410(例えば、ビットセルのMTJを示す)を有している。読み取り電流は、ビット線検出回路404からビットセル402を経由してグランドに接続されて、当該有効抵抗410に関連する電圧V
dataを生成する。例えば、ビットセルの状態が論理「1」であり、有効抵抗が高い場合には、ビット線電圧も高くなる(例えば、
図3の電圧V
1、310)。また、ビットセルの状態が論理「0」であり、有効抵抗が低い場合には、ビット線電圧も低くなる(例えば、
図3の電圧V
0、310)。
【0084】
本発明に違反しない範囲において、いくつかの実施例では、ビット線検出回路で検出、キャプチャ又は生成されるビットセルデータ及びデータの対応信号は、データとの間に異なる関係を有してもよい(例えば、論理「1」が低い信号値に対応し、論理「0」が高い信号値に対応する)。また、いくつかの実施例において、ビット線検出回路404は、電流をビットセル402に流してビット線電圧V
dataを生成するためのビット線電流経路412(例えば、電流源)を含む。ビット線電流経路412は、トランジスタ438及びその制御信号416と、トランジスタ440及びその制御信号418を含む。いくつかの実施例において、信号416はビット線イネーブル信号(例えば、ビット線イネーブル信号306、
図2のBLEN1
<i>)であり、デコードアドレスに基づいて、選択的にビット線をビット線検出回路404に電気的に接続する。
【0085】
いくつかの実施例において、信号418は電圧クランプ信号である。いくつかの実施例において、ビットセルに流れる電流がかなり高い場合には(例えば、MRAMビットセルのMTJに流れる電流、PCMビットセルに流れる電流、RRAMビットセルに流れる電流)、ビットセル402に干渉して状態を変化させることがある。電圧クランプ信号は、トランジスタ418の動作条件を調整することで、電流源からビットセル402に流れる電流を制限する。いくつかの実施例では、図示するように、トランジスタ440がソース出力回路として構成される。こうすることで、トランジスタ440のVGSは約Vclamp-Vthとなる(トランジスタ440の閾値電圧)。つまり、Vclamp-Vthはビットセルに供給する電流を制御する。
【0086】
いくつかの実施例において、ビット線検出回路404はサンプルアンドホールド回路414を含む。いくつかの実施例において、当該サンプルアンドホールド回路は、サンプリングキャパシタ420、トランジスタ430及びその制御信号422、トランジスタ436及びその制御信号424を含む。ビット線電圧が生成されると、トランジスタ430は電圧V
data 426をサンプリングキャパシタ420に接続する。いくつかの実施例において、信号422は、ビット線イネーブル信号か、ビット線イネーブル信号と同期する信号である。電圧V
data 426をサンプリングするのと同時に、信号424はトランジスタ436をオフにする。ビット線電圧のサンプリング後、信号406、416及び422はビット線検出回路404をビットセルから分離して、ビットセルの状態に対応する電圧をサンプリングキャパシタ420に保持する。検出動作時(例えば、
図3に記載するビット線検出回路404による検出時)には、信号424がトランジスタ436をオンにして、保持されているビット線電圧428をセンスアンプ(例えば、センスアンプ108、センスアンプ208、センスアンプ500)の入力端子に出力する。いくつかの実施例において、信号424はBLEN2
<j>である。いくつかの実施例において、信号424はBLEN1
<i>の反転信号である。
【0087】
本発明で開示するコンピューティングメモリの利点の1つは、ビット線電圧を検出する前に、ビット線電圧をサンプリング及び保持することで読み取り動作を加速させられる点である。例えば、開示するコンピューティングメモリでは、センスアンプが異なるビット線検出回路からの複数のビット線電圧を一度に検出可能なため、当該第2データの読み取りに必要な時間が減少する。また、トランジスタ430の寄生容量は、有害な電荷注入をサンプリングキャパシタ420にもたらし(例えば、z信号422が高から低に変化するとき)、ビット線電圧の正確さに影響を及ぼし得る。当該電荷注入は、センスアンプの入力に影響を及ぼして、不正確な検出を招来する。そこで、いくつかの実施例において、サンプルアンドホールド回路414は、電荷注入ノイズを低減させる回路(図示しない)を含む。いくつかの実施例において、この電荷注入ノイズリダクション回路は基準信号発生器にも使用される。
【0088】
いくつかの実施例において、電荷注入ノイズリダクション回路は、制御信号が信号422とは逆の追加のトランジスタを含む。当該トランジスタは、トランジスタ430とサンプリングキャパシタ420の間のノードに接続されて、注入電荷の一部を相殺することでサンプリングキャパシタ420のノイズを低減させる。例えば、注入電荷の半分をトランジスタ430の両側に誘導するために、サンプリングキャパシタ420の値はVdata 426のノードにおける有効キャパシタンスと等しく設定される。また、追加のトランジスタの大きさは、当該部分の注入電荷を相殺するために、トランジスタ430の半分の大きさとする。いくつかの実施例において、電荷注入ノイズリダクション回路は、サンプリングキャパシタ420とグランドノードの間に加えられるトランジスタ(図示しない)を含む。信号422は、接続されているトランジスタをオフにしてサンプリングを終了する前に、このトランジスタをオフにしてサンプリングキャパシタ420とグランドノードを分離する。これにより、電荷の注入経路をサンプリングキャパシタへの進入経路から分離する。
【0089】
ここでは、ビットセル402及びビット線検出回路404について詳細に図示したが、
図4の事例は本発明の範囲を制限するものではない。ビットセル402及びビット線検出回路404は、より少数の、或いは追加の素子を含み、且つその他の信号で制御されてもよい。例えば、ビット線電流経路回路412は、トランジスタ438又はトランジスタ440を含まなくてもよい。更に、例えば、異なるビットセル構造及び異なるビットセルの電流経路としてもよい。更に、例えば、図示した信号生成の電流経路と異なっていてもよい。例えば、電流が、ビットセル402からビット線電流経路回路412に流れてビット線電圧を生成してもよい。
【0090】
図5は、実施例に基づき記載したコンピューティングメモリのセンスアンプ500の事例である。いくつかの実施例において、センスアンプ500はセンスアンプ108又はセンスアンプ208である。いくつかの実施例において、センスアンプ500は、2つの入力端子及び1つの制御端子を含む差動アンプである。いくつかの実施例において、入力端子は、ビット線電圧502(例えば、ビット線電圧428)及び基準電圧506(例えば、基準信号発生器106からの基準電圧、基準信号発生器206からの基準電圧)に電気的に接続され、制御端子はセンスアンプイネーブル信号504(例えば、センスアンプイネーブル信号308)に接続される。いくつかの実施例において、センスアンプイネーブル信号504がセンスアンプをオンにすることで、電流がアンプに流れて増幅後の出力が生成される。いくつかの実施例において、センスアンプイネーブル信号504は、全てのビット線検出回路のビット線電圧を検出するために、センスアンプのオン状態を維持する。いくつかの実施例において、センスアンプ500は、ビット線電圧502と基準電圧506との電圧差を増幅し、当該増幅後の電圧差をデータ出力端子508に出力する(例えば、データ出力218、データ出力312)。例えば、ビット線電圧502が当該基準電圧506よりも大きい場合(例えば、対応するビットセルデータが論理「1」の場合や、
図3に示す電圧V
1の場合)、データ出力508は高電圧となる(V
DD/2よりも大きく、且つV
DDに近接している)。また、ビット線電圧502が当該基準電圧506よりも小さい場合(例えば、対応するビットセルデータが論理「0」の場合や、
図3に示す電圧V
0の場合)、データ出力508は低電圧となる(V
DD/2よりも小さく、0に近接している)。
【0091】
図5に示したセンスアンプ500は事例にすぎず、センスアンプのその他の構成は本発明の範囲に違反するものではない。例えば、センスアンプ500をバッファドライブ等に電気的に接続してもよい。
【0092】
図6は、実施例に基づき記載したメモリを動作させる方法600の事例である。方法600は図示のステップを含むと記載しているが、異なるステップの順序、追加のステップ、又はより少ないステップの実行はいずれも本発明の範囲に違反するものではない。本発明の範囲には、ここで開示するその他の方法で方法600を実行することも含まれる。いくつかの実施例において、方法600は、コンピューティングメモリ100、200、812、1300を動作させるために用いられる。いくつかの実施例において、方法600は、メモリアレイのワード線にアクセスすることを含む(ステップ602)。
図3に示すように、ワード線信号302は、デコードしたメモリアドレスに基づいて1列のメモリアレイにアクセスする。ワード線信号302は、ビットセル内のトランジスタをオンにする(例えば、ビットセル402内のワード線がトランジスタ434にアクセスする)。
【0093】
いくつかの実施例において、方法600は、メモリアレイのワード線にアクセスするのと同時に(ステップ604)、センスアンプに対応する第1ビット線にアクセスする(ステップ606)ことを含む。例えば、
図3に示したワード線信号302が高電圧のとき、メモリは第1ビット線にアクセスする。いくつかの実施例において、方法600は、メモリアレイのワード線にアクセスするのと同時に、第1メモリビットセルの状態に対応する電圧をサンプリング及び保持することを含む。例えば、サンプルアンドホールド回路(例えば、サンプルアンドホールド回路414)が、選択されたビット線からのV
dataをサンプリング及び保持する。いくつかの実施例において、方法600は、サンプルアンドホールド回路の電荷注入ノイズを低減させる動作を含む。例えば、ここで記載する電荷注入ノイズリダクション回路は、電荷注入ノイズ電圧を低減させるためにサンプルアンドホールド回路に電気的に接続される。
【0094】
いくつかの実施例において、方法600は、メモリアレイのワード線にアクセスするのと同時に(ステップ604)、センスアンプに対応する第2ビット線にアクセスする(ステップ608)ことを含む。例えば、
図3に示したワード線信号302が高電圧のとき、メモリは第2ビット線にアクセスする。また、方法700で記載する事例のように、センスアンプがアクセスする第2ビット線は、更新後のビット線アクセス順序に対応する(例えば、「先行モード」において)。いくつかの実施例において、第2ビット線にアクセスする方法には、第1ビット線にアクセスするのと同時に第2ビット線にアクセスすることが含まれる。例えば、第1ビット線へのアクセスと第2ビット線へのアクセスとの時間差は、tCLKであるか、第1ビット線検出回路の選択的電気接続に対応するパルス幅よりも小さい。
【0095】
いくつかの実施例において、第1ビット線はメモリアレイの第1組のビット線に属しており、第2ビット線はメモリアレイの第2組のビット線に属している。例えば、前記1MBのコンピューティングメモリの事例では、第1ビット線がビット線群における4本のビット線を含む第1組に属しており、第2ビット線が別のビット線群における4本のビット線を含む第2組に属している。
【0096】
いくつかの実施例において、方法600は、センスアンプを用いて第1メモリビットセルを検出することを含む(ステップ610)。例えば、センスアンプ(例えば、センスアンプ108、センスアンプ208、センスアンプ500)は、選択されたビットセル(例えば、ビットセル402)に対応するビット線電圧を検出して増幅する。また、センスアンプは、ビットセルの状態に対応する信号を出力する(例えば、データ出力218、データ出力508)。
【0097】
いくつかの実施例において、方法600は、同一ワード線上の第2メモリビットセル及び第2ビット線を検出することを含む。例えば、センスアンプ(例えば、センスアンプ108、センスアンプ208、センスアンプ500)は、第2ビットセル(例えば、ビットセル402)に対応するビット線電圧を検出して増幅する。また、センスアンプは、第2ビットセルの状態に対応する信号を出力する。いくつかの実施例において、第2ビット線は、更新後のビット線アクセス順序における次のビット線である。いくつかの実施例において、第2ビット線は、ビット線アクセス順序における次のビット線である(方法700で記載)。
【0098】
いくつかの実施例では、センスアンプを用いて第1メモリビットセル及び第2メモリビットセルを検出する。例えば、第1及び第2ビット線検出回路(例えば、ビット線検出回路104、ビット線検出回路204、ビット線検出回路404)は、同一の読み取りサイクル内の異なる時間にそれぞれビット線電圧を提供する(例えば、BLEN2<j>信号が選択的にビット線検出回路をセンスアンプに電気的に接続する)。
【0099】
いくつかの実施例において、方法600は、基準電圧を生成し、メモリアレイのワード線及び第2ビット線で第2メモリビットセルを検出することを含む。いくつかの実施例において、メモリアレイの第1メモリビットセルの検出には、安定化したビット線電圧と基準電圧との電圧差を増幅することが含まれる。また、メモリアレイの第2メモリビットセルの検出には、安定化したビット線電圧と基準電圧との電圧差を増幅することが含まれる。例えば、基準信号発生器(例えば、基準信号発生器106、基準信号発生器206)を用いて基準電圧を生成する。センスアンプ(例えば、センスアンプ108、センスアンプ208、センスアンプ500)は、ビット線検出回路(例えば、ビット線検出回路104、ビット線検出回路204、ビット線検出回路404)のビット線電圧(例えば、ビット線電圧428)と基準電圧との差分電圧を増幅する。ビット線検出回路の出力電圧は、j=第0ビット線検出回路及び第1ビット線検出回路に対応するか、更新後のビット線アクセス順序のビット線検出回路に対応する。
【0100】
いくつかの実施例において、前記方法600は、基準電圧の発生に応答して基準電圧の生成動作を停止するとともに、第2メモリビットセルの検出が完了するまで基準電圧を保持することを含む。例えば、リファレンスイネーブル信号(例えば、
図2のREFEN、リファレンスイネーブル信号304)が、基準電圧の生成を停止するよう命令する(例えば、発生した基準電圧に応答する)。基準電圧は、生成後すぐに保持される。いくつかの実施例では、キャパシタを使用して基準電圧を保持する。いくつかの実施例において、方法600は、検出した第1メモリビットセルに基づいて第1データ出力を発生させ、第1データ出力をデータバッファに格納することを含む。例えば、センスアンプ(例えば、センスアンプ108、センスアンプ208、センスアンプ500)はデータ出力を発生させ、データ出力をデータバッファ(例えば、データバッファ110、データバッファ210)に格納する。
【0101】
いくつかの実施例において、前記方法600は、ワード線及び第2ビット線におけるメモリアレイの第2メモリビットセルを検出し、検出した第2メモリビットセルに基づいて第2データ出力を発生させるとともに、第2データ出力を前記データバッファに格納することを含む。
【0102】
いくつかの実施例において、第1データ出力の発生と第2データ出力の発生との間の時間差は、第1メモリビットセルの検出と第2メモリビットセルの検出との間の遅延である。例えば、第2ビット線検出回路(例えば、ビット線検出回路104、ビット線検出回路204、ビット線検出回路404)は、ビット線電圧をセンスアンプ(例えば、センスアンプ108、センスアンプ208、センスアンプ500)に出力し、センスアンプは入力電圧に基づいてデータ出力を発生させる。発生したデータ出力は、データバッファ(例えば、データバッファ110、データバッファ210)に格納される。第1データ出力と第2データ出力との時間差はtCLKである。
【0103】
いくつかの実施例において、前記方法600は、メモリアドレスを受信して、メモリアドレスが第1アドレスか否かを判定し、メモリアドレスが第1アドレスであるとの判定に基づいて、データバッファからの第1データ出力を送出することを含む。また、いくつかの実施例において、方法600は、メモリアドレスが第1アドレスでないとの判定に基づいて、データバッファからの第1データ出力の送出を放棄することを含む。いくつかの実施例では、ワード線及び第1ビット線がメモリアレイの第1アドレスである。例えば、コンピューティングメモリ(例えば、コンピューティングメモリ100、コンピューティングメモリ200)がメモリアドレスを受信し、且つメモリアドレスが第1ビットセル(例えば、ビットセル402)のアドレスであるとする。この場合、データバッファは、受信したアドレスに基づいて、第1ビットセルに対応するデータを出力する(例えば、格納されているデータの出力は、第1ビットセルの状態に対応する)。
【0104】
いくつかの実施例において、方法600は、第1データ出力のラッチ完了に応答して、第1データ出力を「準備完了」状態にセットする。且つ、データが出力されるか否かは、「準備完了状態」であるか否かの判定結果に従う。
【0105】
いくつかの実施例において、第1出力をデータバッファに格納することには、データバッファに当該第1データ出力をラッチすることが含まれる。例えば、センスアンプからのデータ出力は、データバッファ(例えば、データバッファ110、データバッファ210)にラッチされる。そして、データラッチ動作の完了に応答して、当該データ出力を「準備完了状態」にセットする。データ要求命令を受信すると、当該データ出力が「準備完了状態」であるとの判定に基づいてデータを提供する。いくつかの実施例において、第1データ出力を「準備完了状態」にセットすることには、対応するタグレジスタ(例えば、タグレジスタ216)内の第1データ出力に対応するタグビットを然るべき論理値に設定することが含まれる。
【0106】
いくつかの実施例では、メモリアドレスを受信する前に、コンピューティングメモリが第1データ出力をプリフェッチしておく。例えば、アドレスの入力がなくてもデータ出力を提供可能である。前記データ出力は、それ以前のアクセス順序に基づいてメモリコントローラ内に予め設定されている。こうすることで、より迅速にメモリにアクセス可能となり、システム性能が向上する。いくつかの実施例では、プリフェッチするデータのサイズをプログラム可能である(例えば、主制御チップの入力によるか、トレーニングデータに基づく)。いくつかの実施例において、第1出力ワードは第1メモリビットセルの状態に対応しており、第2出力ワードは第2メモリビットセルの状態に対応している。つまり、同一の読み取りサイクル内で、コンピューティングメモリ(例えば、コンピューティングメモリ100、コンピューティングメモリ200)は複数の出力ワードを出力する。
【0107】
図7は、実施例に基づき記載したメモリを動作させる方法700である。方法700は図示のステップを含むと記載しているが、本発明に違反しない範囲において、追加の、又はより少ないステップを実行してもよいし、異なるステップの順序でコンピューティングメモリを動作させてもよい。また、本発明に違反しない範囲において、ここで開示する方法700をその他の方法で実行してもよい。いくつかの実施例では、コンピューティングメモリ100、200、812、1300を動作させるために方法700を使用する。方法700のステップは「先行モード」と称される。いくつかの実施例において、方法700はアドレスを受信することを含む(ステップ702)。例えば、コンピューティングメモリ(例えば、コンピューティングメモリ100、コンピューティングメモリ200)は、要求データに対応するアドレスを受信する。受信した当該アドレスは、メモリアレイ(例えば、メモリアレイ102)内に位置するビットセル(例えば、ビットセル402)に対応している。いくつかの実施例において、当該方法700は、コンピューティングメモリが受信したアドレスが第1アドレスとは異なると判定することを含む(ステップ704)。例えば、第0ビット線検出回路がビット線にアクセスしているが、受信した当該アドレスが別のビット線に対応している場合に、コンピューティングメモリ(例えば、コンピューティングメモリ100、コンピューティングメモリ200)は、受信した当該アドレスが「準備完了状態」のデータアドレスとは異なると判定する。いくつかの実施例において、方法700は、ビット線のアクセス順序を更新することを含む(ステップ706)。例えば、受信した当該アドレスが「準備完了状態」のデータアドレスとは異なるとの判定に基づいて、ビット線にアクセスする順序を更新する。また、いくつかの実施例では、受信した当該アドレスがアクセス済みのビット線に対応するアドレスとは異なるとの判定に基づいて、ビット線にアクセスする順序の更新を放棄する。例えば、ビット線にアクセスする順序が、第0、第1、第2、第3等のビット線検出回路に対応しているとする。そして、第0ビット線の検出が完了したあと、第1ビット線の検出が完了する前に、コンピューティングメモリが第3ビット線データを要求する命令を受信したとする。すると、当該命令に応答して、コンピューティングメモリは、ビット線にアクセスする順序を更新することで、第1ビット線を検出する前に第3ビット線を検出する。こうすることで、要求されたデータをより迅速に提供してシステム性能を向上させる。
【0108】
いくつかの実施例において、方法700は、アドレスに対応するデータを出力することを含む(ステップ708)。例えば、更新前のビット線アクセス順序と比較して、ビット線のアクセス順序を更新したあとは、データ要求命令に対応するビット線のデータにいっそう迅速にアクセスして、主制御チップ又はメモリインターフェースに提供可能となる。いくつかの実施例において、方法700は、更に、データ出力がデータバッファにラッチされているか否かを判定し、当該データ出力がデータバッファにラッチされていないとの判定に基づいて、当該データ出力を「準備未了状態」にセットすることを含む。いくつかの実施例では、対応するデータ出力が「準備未了状態」であるとの判定に基づいて、ビット線群内の当該ビット線にアクセスする。いくつかの実施例において、データ出力を「準備未了状態」にセットすることには、データ出力に対応するタグビットを論理状態に設定することが含まれる。例えば、タグレジスタ216内の対応するタグビットは、「準備完了状態」に設定する前に、データ出力を「準備未了状態」にセットする。また、別の事例として、読み取りサイクルの開始時に、全てのタグを「準備未了状態」に設定する。
【0109】
図8は、実施例に基づき記載したメモリコントローラ800である。いくつかの実施例において、メモリコントローラ800は、第1インターフェース802、第2インターフェース804、第1コントローラ806、第1データバッファ808、第2データバッファ810及びメモリ812を含む。いくつかの実施例において、メモリコントローラ800は、エッジAIシステム(edge AI system)、ニューラルネットワークシステム(neural-network system)、IoTシステム(internet-of-things system)、カーエレクトロニクスシステム、マイクロコントローラシステム(microcontroller system)、移動通信システム(mobile communication system)、プログラマブルコンピューティングシステム(programmable computing system)、ハードウェアセキュリティシステム(hardware security system)、テレマティクスシステム(telematics system)、バイオメディカル電子機器(biomedical electronics device)、ロボット(robot)及び無人航空機(drone)といった電子製品に含まれる。
【0110】
いくつかの実施例において、メモリコントローラ800は、動的データにアクセスするためのメモリインターフェースを提供するとともに(このようなメモリは図示していない)、静的データを記憶するよう構成される別のメモリ(例えば、メモリ812、コンピューティングメモリ100、コンピューティングメモリ200、コンピューティングメモリ1300)を含む。後に詳述するように、実施例は、データチャネルの閉塞を減少させるとともに、静的データ及び動的データに迅速にアクセス可能であるとの利点を有する。いくつかの実施例において、動的データは、コンピューティング動作中に頻繁に変更される中間結果データのようなデータである(例えば、ニューラルネットワークの内部ノードデータ)。例えば、これらのデータにおいて実行される書き込み動作は、全動作の重要な部分である(例えば、少なくとも1%)。いくつかの実施例において、静的データは、(例えば、動的データと比較して)頻繁に変更されることのないデータであるか、コンピューティング動作中にも変更されないアルゴリズム、通信プロトコル及びニューラルネットワークのパラメータ等である。全動作と比較して、静的データにおける書き込み動作は重要ではない(例えば、1%未満)。
【0111】
メモリコントローラ内のメモリに静的データを記憶することで、主制御チップ内のメモリに静的データをバッファリングする必要がなくなる。よって、開示するメモリコントローラは、動的データのアクセス帯域幅を増加させるとの利点を有する。例えば、ニューラルネットワークモデルをメモリコントローラ内の専用メモリに記憶することで、開示するメモリコントローラ800を使用するニューラルネットワークコンピューティングシステムはより優れた性能を有する。
【0112】
いくつかの実施例において、第1インターフェース802は主制御チップインターフェースである。いくつかの実施例において、第1インターフェース802は、メモリコントローラ800と主制御チップの間で通信を行うよう構成される(例えば、第1データ転送チャネル906)。主制御チップは、中央処理装置(CPU)、グラフィックスプロセッサ(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、加速器集積回路(IC)、特定用途向け集積回路(ASIC)等のいずれかである。いくつかの実施例において、第1インターフェース802に対応する前記データ転送チャネル906は、ダブルデータレート(DDRx)、低電力ダブルデータレート(LPDDRx)、グラフィックスダブルデータレート(GDDRx)、高帯域幅メモリ(HBM)といったメモリアクセスチャネル基準の1つである。
【0113】
いくつかの実施例において、第2インターフェース804はDRAMインターフェースである。いくつかの実施例において、第2インターフェース804は、メモリコントローラ800と第1コンピューティングメモリの間で通信を行うよう構成される(例えば、第2データ転送チャネル908)。当該第1コンピューティングメモリ(例えば、メモリ910、メモリ1014)は第1データタイプに対応している。例えば、第1コンピューティングメモリは動的データに対応するDRAMである。いくつかの実施例では、
図9及び
図10に示すように、第2インターフェース804は、シリコン貫通電極(TSV)を使用して第1コンピューティングメモリに接続されるよう構成される(例えば、データ転送チャネル908、TSV 1006)。なお、事例の第2インターフェース804はDRAMインターフェースであるが、理解すべき点として、第2インターフェース804はDRAM以外のメモリインターフェースであってもよい。いくつかの実施例において、第1コンピューティングメモリは高性能の揮発性メモリである。いくつかの実施例において、動的データに対応する第1コンピューティングメモリは、揮発性メモリ(例えば、SRAM、DRAM)及び不揮発性メモリ(例えば、MRAM、フラッシュ、PCM、FRAM、RRAM)のいずれかを含むメモリデバイス回路に動的データを記憶する。
【0114】
いくつかの実施例において、第1コントローラ806はDRAMコントローラである。いくつかの実施例において、第1コントローラ806は、第1インターフェース802及び第2インターフェース804に電気的に接続されるとともに、主制御チップからの命令を受信して、命令(例えば、読み取り命令、書き込み命令)を第1コンピューティングメモリに転送するよう構成される(例えば、第2インターフェース804を介する)。いくつかの実施例において、第1コントローラ806は、読み取りバッファ、書き込みバッファ及びコマンドキュー(command queue)を含む。なお、前記第1コントローラ806の接続は事例にすぎず、限定的なものではない。また、事例の第1コントローラ806はDRAMコントローラであるが、第1コントローラ806はDRAM以外のメモリコントローラとしてもよい。いくつかの実施例において、第1データバッファ808はDRAMバッファである。いくつかの実施例において、第1データバッファ808は第1インターフェース802及び第2インターフェース804に電気的に接続される。いくつかの実施例において、第1データバッファは、第1インターフェース802と第2インターフェース804の間で第1データタイプを伝送するよう構成される。なお、前記第1データバッファ808の接続は事例にすぎず、限定的なものではない。例えば、いくつかの実施例において、第1コントローラ806及び第1データバッファ808は、メモリコントローラ812の素子として一体的に統合される。
【0115】
例えば、前記第1データバッファ808は第1データタイプ(例えば、動的データ)に対応している。なお、事例の第1データバッファ808はDRAMバッファと記載しているが、当該第1データバッファ806はDRAM以外のその他のメモリバッファとしてもよい。いくつかの実施例において、第1データバッファ808は、第1コンピューティングメモリに対応する読み取りバッファ及び書き込みバッファを含む。いくつかの実施例において、要求されたデータを主制御チップに提供する前に、読み取りバッファは第1コンピューティングメモリからの要求データを受信する。また、書き込みバッファは、第1コンピューティングメモリに書き込まれるデータを一時的に保持するとともに、例えば第2インターフェース804を介して第1コンピューティングメモリに提供する。
【0116】
いくつかの実施例において、第2データバッファ810は静的データバッファである。いくつかの実施例において、第2データバッファ810は、メモリ812及び第1インターフェース802に電気的に接続される。いくつかの実施例において、第2データバッファは、第1インターフェース802とメモリ812の間で第2データタイプのデータを伝送するよう構成される。なお、前記第2データバッファ810の接続は限定的なものではない。いくつかの実施例において、第2データバッファ810は第2データタイプ(例えば、静的データ)に対応している。いくつかの実施例において、第2データバッファ810は、第2コンピューティングメモリ(例えば、メモリ812)に対応する読み取りバッファ及び書き込みバッファを含む。要求されたデータを主制御チップに提供する前に、読み取りバッファはメモリ812からの要求データを受信する。また、書き込みバッファは、メモリ812に書き込まれるデータを一時的に保持して、メモリ812に提供する。いくつかの実施例において、第2データバッファの読み取りバッファは第2データバッファの書き込みバッファよりも大きい。いくつかの実施例において、静的データに対応する書き込み動作の頻度は、動的データに対応する書き込み動作の頻度よりも低い。第2データバッファ810内の書き込みバッファの大きさを小さくすることで、電力消費及び面積を減少させられる。
【0117】
いくつかの実施例において、第2データバッファ810はバッファメモリを含む。いくつかの実施例において、データバッファはキャッシュメモリ構造(cache memory)となっている。本発明で開示するメモリコントローラは、第2データタイプ(例えば、静的データ)に対応し且つキャッシュメモリ構造を採用するデータバッファを含むため、主制御チップ内の第1データタイプ(例えば、動的データ)に関連するキャッシュメモリ空間を解放して、データアクセスの速度及び効率を改善することが可能である。いくつかの実施例において、メモリ812は内部メモリである。いくつかの実施例において、メモリ812は、第2データタイプ(例えば、静的データ)を記憶するよう構成される。いくつかの実施例において、メモリ812は、DRAM、フラッシュメモリ、FRAM、RRAM及びMRAMのいずれかを含む。いくつかの実施例において、メモリ812は、不揮発性メモリ及び高密度メモリのいずれかを含む。揮発性メモリと比較して、不揮発性メモリは、概して待機電力(例えば、メモリが読み取り又は書き込み動作を実行していないときの電力)の消費が少なく、且つ高い密度を有している。
【0118】
いくつかの実施例において、データタイプの定義はシステムソフト又は主制御チップによる。主制御チップは、中央処理装置(CPU)、グラフィックスプロセッサ(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、加速器集積回路(accelerator integrated circuit)、特定用途向け集積回路(ASIC)といった代表的なシステムのいずれかである。例えば、代表的なシステム(エッジAIシステム、ニューラルネットワークシステム、IoTシステム、カーエレクトロニクスシステム、マイクロコントローラシステム、移動通信システム、プログラム制御可能なコンピューティングシステム、ハードウェアセキュリティシステム、テレマティクスシステム、バイオメディカル電子機器、ロボット、及び無人航空機のいずれか)の主制御チップは、使用態様、ユーザが定義したアルゴリズム、又は性能最適化ニーズに基づいて、メモリコントローラ812に提供するデータを静的又は動的データに設定する。いくつかの実施例では、
図10に示すように、メモリ812及びコンピューティングメモリ(例えば、メモリ910、メモリ1014)が同一のチップに位置する。
【0119】
いくつかの実施例において、メモリコントローラ800は、誤り訂正符号(ECC)及び/又はデータスクラビング回路(data scrubbing circuit、図示しない)を含む。データスクラブの代表的な方法及びデータスクラブの代表的回路については、PCT国際特許出願番号PCT/US2019/055963を参照すればよい。いくつかの実施例において、一部の第1コンピューティングメモリ(例えば、DRAM)は高温でエラーが生じやすい。そこで、ECC及びデータスクラビング回路をメモリコントローラに追加することで、こうした高温による機能喪失やエラーをいっそう検出しやすくするとともに、性能低下や電力消費の増加といったコストを生じることなく訂正を行う。これに対し、周知の解決策では、例えば第1コンピューティングメモリのデータ更新を高頻度で実行することで、性能低下や電力消費の増加が生じる場合がある。また、いくつかの実施例において、第1コンピューティングメモリとメモリコントローラの間のインターフェース(例えば、第2インターフェース、第2データ転送チャネル908、TSV1006)は、主制御チップメモリ(例えば、DRAM)と通信する周知のコントローラインターフェースと比較して、物理的距離が短く、且つ対応する負荷が小さい(例えば、TSV)。よって、このチャネルで伝送されるデータは、高い帯域幅を有し得るとともに、消費電力が小さくなる。また、このインターフェースは、第1コンピューティングメモリ、ECC及び/又はデータスクラビング回路間でのデータ伝送に用いられ、周知のメモリコントローラと比較して速度が速く、消費電力が小さい。よって、いくつかの実施例では、ECC及びデータスクラビング回路をメモリコントローラに組み込むことで、性能及び/又は電力消費が同時に最適化されるとの利点を有する。なお、
図8ではメモリコントローラ800を素子として説明したが、この説明は事例にすぎず、本発明の範囲を制限するものではないと解釈すべきである。メモリコントローラは、各素子間の異なる関係、追加の素子又はより少ない素子を含み得る。
【0120】
図9は、実施例に基づき記載した代表的なコンピューティングシステム900である。いくつかの実施例において、コンピューティングシステム900は、第1メモリコントローラ902、主制御チップ904、第1データ転送チャネル906、第2データ転送チャネル908、第2メモリコントローラ912、及びメモリ910、914、916を含む。いくつかの実施例において、第2メモリコントローラ912は、第1コンピューティングメモリに対応するメモリコントローラである(例えば、第1コントローラ806)。当該第1コンピューティングメモリは第1データタイプ(例えば、動的データ)に対応している。いくつかの実施例において、メモリコントローラ902はメモリコントローラ800である。メモリコントローラ902は、第1データ転送チャネル906を介して主制御チップ904と通信する。いくつかの実施例において、第1データ転送チャネルは、ダブルデータレート(DDRx)、低電力ダブルデータレート(LPDDRx)、グラフィックスダブルデータレート(GDDRx)、高帯域幅メモリ(HBM)といったメモリアクセスチャネルタイプ、及びその他の高速メモリアクセスチャネルのいずれかである。いくつかの実施例において、メモリコントローラ902は、第2データ転送チャネル908を介してメモリ910と通信する。いくつかの実施例では、シリコン貫通電極(TSV)を使用して第2データ転送チャネル908を形成する。
【0121】
いくつかの実施例において、メモリコントローラ902は、データが第2データタイプである内部メモリ(例えば、メモリ812、コンピューティングメモリ100、コンピューティングメモリ200)(例えば、静的データを記憶するよう構成される)を含む。また、メモリ910、914及び916のデータは第1データタイプである(例えば、動的データを記憶するよう構成される)。いくつかの実施例において、メモリコントローラ902の内部メモリ及びメモリ910は同一のチップに位置している。いくつかの実施例において、メモリコントローラ902の内部メモリは、DRAM、フラッシュメモリ、FRAM、RRAM、MRAM、不揮発性メモリ及び高密度メモリのうちの少なくとも1つを含む。いくつかの実施例において、メモリ910、914及び916は、DRAM、高性能不揮発性メモリ、SRAM、フラッシュメモリ、FRAM及びRRAMのうちの1つを含む。
【0122】
コンピューティングシステム900は、動的及び静的データへのアクセスを向上させるとの利点を有しているため、システム性能が向上する。メモリコントローラ902を使用することで、静的データをメモリコントローラ902に記憶することができ、動的データに対応するメモリの帯域幅が増大するため、データアクセス速度及びシステム性能が向上する。例えば、主制御チップ904は、メモリコントローラ902を使用するニューラルネットワークの一部である。ニューラルネットワークモデルのような頻繁には調整されないデータをメモリコントローラ内のメモリに記憶することで、主制御チップ904はより高速のデータ応答を得ることができる。
【0123】
いくつかの実施例において、メモリ914及び916に対応するメモリチャネルは、第1タイプのデータ(例えば、動的データ)へのアクセスに対応している。いくつかの実施例において、メモリコントローラ902は、第2タイプのデータ(例えば、静的データ)を記憶するよう構成されているため、メモリ914及び916は第1タイプのデータのみを記憶するよう構成され、第1タイプのデータに対応する帯域幅が最適化される。なお、
図9ではコンピューティングシステム900を素子として説明したが、この説明は代表的なものにすぎず、限定的なものではない。コンピューティングシステムは、素子間の異なる関係、追加の素子又はより少ない素子を含み得る。
【0124】
図10は、実施例に基づき記載した代表的なコンピューティングシステム1000である。いくつかの実施例において、コンピューティングシステム1000は、メモリコントローラ1002、主制御チップ1004、インターポーザ1008及びメモリ1014を含む。いくつかの実施例において、メモリコントローラ1002は、メモリコントローラ800又はメモリコントローラ902である。いくつかの実施例において、コンピューティングシステム1000は、はんだボール1012を介して別のシステム(例えば、システムの回路基板)に電気的に接続される。いくつかの実施例において、メモリコントローラ1002は、シリコン貫通電極(TSV)1006を介してメモリ1014と通信する(例えば、第2データ転送チャネル908)。これによる利点としては、少なくとも1つのメモリ1014がメモリコントローラ1014に積層され、全ての静的データ(例えば、メモリコントローラ1002からのデータ)及び動的データ(例えば、メモリ1014)がいずれも同一のスタックからアクセスされる。いくつかの実施例において、メモリコントローラ1002は、第2データタイプに対応する内部メモリ(例えば、メモリ812、コンピューティングメモリ100、コンピューティングメモリ200)(例えば、静的データを記憶するよう構成される)を含む。また、メモリ1014は第1データタイプに対応する(例えば、動的データを記憶するよう構成される)。いくつかの実施例において、メモリコントローラ1002の内部メモリ及びメモリ1014は同一のチップに位置している。
【0125】
いくつかの実施例において、メモリコントローラ1002の内部メモリは、DRAM、フラッシュメモリ、FRAM、RRAM、MRAM、不揮発性メモリ及び高密度メモリのうちの少なくとも1つを含む。いくつかの実施例において、メモリ1014は、DRAM、高性能不揮発性メモリ、SRAM、フラッシュメモリ、FRAM及びRRAMのうちの少なくとも1つを含む。
【0126】
上記による代表的な利点として、第1コンピューティングメモリ及び第2コンピューティングメモリを同一のチップに統合することで、メモリアレイの面積を減少させられるとともに(例えば、第1及び第2コンピューティングメモリに対応するアレイを同一のチップに統合する)、電力消費を低減させられる(例えば、複雑性の軽減、及びコンピューティングメモリのデータパスにおけるデータ切り替えの減少)。また、メモリのアクセス性能が向上する。いくつかの実施例において、主制御チップ1004は、主制御チップ904又はメモリコントローラ800と通信する主制御チップである。いくつかの実施例において、主制御チップ1004は、少なくとも、中央処理装置(CPU)、グラフィックスプロセッサ(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、加速器集積回路(accelerator IC)、特定用途向け集積回路(ASIC)及びプロセッサ、といった代表的システムの1つである。いくつかの実施例において、メモリコントローラ1002は、インターポーザ1008を介して主制御チップ1004と通信する。いくつかの実施例において、メモリコントローラ1002は、1組のマイクロバンプ1010を介してインターポーザ1008に電気的に接続される。また、主制御チップ1004は、第2組のマイクロバンプ1010を介してインターポーザ1008に電気的に接続される。いくつかの実施例において、インターポーザ1008は、シリコンインターポーザであり、第1挿入口又は第1コネクション(例えば、メモリコントローラ1002及び/又はメモリ1014に対応する)を第2挿入口(例えば、主制御チップ1004に対応し、コンピューティングシステム1000に電気的に接続されるシステム)又は第2コネクションに電気的に接続する経路として構成される。
図10で説明したコンピューティングシステム1000及び素子は事例にすぎず、限定的なものではない。コンピューティングシステムは、素子間の異なる関係、追加の素子又はより少ない素子を含み得る。
【0127】
図11は、実施例に基づき記載した代表的なコンピューティングシステム1100である。いくつかの実施例において、コンピューティングシステム1100の素子(例えば、ウェアレベリング回路1104、アドレスマッピングブロック1106)は、メモリコントローラ800、メモリコントローラ902及びメモリコントローラ1002に含まれる。いくつかの実施例では、コンピューティングシステム1100を使用して、コンピューティングメモリ1300に対応する動作を実行する。いくつかの実施例において、コンピューティングシステム1100は、第1インターフェース1102、ウェアレベリング回路1104、アドレスマッピングブロック1106、第1コントローラ1108、第2コントローラ1110、第2メモリ1112及び第1メモリ1114を含む。いくつかの実施例において、第1インターフェース1102は第1インターフェース802である。いくつかの実施例において、第1インターフェース802はウェアレベリング回路1104及びアドレスマッピングブロック1106を含む。いくつかの実施例において、第2メモリ1112はメモリ812(例えば、静的データに対応するメモリ)であり、第1メモリ1114はメモリ910、メモリ914、メモリ916及び/又はメモリ1014(例えば、動的データに対応するメモリ)である。いくつかの実施例において、第1コントローラ1108は、第1コントローラ806及び/又は第1データバッファ808を含み、第1データタイプ(例えば、動的メモリ)に対応している。いくつかの実施例において、第2コントローラ1110は第2データバッファ810を含み、且つ第2データタイプ(例えば、静的メモリ)に対応している。
【0128】
いくつかの実施例において、アドレスマッピングブロック1106はアドレスマッピングテーブル(例えば、ルックアップテーブル)を含む。いくつかの実施例において、アドレスマッピングブロック1106は、アドレスマッピング情報を記憶するよう構成されるメモリ(例えば、上記で述べたような揮発性メモリ及び/又は不揮発性メモリ)を含む。例えば、アドレスマッピング情報はセルフラーニングにより生成される(例えば、コンピューティングメモリは、アクセス態様に基づいてセルフトレーニングを行い、当該アクセス態様を記録して、ここで開示するその他の方法に使用する)。また、セルフラーニングにより生成されたアドレスマッピング情報は、内部メモリ(例えば、不揮発性メモリ、メモリ812)に記憶される。上記による代表的な利点として、コンピューティングメモリシステムの不揮発性メモリ内にセルフラーニング情報を記憶することで、電力が存在しない場合にもセルフラーニング情報を保持可能であり、アクセスする度に学習情報を再学習したり、再度書き込んだりする必要がない。よって、性能が向上し、且つ、セルフラーニング処理へのアクセスに関連するメモリの電力消費が減少するとの利点を有する。このほか、SRAMのようなその他のメモリタイプと比較して、不揮発性メモリはバイトあたりに必要な面積が少ないため、チップ面積を有利に節約可能である。
【0129】
いくつかの実施例において、アドレスマッピングブロック1106は、主制御チップ(例えば、主制御チップ904、主制御チップ1004)からのメモリアドレス(例えば、論理アドレス、当該主制御チップが提供するアドレス)を受信する。そして、アドレスマッピングブロック1106のアドレスマッピングテーブルに基づいて、実際のメモリアドレスを第1コントローラ1108及び/又は第2コントローラ1110に提供する。第1コントローラ1108及び/又は当該第2コントローラ1110は、第2メモリアドレスに対応するデータアクセス命令を発信する。いくつかの実施例において、第1メモリアドレスは第1データタイプ(例えば、動的データ)に対応しており、第2メモリアドレスは第2データタイプ(例えば、静的データ)に対応している。いくつかの実施例では、主制御チップが第1メモリアドレスを提供する際にデータタイプ情報を提供する必要はなく、メモリコントローラが自動的に当該メモリアドレスを対応する第1メモリアドレス及び第1データタイプにマッピングする。
【0130】
いくつかの実施例において、第1メモリアドレスは第2データタイプ(例えば、静的データ)に対応しており、第2メモリアドレスは第2データタイプ(例えば、動的データ)に対応している。いくつかの実施例において、主制御チップが提供するメモリアドレスは、第1メモリアドレス及び第2データタイプに対応している。いくつかの実施例において、ウェアレベリング回路1104は、動作時にアドレスマッピングテーブルを更新する。例えば、第1ロジックアドレスがアドレスマッピングテーブルの第2の実際のアドレスにマッピングされているとする。このとき、アドレスマッピングテーブルの更新要求を受信して応答する場合、ウェアレベリング回路1104は第1アドレスを第2アドレスとは異なる第3アドレスにマッピングするよう更新する。いくつかの実施例において、当該アドレスマッピングテーブルの更新要求は、主制御チップから発せられる。いくつかの実施例において、当該要求の生成は、メモリアドレスにおける大量の書き込み動作の検出、又は、メモリアドレスにおける修復不可能な欠陥の検出に基づく。いくつかの実施例において、当該アドレスマッピングテーブルの更新要求の生成は、使用態様、ユーザが定義するアルゴリズム、性能の最適化、及びメモリコントローラのトレーニングのうちの少なくとも1つに基づく。
【0131】
いくつかの実施例において、第1メモリ1114及び第2メモリ1112は同一タイプのメモリ(例えば、MRAM、DRAM、フラッシュメモリ、FRAM、RRAM)を含む。いくつかの実施例において、第1メモリ1114及び第2メモリ1112はMRAMを含む。また、いくつかの事例において、MRAMのようなメモリは書き込み限度回数を有している。上記による代表的な利点として、フラッシュメモリの翻訳層(FLASH-translation-layer。例えば、前記ウェアレベリング回路1104及び/又はアドレスマッピングブロック1106)をメモリコントローラに追加することで、メモリでの書き込み動作をより均一に分布させられるため、メモリの使用寿命が延びる。なお、
図11では、コンピューティングシステム1100及びその素子について説明したが、この説明は代表的なものにすぎず、限定的なものではない。コンピューティングシステムは、素子間の異なる関係、追加の素子又はより少ない素子を含み得る。
【0132】
図12は、実施例に基づき記載したメモリコントローラを動作させる方法1200である。方法1200は図示のステップを含むと記載しているが、本発明に違反しない範囲において、異なるステップの順序、追加のステップ、又はより少ないステップを実行して当該代表的なメモリコントローラを動作させてもよいし、ここで開示するその他の方法を使用して方法1200を実行してもよい。いくつかの実施例において、方法1200は、データアクセス要求を受信することを含む(ステップ1202)。例えば、第1インターフェース802は、主制御チップからの命令を受信してコンピューティングメモリにデータアクセス(例えば、読み取り、書き込み)する。いくつかの実施例において、命令、ビットアドレス及びデータ(例えば、書き込むデータ、読み取るデータが提供される)はメモリアクセスチャネルタイプにおいて通信される。当該メモリアクセスチャネルタイプは、ダブルデータレート(DDRx)、低電力ダブルデータレート(LPDDRx)、グラフィックスダブルデータレート(GDDRx)、高帯域幅メモリ(HBM)及び高速メモリアクセスチャネルのいずれかである。
【0133】
いくつかの実施例において、方法1200は、アクセス中のデータに対応するデータタイプを判定することを含む(ステップ1204)。例えば、データタイプが静的データか動的データかを判定する。いくつかの実施例では、主制御チップにより当該データタイプを定義する。いくつかの実施例において、方法1200は、当該データが第1データタイプであるとの判定に基づき、第1メモリにアクセスすることを含む(ステップ1206)。例えば、当該データが動的データであるとの判定に基づき、メモリコントローラ(例えば、メモリコントローラ800、メモリコントローラ902、メモリコントローラ1002)は、第1コンピューティングメモリ(例えば、メモリ910、メモリ1014)にアクセスする。いくつかの実施例において、第1コンピューティングメモリは、DRAM、高性能不揮発性メモリ、SRAM、フラッシュメモリ、FRAM及びRRAMのうちの少なくとも1つである。
【0134】
いくつかの実施例において、前記方法1200は、前記データが第2データタイプであるとの判定に基づき、第2メモリにアクセスすることを含む(ステップ1208)。例えば、当該データが静的データであるとの判定に基づき、メモリコントローラ(例えば、メモリコントローラ800、メモリコントローラ902、メモリコントローラ1002)は、第2コンピューティングメモリ(例えば、メモリ812)にアクセスする。いくつかの実施例において、第2コンピューティングメモリは、DRAM、フラッシュメモリ、FRAM、RRAM、MRAM、不揮発性メモリ及び高密度メモリのうちの少なくとも1つである。いくつかの実施例において、方法1200は、アドレスマッピング設定に基づいて第1アドレスを第2アドレスにマッピングすることを含む。例えば、アドレスマッピングブロック1106は、第1メモリアドレスを第2メモリアドレスにマッピングするアドレスマッピング設定を有するアドレスマッピングテーブルを含む。
【0135】
いくつかの実施例において、方法1200は、第1メモリアドレスに位置するデータへのアクセス要求の受信に応答して、第2メモリアドレスにアクセスすることを含む。例えば、主制御チップ(例えば、主制御チップ904、主制御チップ1004)が、メモリコントローラ(例えば、メモリコントローラ800、メモリコントローラ902、メモリコントローラ1002)からの第1アドレスのデータを要求すると、アドレスマッピング(例えば、アドレスマッピングブロック1106による)に基づいて、メモリコントローラは第2アドレスのデータにアクセスする。いくつかの実施例において、方法1200は、第1アドレスマッピングを第2アドレスマッピングに更新することを含む。例えば、ウェアレベリング回路1104は、第1アドレスマッピング(例えば、第1メモリアドレスを第2メモリアドレスにマッピングする)を第2アドレスマッピング(例えば、第1メモリアドレスを第3メモリアドレスにマッピングする)に更新する。いくつかの実施例において、第1アドレスマッピングから第2アドレスマッピングへの更新の実行は、アドレスマッピング更新要求の受信に対する応答である。いくつかの実施例において、当該アドレスマッピング更新要求は、使用態様、ユーザが定義するアルゴリズム、性能の最適化、及びメモリコントローラのトレーニングのうちの少なくとも1つに基づき生成される。いくつかの実施例において、第1メモリアドレスは第1データタイプ(例えば、動的データ)に対応しており、第2メモリアドレスは第2データタイプ(例えば、静的データ)に対応している。例えば、書き込み動作を均一に分布させるために、頻繁に書き込む必要のあるデータを静的データに対応する第1メモリに代わって動的データに対応する第2メモリに書き込めば、第1メモリの寿命を延長させられる。
【0136】
図13は、実施例に基づき記載した代表的なメモリ1300である。いくつかの実施例において、コンピューティングメモリ1300は、メモリアレイ1302、2次バッファ1304及び検出回路1306を含む。いくつかの実施例において、コンピューティングメモリ1300は、コンピューティングメモリ100又はコンピューティングメモリ200の素子と組み合わされる。いくつかの実施例において、コンピューティングメモリ1300は、メモリコントローラ800、コンピューティングシステム900、コンピューティングシステム1000又はコンピューティングシステム1100の素子と組み合わされる。いくつかの実施例において、コンピューティングメモリ1300は、AIシステム、ニューラルネットワークシステム、IoTシステム、カーエレクトロニクスシステム、マイクロコントローラシステム、移動通信システム、プログラム制御可能なコンピューティングシステム、ハードウェアセキュリティシステム、テレマティクスシステム、バイオメディカル電子機器、ロボット及び無人航空機といった電子製品のいずれかに含まれる。
【0137】
いくつかの実施例において、コンピューティングメモリ1300は複数の動作モードに設定可能である。いくつかの実施例において、コンピューティングメモリ1300は、ページモード、ランダムアクセスモード及びストリーミングモードのうちの少なくとも1つに設定可能である。いくつかの実施例において、当該コンピューティングメモリ1300は、受信した命令に応答して動作モードを変更し、例えば、第1モードから第2モードへと変更する。例えば、第1モードは、ページモード、ランダムアクセスモード及びストリーミングモードのうちの少なくとも1つであり、第2モードは、第1モードとは異なるページモード、前記ランダムアクセスモード及びストリーミングモードのうちの少なくとも1つである。一例として、当該コンピューティングメモリは、第1モード(ページモード、ランダムアクセスモード及びストリーミングモード等のいずれか)で実行してもよいし、第2モード(第1モードとは異なるページモード、ランダムアクセスモード及びストリーミングモード等のいずれか)で実行してもよい。また、別の事例として、当該コンピューティングメモリの第1部分を第1モード(ページモード、ランダムアクセスモード及びストリーミングモード等のいずれか)で実行し、当該コンピューティングメモリの第2部分を第2モード(第1モードとは異なるページモード、ランダムアクセスモード及びストリーミングモード等のいずれか)で実行する。上記のモードで実行される際に、当該コンピューティングメモリは当該モードに対応する読み取り又は書き込み動作を実行する。
【0138】
いくつかの実施例において、コンピューティングメモリの実行を第1モードから第2モードに変更する入力は、使用態様(例えば、空間的局所性、時間的局所性)、命令頻度、アドレスシーケンスの頻度、又はコンピューティングメモリの重要性に基づいて実行する。いくつかの実施例において、動作変更の入力は、コンピューティングメモリ(例えば、主制御チップからの明確な命令がない)により判定する。いくつかの実施例では、使用態様(例えば、空間的局所性、時間的局所性)、命令頻度、アドレスシーケンスの頻度、又は動作の重要性に基づいて、コンピューティングメモリ1300が、動作モードの最適な配列、関連する動作パラメータ(例えば、ページ長、データワードサイズ)、アドレスマッピング、メモリコントローラのスケジューリングポリシー、クロック周波数及び電力モードを判定することで、メモリアクセスに関連するシステム性能を最適化する。いくつかの実施例において、上記の構成は、コンピューティングメモリ1300、又は別のコンピューティングメモリ、又は別のデバイス(例えば、主制御チップ)に格納されている。いくつかの実施例において、コンピューティングメモリ1300の動作の最適化(例えば、どのモードによる動作かの判定、動作パラメータの判定、アドレスマッピングの判定)は、周期的に評価されるか、最適化命令受信時に評価される。上記による代表的な利点として、いくつかの実施例において、当該コンピューティングメモリ1300はMRAMを含み、且つ、異なる動作モードを切り替える能力を有する。よって、コンピューティングメモリ1300は、当該プロセッサ-メモリインターフェースの制約を解消可能であり、且つ、性能-電力指標を内蔵メモリのソリューションにいっそう近付けることが可能である。
【0139】
上記によるその他の代表的な利点として、コンピューティングメモリ1300は、メモリコントローラ、MRAM及びDRAM(例えば、ビットセルを含む異なる種類のメモリアレイ1302)が連携して複雑なデータ構造及び応用ニーズ(例えば、ニューラルネットワークへの応用)に適応する一段と優れたメモリシステム構成(例えば、より高い統合性を有するシステム)を可能とするため、システム性能が大幅に向上する。
【0140】
いくつかの実施例において、ページモードは、コンピューティングメモリ1300の第1ページ長に対応している。当該コンピューティングメモリ1300がページモードで実行されている際に受信した命令によって、当該ページモードに対応するページ長が変更されると、コンピューティングメモリ1300は、そのページモードを第2ページ長に対応させるよう構成を更新する。例えば、調整可能なページ長及び境界によって第2ページ長を第1ページ長と異ならせることで、大きなページサイズ又は不適切なページ境界による未使用データ及び対応の対応を減少させることが可能である。いくつかの実施例において、第1ページ長は、予め設定されたアドレス位置に対応する予め設定されたページ長であり(例えば、DRAMに対応するページ長、一緒にアクセスされる列全体のビットセル)、第2ページ長はプログラム制御により調整可能なページ長に対応している。いくつかの実施例において、ページ長及びページ長に対応するパラメータは、レジスタ又はコンピューティングメモリ1300のメモリ(例えば、不揮発性レジスタ、不揮発性メモリ)に記憶される。
【0141】
例えば、ページ長及びパラメータは、セルフラーニングにより最適化される(例えば、コンピューティングメモリは、アクセス態様、記録されているアクセス態様に基づいて、ここで開示するその他の方法を使用してセルフトレーニングを行う)。また、ページ長及びパラメータは内部メモリ(例えば、不揮発性メモリ、メモリ812)に記憶される。上記による代表的な利点として、セルフラーニングにより取得したメモリ構成情報をコンピューティングメモリシステムの不揮発性メモリ内に記憶することで、電力が存在しない場合にも前記情報を保持可能であり、アクセスする度に再学習したり再度書き込んだりする必要がない。よって、有利に性能が向上し、且つ、構成情報へのアクセスに関連するメモリの電力消費が減少する。このほか、SRAMのようなその他のメモリタイプと比較して、同様の容量の不揮発性メモリは一般的に必要な面積が少ないため、チップ面積を節約できるとの利点を有し得る。いくつかの実施例では、コンピューティングメモリがページモードで実行されている際に、受信した列命令に応答して、コンピューティングメモリ1300はアクティブページ(Active Page)上の当該列命令に対応するデータワードにアクセス(例えば、読み取り、書き込み)する。
【0142】
いくつかの実施例では、コンピューティングメモリがページモードで実行されている際に、コンピューティングメモリ1300は、アクティブページ(Active Page)(例えば、予め設定されたページ長のページ、プログラム制御可能な規定ページ長のページ)にアクセス(例えば、読み取り、書き込み)する。いくつかの実施例において、コンピューティングメモリが当該ページモードで実行されている際に、当該コンピューティングメモリのページの一部はアクティブ状態(Activated state。読み取り、書き込み動作を実行可能)となり、別の部分はプリチャージ状態(Precharge state。アクティブとならなければ読み取り、書き込み動作を行できない)となる。
【0143】
いくつかの実施例では、コンピューティングメモリ1300がランダムアクセスモードで実行される場合、アクセスされるデータワード(前記「ページ」とは異なる)はプログラム可能な設計長を有する。いくつかの実施例において、データワードは1ビットから1024ビットの間の長さを有する。いくつかの実施例において、データワードのサイズは、予め設定しておくか、動作時に調整可能とする(例えば、主制御チップが使用態様や動作の重要性に基づいて設定する)。例えば、主制御チップからの要求データのワード長に応じて、コンピューティングメモリ1300は、内部のアクセス動作のワード長を調整することでアクセス時間及び関連する電力消費を最適化可能である。主制御チップは、少なくとも、中央処理装置(CPU)、グラフィックスプロセッサ(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、加速器集積回路(accelerator IC)、特定用途向け集積回路(ASIC)及びプロセッサのいずれかである。いくつかの実施例では、コンピューティングメモリ1300がランダムアクセスモードで実行される際に、コンピューティングメモリ100を動作させる方法、又はコンピューティングメモリ200を使用することで、より迅速にデータにアクセス可能となる。
【0144】
いくつかの実施例において、コンピューティングメモリ1300がストリーミングモードで実行され、且つコンピューティングメモリ1300がプログラム制御可能なアドレスシーケンスを使用してデータにアクセス(例えば、読み取り、書き込み)するよう構成されている場合、当該プログラム制御可能なアドレスシーケンスはデータシーケンスに対応している(例えば、当該データに連続的にアクセスする)。上記による代表的な利点として、ストリーミングモードのデータシーケンスに対応するアドレスシーケンスをプログラム制御することで、不要なデータ読み取り動作を回避可能となり(例えば、当該プログラム制御で規定されるアドレスは読み取りが必要なデータにのみ対応する)、複雑なデータ構造を有するデータの高帯域幅出力が達成される。
【0145】
いくつかの実施例において、コンピューティングメモリ1300がストリーミングモードで動作し、且つコンピューティングメモリ1300が予め設定されたアドレスシーケンスを使用してアクセス(例えば、読み取り、書き込み)するよう構成されている場合、当該予め設定されたアドレスシーケンスはコンピューティングメモリ内のデータシーケンスに対応している(例えば、当該データに連続的にアクセスする)。
【0146】
いくつかの実施例では、ストリーミングモードでのメモリへのアクセス開始前に、前記予め設定されたアドレス又はプログラム制御されるアドレスがコンピューティングメモリ1300内(例えば、コンピューティングメモリ1300の不揮発性メモリ)に記憶される。予め設定されたアドレスシーケンス又はプログラム制御されるアドレスシーケンスは、セルフラーニング(例えば、コンピューティングメモリは、アクセス態様、記録されているアクセス態様に基づいて、ここで開示するその他の方法を使用してセルフトレーニングを行う)によって生成される。また、予め設定されたアドレスシーケンス又はプログラム制御で規定されるアドレスシーケンスは内部メモリ内(例えば、不揮発性メモリ、メモリ812)に記憶される。上記による代表的な利点として、コンピューティングメモリシステムの不揮発性メモリ内にアドレスシーケンスを記憶することで、電力が存在しない場合にも当該情報を保持可能であり、アクセスする度に当該情報を再学習したり、再度書き込んだりする必要がない。よって、性能が向上し、且つ、アドレスシーケンスへのアクセスに関連するメモリの電力消費が減少するとの利点を有する。このほか、SRAMのようなその他のメモリタイプと比較して、不揮発性メモリは一般的にバイトあたりに必要な面積が少ないため、チップ面積を節約できるとの利点を有し得る。
【0147】
いくつかの特定の事例では、コンピューティングメモリがストリーミングモードの場合(例えば、記憶されているニューラルネットワークモデルに使用される場合)、前記アドレスシーケンスのデータ量は大変大きくなる。メモリの起動時にこれらのシーケンスをロードするには時間を要するため、一部のストリーミングシーケンスの最適化(例えば、低電力エッジチップセットに用いられる)で得られる加速が相殺される。そこで、不揮発性メモリを使用して当該シーケンスを記憶すれば、この遅延が減少又は除去され、且つアドレスシーケンスへのアクセス時に対応する電力消費が低減するとの利点が得られる。いくつかの実施例において、コンピューティングメモリ1300に対応するアドレスはマッピングを実施可能である(例えば、コンピューティングメモリ1100の素子を使用する)。例えば、コンピューティングメモリ1300は、要求データに対応する第1アドレスを受信し、且つ、第1アドレスとは異なる第2アドレスのデータにアクセスする。要求された当該データはコンピューティングメモリの第2アドレスに記憶され、且つ、受信した第1アドレスがコンピューティングメモリの第2アドレスにマッピングされる(例えば、ウェアレベリング回路1104の判定に基づいてアドレスマッピングブロック1106を使用する)。いくつかの実施例において、第1アドレスから当該第2アドレスへのマッピングは、使用態様(例えば、トレーニング(例えば、セルフトレーニング)、ユーザの入力、使用態様(例えば、空間的局所性、時間的局所性)の分析)、命令頻度、アドレスシーケンスの頻度、又はコンピューティングメモリの動作の重要性(例えば、アクセス性能を最適化し、メモリコントローラの複雑性を隠して性能を向上させることで、メモリアレイ1302の寿命を伸ばす)に基づいて最適化される。例えば、使用態様を記録して、頻繁に使用される命令及び/又はアドレスシーケンス及びデータブロックを識別することで、コンピューティングメモリ1300はアドレスマッピングを並び替え可能となり、いっそうの高性能化及び更なる低電力との利点が得られる。いくつかの実施例において、主制御チップ又はメモリコントローラは、(例えば、インターフェースにおいて)アドレスマッピングをプログラム制御する情報を生成する。いくつかの実施例において、コンピューティングメモリ1300は、アドレスマッピングをプログラム制御する情報を自動的に生成する。
【0148】
いくつかの実施例では、コンピューティングメモリ1300がページモード又はランダムアクセスモードの場合、当該コンピューティングメモリ1300はデータワードのプリフェッチ動作を実施可能である。例えば、コンピューティングメモリ1300は、データワードに対応する列命令(column command)を受信する前にデータをプリフェッチするよう構成される。また、別の事例として、主制御チップからの入力を必要とせずにデータを提供する(例えば、主制御チップがデータを要求する前に)。このデータ出力をそれ以前のアクセス態様やメモリコントローラのトレーニングに基づいて予め設定しておくことで、システムは、より迅速なメモリアクセス及び更なる高性能との利点を有する。いくつかの実施例において、データワードのプリフェッチ位置は、コンピューティングメモリに電気的に接続される主制御チップが予め設定して、コンピューティングメモリ(例えば、不揮発性メモリ、メモリ812)に記憶したものの少なくとも1つである。また、例えば、当該データのプリフェッチ位置は、予め設定するのではなく、セルフラーニングによるものとする。例えば、コンピューティングメモリは、アクセス態様、記録されているアクセス態様に基づいて、ここで開示するその他の方法を使用してセルフトレーニングを行い、当該データのプリフェッチ位置の列を内部メモリ(例えば、不揮発性メモリ、メモリ812)に記憶する。上記による代表的な利点として、コンピューティングメモリシステムの不揮発性メモリにセルフラーニング情報を記憶することで、電力が存在しない場合にもプリフェッチ情報を保持可能であり、アクセスする度に再学習したり、再度書き込んだりする必要がない。よって、性能が向上し、且つ、プリフェッチ関連情報へのアクセスに関連するメモリの電力消費が減少するとの利点を有する。このほか、SRAMのようなその他のメモリタイプと比較して、不揮発性メモリは一般的に必要な面積が少ないため、チップ面積を節約できるとの利点を有し得る。
【0149】
いくつかの実施例において、メモリアレイ1302は、MRAM、DRAM、SRAM、RRAM、FRAM、フラッシュメモリ及びPCMのうちの少なくとも1つを含む。いくつかの実施例において、メモリアレイ1302は少なくとも1つのメモリバンクを含む。いくつかの実施例において、2次バッファ1304は、メモリアレイ1302からのアクセスデータ(例えば、検出回路1306により検出される)を格納するよう構成される。いくつかの実施例において、2次バッファ1304は、コンピューティングメモリ1300の動作モード(例えば、コンピューティングメモリのモード)に従って構成可能である。例えば、コンピューティングメモリ1300の一部がページモードの場合、2次バッファの対応部分(例えば、いくつかの実施例では、2次バッファを複数の部分に分割し、各々を別の動作モードに対応させる)はページバッファ又はロウバッファ(row buffer)として構成される。また、コンピューティングメモリ1300の一部がランダムアクセスモードの場合、2次バッファ1304の対応部分はキャッシュメモリとして構成される。また、コンピューティングメモリ1300の一部がストリーミングモードの場合、2次バッファ1304の対応部分は先入れ先出し(FIFO)データバッファとして構成される。上記による代表的な利点として、コンピューティングメモリ1300を使用する場合、構成可能な2次バッファは、要求されたデータをフェッチするとともに、未使用のデータを未読とマーク可能なため、電力消費が低減するとの利点を有する。これに対し、周知のロウバッファは、行全体のデータをフェッチし、且つ大多数のデータが主制御チップにとって不要なことから、無駄に電力を消費するとの欠点がある。いくつかの実施例において、検出回路1306は、電圧を検出又は増幅するよう構成されるセンスアンプを含む。当該電圧は、選択されたビットセルの状態に対応している。例えば、検出回路1306は、ラッチI/Oバッファ又はラッチセンスアンプを含む。理解すべき点として、ここで使用した「センスアンプ」との用語は限定的なものではなく、任意の回路又はハードウェアを示し得る。
【0150】
図14は、実施例に基づき記載した代表的なメモリ1400の状態図である。いくつかの実施例において、状態図はコンピューティングメモリ1300の代表的な状態を示す。図示するように、メモリは、オンになると起動し、且つリセットステップを有する。ここで記載するように、メモリは、起動後にデータチャネルのトレーニングステップ(図示しない)を開始して、主制御チップとの高速データ接続を構築する。続いて、メモリはIDLE(待機)状態となって、主制御チップからの更なる命令を待つ。メモリは、主制御チップからのモードレジスタ設定命令を受信すると、対応する動作を実行してモードレジスタ書き込み状態に進む。いくつかの実施例では、モードレジスタ書き込み状態の期間に、メモリは内部レジスタ値の修正(例えば、レジスタ値の設定)に関連するいくつかの状態に進む。例えば、これらの状態には、モードパラメータ書き込み又はモードパラメータリセットが含まれる。いくつかの実施例において、メモリは、主制御チップからの命令を受信して内部レジスタ(図示しない)の値を読み取るように構成される。
【0151】
いくつかの実施例において、メモリは、IDLE(待機)状態から、対応する動作モード(例えば、ランダムアクセスモード、ストリーミングモード、ページモード)の分岐へ進むことが可能である。いくつかの実施例では、動作モードの1つが予め設定されたモードとなっている。いくつかの実施例において、メモリは、ランダム読み取り/書き込み状態に進み、且つ関連のランダムデータアクセス命令を完了したあとIDLE(待機)状態に戻る。いくつかの実施例において、メモリは、別途自動的に(例えば、明確な外部命令がない場合に)プリフェッチ動作を実行する。ランダム読み取り/書き込み状態に進んだあと、メモリは内部キャッシュメモリからのデータのフェッチを試みる。いくつかの実施例において、メモリは、ページモードにおいて、ロウバッファ(例えば、ロウバッファ又はページバッファとして構成される2次バッファ1304)に対するビットセルの1ページ(例えば、列全体)の読み込み及び書き込み(例えば、1ページの書き込み)を含むページアクティブ化動作(例えば、読み取り、書き込み)を実行することで、アクティブ状態(Active State)に進む。アクティブ状態が開始されると、メモリは、読み取り又は書き込み状態に進み(例えば、対応する読み取り又は書き込み命令の受信に応答)、且つ当該状態から戻ることが可能である。いくつかの実施例では、IDLE(待機)状態に戻るために、メモリはプリチャージ動作を実行してプリチャージ状態(Precharge State)に進む。いくつかの実施例において、メモリは、MRAM、RRAM、PCM、FRAM、フラッシュメモリ又はその他の不揮発性メモリである。いくつかの実施例において、ロウバッファのデータが書き込み動作によって変更されなかった場合には、プリチャージ動作を省略可能である。
【0152】
いくつかの実施例において、メモリは、ストリーミングモードに対応する読み取り又は書き込み命令を受信したあと、ストリーミング読み取り/書き込み状態に進む。このモードにおいて、メモリは、中止命令を受信するまで、ビットセルからのデータを連続的に読み取るか、データをビットセルに書き込む。いくつかの実施例において、予め設定されたアドレスに到達するか、アドレスシーケンスの予め設定された長さに到達するか、アドレスシーケンスの終端に到達するか、主制御チップからの中止命令を受信すると、ストリーミング読み取り/書き込み動作を中止する。いくつかの実施例において、予め設定されたアドレス、アドレスシーケンスの予め設定された長さ、又はアドレスシーケンスは内部メモリ(例えば、メモリ812、不揮発性メモリ)又はレジスタに記憶されている。当該ストリーミング読み取り/書き込み動作の中止後に、メモリはストリーミング中止状態に進む。メモリは、ストリーミング中止状態からIDLE(待機)状態に戻ることが可能である。また、いくつかの実施例において、メモリはモードトレーニング状態に進む。いくつかの実施例では、この状態において、メモリはメモリのアクセス態様を記録し、セルフラーニングアルゴリズム(例えば、コンピューティングメモリに内蔵されている)によって、プリフェッチアドレスシーケンス、ページ長、ストリーミングアドレスシーケンス、アドレスマッピング、及びその他パラメータを最適化する。いくつかの実施例において、当該アルゴリズムの結果は、内部メモリ(例えば、メモリ812、不揮発性メモリ)に記憶される。いくつかの実施例において、メモリは、主制御チップの命令に応答するか、動作の切り替えに応答するか、内部トリガ(例えば、コンピューティングメモリからのトリガ)に応答してモードトレーニング状態に進む。いくつかの実施例では、複数の命令に対応する動作効率を周期的に記録し、記録された効率を所定値と比較することで、当該内部トリガを設定する。
【0153】
図15は、実施例に基づき記載したメモリを動作させる代表的な方法1500である。方法1500は、図示のステップを含むと記載しているが、本発明に違反しない範囲において、方法1500は、異なるステップの順序、追加のステップ、又はより少ないステップを実行して当該代表的なコンピューティングメモリを動作させてもよいし、ここで開示するその他の方法を使用して方法1500を実行してもよい。いくつかの実施例では、方法1500を使用して、コンピューティングメモリ100、200、812、1300を動作させる。いくつかの実施例において、方法1500は、第1モードでメモリを動作させることを含む(ステップ1502)。例えば、コンピューティングメモリ1300は、ページモード、ランダムアクセスモードのうちの少なくとも1つで動作する。いくつかの実施例において、方法1500は、入力命令を受信したときに、コンピューティングメモリの動作を第1モードから第2モードに変更することを含む(ステップ1504)。例えば、コンピューティングメモリ1300は、ページモード、ランダムアクセスモードのうちの少なくとも1つで動作し、且つ入力を受信することで異なるモード動作に変更される。
【0154】
いくつかの実施例において、方法1500は、コンピューティングメモリの動作を第1モードから第2モードに変更する入力命令の受信に応答して、コンピューティングメモリの動作モードを当該第2モード(第1モードとは異なる)に変更することを含む(ステップ1506)。いくつかの実施例において、第1モードは、ページモード、ランダムアクセスモード及びストリーミングモードのうちの少なくとも1つであり、第2モードは、ページモード、ランダムアクセスモード及びストリーミングモードのうちの少なくとも1つである。また、別の事例として、第1モードにおいて、当該コンピューティングメモリの第1部分は、ページモード、ランダムアクセスモード及びストリーミングモードのいずれかで実行され、当該コンピューティングメモリの第2部分は、ページモード、ランダムアクセスモード及びストリーミングモードのいずれかで実行される。且つ、第2モードにおいて、当該コンピューティングメモリの第1部分は、上記とは異なるページモード、前記ランダムアクセスモード及びストリーミングモードのいずれかで実行され、当該コンピューティングメモリの第2部分は、上記とは異なるページモード、ランダムアクセスモード及びストリーミングモードのいずれかで実行される。いずれかの上記モードで実行されている際に、当該コンピューティングメモリは当該特定のモードに対応する読み取り又は書き込み動作を実行する。
【0155】
いくつかの実施例において、コンピューティングメモリの実行を第1モードから第2モードに変更する入力命令は、使用態様(例えば、空間的局所性、時間的局所性)、命令頻度、アドレスシーケンスの頻度、又はコンピューティングメモリの重要性に基づいて生成される。いくつかの実施例において、動作モード変更の入力は、コンピューティングメモリによって(例えば、主制御チップからの明確な命令がない場合)判定される。いくつかの実施例では、使用態様(例えば、空間的局所性、時間的局所性)、命令頻度、アドレスシーケンスの頻度、又は動作の重要性に基づいて、コンピューティングメモリ1300が、動作モードの最適な配列、関連する動作パラメータ(例えば、ページ長、データワードサイズ)、アドレスマッピング、メモリコントローラのスケジューリングポリシー、クロック周波数及び電力モード等を判定することで、メモリアクセスに関連するシステム性能を最適化する。
【0156】
いくつかの実施例において、上記の構成は、コンピューティングメモリ1300、又は個別のコンピューティングメモリ、又は別のデバイス(例えば、主制御チップ)に格納されている。いくつかの実施例において、コンピューティングメモリ1300は、周期的に、又は最適化要求命令を受信したときに、動作の最適化(例えば、どのモードによる動作かの判定、動作パラメータの判定、アドレスマッピングの判定)を行う。上記による代表的な利点として、いくつかの実施例において、当該コンピューティングメモリ1300はMRAMを含み、且つ、異なる動作モードを切り替える能力を有する。よって、スタンドアロンのMRAMチップは、当該プロセッサ-メモリインターフェースの制約を解消可能であり、且つ、性能-電力指標を内蔵メモリのソリューションにいっそう近付けることが可能である。
【0157】
上記によるその他の代表的な利点として、コンピューティングメモリ1300は、メモリコントローラ、MRAM及びDRAM(例えば、ビットセルを含む異なる種類のメモリアレイ1302)が連携して複雑なデータ構造及び応用ニーズ(例えば、ニューラルネットワークへの応用)に適応する優れたメモリシステム構成(例えば、より高い統合性を有するシステム)を可能とするため、システム性能が大幅に向上する。
【0158】
いくつかの実施例において、ページモードは、コンピューティングメモリの第1ページ長に対応している。方法1500は、更に、当該コンピューティングメモリがページモードで実行されている際に、当該ページモードに対応するページ長の変更を要求する入力命令の受信に応答して、第2ページ長に対応するよう当該ページモードの構成を変更することを含む。例えば、コンピューティングメモリ1300のページ長及び境界は、第2ページ長を第1ページ長よりも小さくするというようにプログラム制御が可能である。これにより、無用なデータへのアクセス及び大きなページ長に対応する遅延が減少するとの利点が得られる。いくつかの実施例において、第1ページ長は、予め設定されたページ長(例えば、DRAM基準に対応するページ長)であり、且つ予め設定されたアドレス位置に対応している。また、第2ページ長は、プログラム制御可能なアドレス位置に対応するプログラム制御可能なページ長である。
【0159】
いくつかの実施例において、方法1500は、コンピューティングメモリがページモードで実行されている際に、列命令(column command)を受信し、当該列命令(column command)に応答してコンピューティングメモリ1300のアクティブページ上の対応するデータにアクセス(例えば、読み取り、書き込み)することを含む。いくつかの実施例において、コンピューティングメモリがページモードで実行される場合、方法1500は、アクティブページ(Active Page)にアクセス(例えば、読み取り、書き込み)することを含む。いくつかの実施例において、コンピューティングメモリが前記ページモードで実行される場合、データページの第1部分はアクティブ状態となり(例えば、読み取り、書き込みや、その他のアクセス動作を実行可能)、データページの第1部分はプリチャージ状態となる。また、いくつかの実施例において、コンピューティングメモリがランダムアクセスモードで実行される際に、アクセスされるデータワード(ページとは異なる)はプログラム制御可能な長さを有する。いくつかの実施例において、データワードの長さは1ビットから1024ビットの間である。いくつかの実施例において、データワードの長さは、予め設定されるか、プログラム制御される(例えば、主制御チップが使用態様や動作の重要性に基づいて設定する)。例えば、主制御チップからのデータ要求に応じて(例えば、主制御チップは、少なくとも、中央処理装置(CPU)、グラフィックスプロセッサ(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、加速器集積回路(accelerator IC)、特定用途向け集積回路(ASIC)及びプロセッサのいずれかである)、コンピューティングメモリ1300は、有利にデータワードの長さを調整することでアクセス時間及びデータ要求に関連する電力消費を最適化可能である。いくつかの実施例では、コンピューティングメモリ1300がランダムアクセスモードで実行される際に、コンピューティングメモリ100を動作させる方法、又はコンピューティングメモリ200を使用することで、データに迅速にアクセスするとの利点を有し得る。
【0160】
いくつかの実施例において、コンピューティングメモリがストリーミングモードで動作しており、且つ、方法1500が、プログラム制御可能なアドレスシーケンスを使用してアクセス(例えば、読み取り、書き込み)動作を行うことを含む場合、当該プログラム制御可能なアドレスシーケンスはデータシーケンスに対応している(例えば、当該データに連続的にアクセスする)。上記による代表的な利点として、ストリーミングモードのアドレスシーケンスをプログラム制御することで、ページアクティブ化動作を使用する必要がなくなる。また、複雑なデータ構造条件において、不要なデータ読み取り動作が回避される(例えば、当該プログラムで規定されるアドレスは必要なデータのアクセスにのみ対応する)。よって、低消費電力、高帯域幅出力との利点が得られる。いくつかの実施例において、コンピューティングメモリ1300はストリーミングモードで実行される。また、コンピューティングメモリ1300は、予め設定されたアドレスシーケンスを使用してアクセス(例えば、読み取り、書き込み)するよう構成される。当該予め設定されたアドレスシーケンスは、コンピューティングメモリ内のデータシーケンスに対応している。いくつかの実施例において、ストリーミングモードのメモリの動作を開始する前に、当該予め設定されたアドレスシーケンス又はプログラム制御されるアドレスシーケンスがコンピューティングメモリ1300内(例えば、コンピューティングメモリ1300の不揮発性メモリ)に記憶される。
【0161】
いくつかの実施例において、方法1500は、コンピューティングメモリのアドレスのマッピング切り替えを含む(例えば、コンピューティングメモリ1100の素子、方法1200のステップを使用する)。例えば、コンピューティングメモリ1300は、データ要求に対応する第1アドレスを受信して、第2アドレス(第1アドレスからマッピングされ、第1アドレスとは異なる)のデータにアクセスする。要求された当該データはコンピューティングメモリの第2アドレスに記憶され、受信した第1アドレスはコンピューティングメモリの第2アドレスにマッピングされる(例えば、ウェアレベリング回路1104の判定に基づいてアドレスマッピングブロック1106を使用する)。いくつかの実施例において、第1アドレスから当該第2アドレスへのマッピングは、使用態様、又は命令周波数、又はアドレスシーケンスの頻度、又はコンピューティングメモリの動作の重要性に基づき、セルフトレーニング、ユーザの入力、使用態様の分析等により生成される。こうすることで、上記のアドレスマッピングを含む方法1500は、アクセス性能が最適化され、メモリアレイ1302の寿命が延び、且つメモリコントローラの複雑性が隠されるとの利点を有する。例えば、使用態様を記録して、頻繁に使用される命令及び/又はアドレスシーケンス及びデータブロックを識別することで、コンピューティングメモリ1300はアドレスマッピングを並び替え可能となり、いっそうの高性能化及び更なる低電力を達成するとの利点が得られる。いくつかの実施例において、主制御チップ又はメモリコントローラは、(例えば、インターフェースにおいて)アドレスマッピングを設定する。いくつかの実施例において、コンピューティングメモリ1300は自動的にアドレスマッピングを設定する。
【0162】
いくつかの実施例において、前記コンピューティングメモリが前記ページモード又は前記ランダムアクセスモードの場合、方法1500は、データをプリフェッチ(prefetch)することを含む。例えば、コンピューティングメモリ1300は、データワードに対応する列命令(column command)を受信する前にデータワードをプリフェッチするよう構成される。また、別の事例として、主制御チップからの入力を必要とせずにデータを提供する。或いは、主制御チップがデータ出力を要求する前にデータの読み取りを開始する。以前のアクセス態様及びメモリコントローラのトレーニングに基づき、まもなく要求されるデータを予測してデータをプリフェッチすることで、より迅速にメモリにアクセス可能となり、システム性能が向上する。いくつかの実施例において、データワードのプリフェッチ位置は、コンピューティングメモリに電気的に接続される主制御チップが予め設定するか、当該主制御チップによりプログラム設定されて、コンピューティングメモリ(例えば、コンピューティングメモリの内部メモリ、コンピューティングメモリの不揮発性メモリ)に記憶される。
【0163】
いくつかの実施例において、方法1500に対応するコンピューティングメモリのメモリアレイは、MRAM、DRAM、SRAM、RRAM、FRAM、フラッシュメモリ及びPCMのうちの少なくとも1つを含む。メモリアレイ1502は少なくとも1つのメモリバンクを含む。例えば、2次バッファ1304は、メモリアレイ1302のデータ(例えば、検出回路1306により検出される)を格納するよう構成される。いくつかの実施例において、2次バッファ1304は、コンピューティングメモリ1300の動作モード(例えば、コンピューティングメモリのモード)に従って構成を変更可能である。例えば、コンピューティングメモリ1300の一部がページモードの場合、2次バッファの対応部分(例えば、いくつかの実施例では、2次バッファを複数の部分に分割し、各々を別の動作モードに対応させる)はページバッファ又はロウバッファとして構成される。また、コンピューティングメモリ1300の一部がランダムアクセスモードの場合、2次バッファ1304の対応部分はキャッシュメモリとして構成される。また、コンピューティングメモリ1300の一部がストリーミングモードの場合、2次バッファ1304の対応部分は先入れ先出し(FIFO)データバッファとして構成される。いくつかの実施例において、方法1500は、コンピューティングメモリでアクセスしたデータを検出、増幅、又はラッチすることを含む。例えば、検出回路1306は、アクセスされたビットセルの状態(例えば、データ出力)に対応する電圧を検出又は増幅するよう構成されるセンスアンプを含む。例えば、検出回路1306は、ラッチI/Oバッファ又はラッチセンスアンプを含む。
【0164】
図16は、実施例に基づき記載したコンピューティングデバイス1600の事例である。いくつかの実施例において、デバイス1600は、本発明で開示するシステムに接続されるよう構成されるとともに、ここで開示する動作方法を実行するよう構成される。デバイス1600は、ネットワークに接続されるホストコンピュータとすることができる。また、デバイス1600は、クライアントコンピュータ又はサーバとすることができる。
図16に示すように、デバイス1600は、例えば、専用コンピューティングデバイス、パソコン、ワークステーション、サーバ、例えば電話又はタブレットのようなハンドヘルドコンピューティングデバイス(ポータブル電子デバイス)、AI(人工知能)デバイス、又はニューラルネットワークデバイスといった任意のタイプのマイクロプロセッサ式デバイスとすることができる。いくつかの実施例において、デバイス1600はコンピューティングシステム900又は1000を含む。当該デバイスは、例えば、プロセッサ1602、入力装置1606、出力装置1608、ストレージ1610及び通信装置1604のうちの少なくとも1つを含む。入力装置1606及び出力装置1608は、コンピュータに接続してもよいし、コンピュータに統合してもよい。
【0165】
入力装置1606は、例えば、カメラセンサ、タッチスクリーン、キーボード又はキーパッド、マウス又は音声認識装置といった入力に供し得る任意の装置である。出力装置1608は、例えば、照明器具、タッチスクリーン、ハプティクスデバイス又はスピーカといった出力に供される任意の装置とすることができる。ストレージ1610は、RAMを含む電気、磁気又は光学メモリ、キャッシュメモリ、ハードディスク、又はリムーバブルハードディスクといった記憶に供される任意の装置とすることができる。いくつかの事例において、前記ストレージ1610は、メモリシステム100、200、800又は1300を含む。通信装置1604は、ネットワークインターフェースチップ又はデバイスといったネットワーク上で信号を伝送及び受信する任意の適切な装置を含み得る。コンピュータのコンポーネントは、例えばフィジカルバス(Bus)又はワイヤレス接続といった任意の適切な方式で接続可能である。
【0166】
ソフトウェア1612は、ストレージ1610に格納可能であり、且つプロセッサ1610により実行される。ソフトウェア1612は、例えば本発明の機能を実現するプログラムを含み得る。ソフトウェア1612は、任意の非一時的なものに格納及び/又は伝送可能である。また、コンピュータは記憶媒体内を読み取って、上記のコンピューティングデバイスで使用するために提供可能である。当該コンピューティングデバイスは、ソフトウェアの命令をフェッチして実行することが可能である。本発明の説明において、コンピュータが読み取る記憶媒体は、コンピューティングシステム又はデバイスが使用するプログラムを含むか格納するストレージ1610のような任意の媒体とすることができる。この読み取り可能な媒体は、電子、磁気、光学、電磁又は赤外線の有線又は無線伝送媒体を含み得るが、これらに限らない。
【0167】
デバイス1600は、任意の相互接続の通信ネットワークに接続可能である。また、当該通信ネットワークには任意の通信プロトコルを採用可能である。デバイス1600は、ネットワーク上での動作に適した任意のオペレーティングシステムで実現可能である。また、ソフトウェア1612は、C、C++、Java又はPythonといった任意の適切なプログラミング言語で実現可能である。なお、ここでは、電気的な接続又は接続を使用して、本発明の回路システムにおける素子同士の電気的接続について説明したが、当該電気的接続は、素子の基端の直接的な接続を要求するものではない。本発明に違反しない範囲において、前記素子の異なる組み合わせや接続によって、一定の電流及び調節可能なバイアス電圧を達成できればよい。また、別の事例において、メモリの特徴に影響を及ぼさず、且つ本発明に違反しない範囲であれば、素子間の電気接続経路にバッファ、増幅器及び受動回路素子を追加してもよい。
【0168】
ここで使用する「略」(substantially)との用語は、素子又は数値の理想的状況に限定した特徴(例えば、一定の、同一の、一致する、等しい、類似の、比率の)を説明するものであるが、実際には「理想的状況における特徴」と同等の場合を含み得る。例えば、説明内の素子又は数値が略一定である又は一致しているとは、当該一定の値又は一致性から逸脱してもよく、その逸脱がシステムの許容範囲内(例えば、精度要求等)であればよいことを意味し得る。また、別の事例において、ここで説明する2つの素子又は数値が略等しいとは、ほぼ等しくてもよく、その差が許容範囲内であり、且つシステムの動作機能に影響しなければよい。同様に、ここで説明したいくつかの素子又は数値には「略」との記載を用いていないが、これらの素子及び数値は、その特徴が機能的に「理想的状況における特徴」と同等であればよいと解釈すべきである。例えば、いくつかの実施例において、記載されている比率が1であったとしても、比率は1より大きくても小さくてもよく、例えば精度要求を満たすというように、その比率がシステムの許容範囲内であればよい。
【0169】
一局面において、メモリアクセスの方法には、メモリアレイのワード線にアクセスすることが含まれる。メモリアレイのワード線にアクセスした状態で、センスアンプは第1ビット線に電気的に接続されて、メモリアレイ内の当該ワード線及び第1ビット線に対応する第1ビットセルのデータにアクセスする。また、同一のセンスアンプが第2ビット線に電気的に接続される。
【0170】
上記方法のいくつかの局面において、当該方法は、更に、同一のセンスアンプがメモリアレイ内の前記ワード線及び第2ビット線に対応する第2ビットセルのデータにアクセスすることを含む。
【0171】
上記方法のいくつかの局面では、同一のセンスアンプによって第1メモリビットセル及び第2メモリビットセルを検出する。
【0172】
上記方法のいくつかの局面において、第2ビット線にアクセスする動作には、第2ビット線にアクセスするのと同時に第1ビット線にアクセスすることが含まれる。
【0173】
上記方法のいくつかの局面において、当該方法は、更に、第1メモリビットセルの検出に基づいて第1メモリビットセルの状態に対応する第1データ出力を生成し、この第1データをデータバッファに格納することを含む。
【0174】
上記方法のいくつかの局面において、当該方法は、更に、メモリアレイ内の前記ワード線及び第2ビット線に対応する第2ビットセルのデータにアクセスすることを含む。第2メモリビットセルの検出に基づいて、第2メモリビットセルの状態に対応する第2データ出力を生成し、この第2データをデータバッファに格納する。第1データ出力の格納と第2データ出力の格納との間の時間差は、第1メモリビットセルの検出と第2メモリビットセルの検出との間の遅延である。
【0175】
上記方法のいくつかの局面において、ワード線及び第1ビット線はメモリアレイの第1アドレスに対応している。また、前記方法は、更に以下を含む。即ち、メモリアドレスを受信し、メモリアドレスが第1アドレスか否かを判定する。次に、判定結果に基づいて、メモリアドレスが第1アドレスであれば、データバッファから第1データ出力を送出する。また、メモリアドレスが第1アドレスでない場合には、データバッファから第1データ出力を送出しない。
【0176】
上記方法のいくつかの局面において、第1出力をデータバッファに格納することには、データバッファに第1データ出力をラッチすることが含まれる。また、前記方法は、更に、第1データ出力のラッチに応答して、第1データ出力を準備完了状態とマークすることを含む。そして、第1出力データのマーク判定に基づいて、準備完了状態であればデータバッファから第1データ出力を送出する。
【0177】
上記方法のいくつかの局面において、第1データ出力を準備完了状態とマークすることには、第1データ出力に対応するタグビットを準備完了状態値に設定することが含まれる。
【0178】
上記方法のいくつかの局面では、第1データ出力がプリフェッチされ、且つ、メモリにアクセスする主制御チップからメモリアドレスを受信しない。
【0179】
上記方法のいくつかの局面において、当該方法は、更に以下を含む。即ち、メモリアドレスを受信し、メモリアドレスが第1アドレスとは異なる第2アドレスか否かを判定する。そして、メモリアドレスが第2アドレスであるとの判定結果に基づいてビット線のアクセス順序を更新し、メモリアドレスが第2アドレスではないとの判定結果に基づいてビット線のアクセス順序を更新しない。また、ビット線のアクセス順序の更新に応答して、センスアンプは、第2ビット線に電気的に接続されて、第2アドレスに対応するワード線及び第2ビット線にアクセスする。
【0180】
上記方法のいくつかの局面において、当該方法は、更に以下を含む。即ち、データ出力がデータバッファにラッチされているか否かを判定する。そして、データ出力がデータバッファにラッチされていないとの判定に基づいて、第2アドレスに対応するデータ出力を準備未了状態とマークする。また、データ出力がデータバッファにラッチされているとの判定に基づいて、第2アドレスに対応するデータ出力を準備未了状態とはマークしない。且つ、第2アドレスに対応するデータ出力が準備未了状態であるとのマークに応答するために、センスアンプに対応する第2ビット線にアクセスする。
【0181】
上記方法のいくつかの局面において、第2データ出力を準備未了状態とマークすることには、第2データ出力に対応するタグビットを準備未了状態値とマークすることが含まれる。
【0182】
上記方法のいくつかの局面において、当該方法は、更に以下を含む。即ち、基準電圧を生成し、ワード線及び第2ビット線に対応するメモリアレイ内の第2メモリビットセルを検出する。メモリアレイ内の第1メモリビットセルを検出することには、構築済みの定電圧と基準電圧との差を増幅することが含まれる。当該構築済みの定電圧は第1メモリビットセルの状態に対応している。また、メモリアレイ内の第2メモリビットセルを検出することには、構築済みの定電圧と基準電圧との差を増幅することが含まれる。当該構築済みの定電圧は第2メモリビットセルの状態に対応している。
【0183】
上記方法のいくつかの局面において、当該方法は、更に、基準電圧の生成を停止して、第1メモリビットセル及び第2メモリビットセルの検出が完了するまで基準電圧を保持することを含む。
【0184】
上記方法のいくつかの局面では、キャパシタを使用して基準電圧を保持する。
【0185】
上記方法のいくつかの局面において、当該方法は、更に、メモリアレイのワード線にアクセスするのと同時に、第1メモリビットセルの状態に対応する構築済みの定電圧をサンプリング及び保持することを含む。
【0186】
上記方法のいくつかの局面において、構築済みの定電圧をサンプリング及び保持することには、更に、サンプルアンドホールド回路を使用し、且つサンプルアンドホールド回路に注入される電荷を低減させることが含まれる。
【0187】
上記方法のいくつかの局面において、第1及び第2メモリビットセルは、磁気抵抗ランダムアクセスメモリ(MRAM)ビットセル、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、抵抗変化型メモリ(RRAM)、強誘電体メモリ(FRAM)、フラッシュメモリ、及び相変化メモリ(PCM)のいずれかである。
【0188】
上記方法のいくつかの局面において、第1ビット線はメモリアレイの第1ビット線群に属しており、第2ビット線はメモリアレイの第2ビット線群に属している。
【0189】
上記方法のいくつかの局面において、第1メモリビットセルの状態は第1出力ワードに対応しており、第2メモリビットセルの状態は第2出力ワードに対応している。
【0190】
上記方法のいくつかの局面において、第1メモリビットセル及び第2メモリビットセルの有効信号値は、第1メモリビットセル及び第2メモリビットセルの個々の状態を示す。
【0191】
上記方法のいくつかの局面において、有効信号値は、有効抵抗、電荷、及び出力電圧のいずれかである。
【0192】
上記方法のいくつかの局面において、メモリはページモードで動作する。当該方法は、更に以下を含む。即ち、メモリの動作をページモードからランダムアクセスモードに切り替え、メモリアレイの第2ワード線にアクセスする。また、メモリアレイの第2ワード線にアクセスするのと同時に、センスアンプに対応する第3ビット線にアクセスし、同一のセンスアンプに対応するその他のビット線にはアクセスしない。
【0193】
一局面において、メモリは、上記いずれかの方法を実行するよう構成される。
【0194】
上記メモリのいくつかの局面において、メモリは、エッジAIシステム(edge AI system)、ニューラルネットワークシステム(neural-network system)、IoTシステム(internet-of-things system)、カーエレクトロニクスシステム、マイクロコントローラシステム(microcontroller system)、移動通信システム(mobile communication system)、プログラマブルコンピューティングシステム(programmable computing system)、ハードウェアセキュリティシステム(hardware security system)、テレマティクスシステム(telematics system)、バイオメディカル電子機器(biomedical electronics device)、ロボット(robot)及び無人航空機(drone)から選択されるいずれかのシステムを含む。
【0195】
一局面において、メモリコントローラは、主制御チップと通信するよう構成される第1インターフェースと、主制御チップの第1メモリと通信するよう構成され、主制御チップの第1メモリが第1データタイプを記憶するよう構成される第2インターフェースと、第1インターフェース及び第2インターフェースに接続されて、主制御チップの第1メモリに命令を発するよう構成されるコントローラと、第1データタイプとは異なる第2データタイプを記憶するよう構成される第2メモリと、第1インターフェース及び第2インターフェースに接続されるとともに、第1インターフェースと第2インターフェースの間で第1データタイプのデータを伝送するよう構成される第1データバッファと、第2メモリ及び第1インターフェースに接続されるとともに、第1インターフェースと第2メモリの間で第2データタイプのデータを伝送するよう構成される第2データバッファ、を含む。
【0196】
上記メモリコントローラのいくつかの局面において、前記第1データタイプは動的データである。
【0197】
上記メモリコントローラのいくつかの局面において、前記第2データタイプは静的データである。
【0198】
上記メモリコントローラのいくつかの局面において、前記第1データバッファはダイナミックランダムアクセスメモリ(DRAM)バッファである。
【0199】
上記メモリコントローラのいくつかの局面において、前記第2データバッファは静的データバッファである。
【0200】
上記メモリコントローラのいくつかの局面において、第1メモリは、ダイナミックランダムアクセスメモリ(DRAM)、高性能揮発性メモリ(high performance volatile memory)、スタティックランダムアクセスメモリ(SRAM)、フラッシュメモリ(FLASH)、強誘電体メモリ(FRAM)、抵抗変化型メモリ(RRAM)のうちの少なくとも1つである。
【0201】
上記メモリコントローラのいくつかの局面において、第2メモリは、ダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリ(FLASH)、強誘電体メモリ(FRAM)、抵抗変化型メモリ(RRAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、不揮発性メモリ (non-volatile memory)及び高密度メモリのうちの少なくとも1である。
【0202】
上記メモリコントローラのいくつかの局面において、第1インターフェースに対応する通信は、ダブルデータレート(DDRx)、低電力ダブルデータレート(LPDDRx)、グラフィックスダブルデータレート(GDDRx)、高帯域幅メモリ(HBM)及び高速メモリアクセスチャネルといったメモリアクセスチャネルのいずれかである。
【0203】
上記メモリコントローラのいくつかの局面において、第2インターフェースは、シリコン貫通電極(TSV)を使用して第1メモリに接続されるよう構成される。
【0204】
上記メモリコントローラのいくつかの局面において、第2データバッファはキャッシュメモリ構造(cache memory structure)に位置する。
【0205】
上記メモリコントローラのいくつかの局面において、主制御チップは、中央処理装置(CPU)、グラフィックスプロセッサ(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、加速器集積回路(accelerator integrated circuit)、特定用途向け集積回路(ASIC)及びその他のプロセッサのうちの少なくとも1つである。
【0206】
上記メモリコントローラのいくつかの局面において、前記第2データタイプは主制御チップにより定義される。
【0207】
上記メモリコントローラのいくつかの局面において、第1メモリ及び第2メモリは同一のチップに位置する。
【0208】
上記メモリコントローラのいくつかの局面において、第1インターフェースは、更に、第1アドレスマッピングテーブルに対応しており、第1メモリアドレスを第2メモリアドレスにマッピング(map)するよう構成されるアドレスマッピングブロック(address mapping block)と、第1アドレスマッピングを第2アドレスマッピングに更新するよう構成されるウェアレベリング回路(wear-leveling circuit)、を含む。メモリコントローラは、第1メモリアドレスのデータへのアクセス要求の受信に応答して、第2メモリアドレスにアクセスするよう構成される。
【0209】
上記メモリコントローラのいくつかの局面では、ウェアレベリング回路が、アドレスマッピング更新要求の受信に応答して、更新後の第2アドレスマッピングテーブルに基づき、第1メモリアドレスを第3メモリアドレスにマッピングすることを含む。
【0210】
上記メモリコントローラのいくつかの局面において、第1メモリアドレスは第1データタイプに対応しており、第2メモリアドレスは第2データタイプに対応している。
【0211】
上記メモリコントローラのいくつかの局面において、コントローラ及び第1データバッファは単一の素子に統合される。
【0212】
上記メモリコントローラのいくつかの局面において、メモリコントローラは、エッジAIシステム(edge AI system)、ニューラルネットワークシステム(neural-network system)、IoTシステム(internet-of-things system)、カーエレクトロニクスシステム、マイクロコントローラシステム(microcontroller system)、移動通信システム(mobile communication system)、プログラマブルコンピューティングシステム(programmable computing system)、ハードウェアセキュリティシステム(hardware security system)、テレマティクスシステム(telematics system)、バイオメディカル電子機器(biomedical electronics device)、ロボット(robot)及び無人航空機(drone)から選択されるいずれかを含む。
【0213】
一局面において、コンピューティングシステムは、第1メモリ、主制御チップ、及び、第1メモリ及び主制御チップに接続される請求項27~43のいずれか1項に記載されるメモリコントローラを含む。
【0214】
一局面において、方法は、メモリコントローラによりデータアクセス要求を受信し、アクセス中のデータのデータタイプを判定し、データが第1データタイプであるとの判定に基づき、メモリコントローラを使用して第1メモリにアクセスし、データが第2データタイプであるとの判定に基づき、メモリコントローラの第2メモリにアクセスすることを含む。
【0215】
上記方法のいくつかの局面において、メモリコントローラは上記いずれかのタイプのメモリコントローラである。
【0216】
一局面において、方法は以下を含む。即ち、第1モードでメモリを動作させる。第1モードは、ページモード(page mode)、ランダムアクセスモード及びストリーミングモード(streaming mode)のうちの少なくとも1つを含む。また、第1動作モードにおいて、入力を受信してメモリの動作を第1モードとは異なる第2モードに変更する。第2モードは、ページモード、ランダムアクセスモード及びストリーミングモードのうちの少なくとも1つを含む。メモリの動作を第1モードから第2モードに変更するとの入力の受信に応答して、第2モードでメモリを動作させる。
【0217】
上記方法のいくつかの局面において、第1モードはページモードを含み、当該ページモードはメモリの第1ページサイズを有する。また、第2モードはページモードを含み、当該ページモードはメモリの第2ページサイズを有する。
【0218】
上記方法のいくつかの局面において、当該方法は、更に、ページサイズに対応する情報と、ページサイズに対応するパラメータをレジスタ(register)又は不揮発性メモリ(non-volatile memory)に記憶することを含む。
【0219】
上記方法のいくつかの局面において、当該方法は、更に、メモリからデータを出力し、データを2次データバッファ(secondary data buffer)に格納することを含む。2次データバッファは、メモリがページモードの場合にはページバッファ(page buffer)となり、メモリがランダムアクセスモードの場合にはキャッシュメモリとなり、メモリがストリーミングモードの場合には先入れ先出し(first-in-first-out)データバッファとなるよう構成される。
【0220】
上記方法のいくつかの局面において、メモリがランダムアクセスモードで動作する場合、当該方法は、更に、プログラムによりサイズを変更可能なデータワード(programmable size)にアクセスすることを含む。
【0221】
上記方法のいくつかの局面において、メモリがストリーミングモードで動作する場合、当該方法は、更に、プログラマブルなアドレスシーケンスを使用してメモリにアクセスすることを含む。当該プログラマブルなアドレスシーケンスはデータシーケンスに対応している。
【0222】
上記方法のいくつかの局面において、当該方法は、更に、アドレスシーケンスを不揮発性メモリに記憶することを含む。
【0223】
上記方法のいくつかの局面において、当該方法は、メモリに記憶されている要求されたデータに対応する第1アドレスを受信し、メモリの第2アドレスのデータにアクセスする。要求されたデータはメモリの第2アドレスに記憶され、受信した第1アドレスはメモリの第2アドレスにマッピングされる。
【0224】
上記方法のいくつかの局面において、当該方法は、更に、メモリの使用態様(usage pattern)に基づいて、第1アドレスを第2アドレスにマッピングすることを含む。
【0225】
上記方法のいくつかの局面において、メモリは、磁気抵抗ランダムアクセスメモリ(MRAM)ビットセル、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、抵抗変化型メモリ(RRAM)、強誘電体メモリ(FRAM)、フラッシュメモリ、及び相変化メモリ(PCM)のうちの少なくとも1つを含む。
【0226】
上記方法のいくつかの局面において、メモリを第1モードから第2モードに変更する動作の入力は、メモリの使用態様に基づいて決定される。
【0227】
上記方法のいくつかの局面において、メモリを第1モードから第2モードに変更する動作の入力は、メモリ自体の判定に基づく。
【0228】
上記方法のいくつかの局面において、当該方法は、更に、メモリがページモードで動作している際に、列命令(column command)を受信し、受信した列命令に応答して、アクティブページ(active page)上の列命令に対応するデータワード(data words)にアクセスすることを含む。
【0229】
上記方法のいくつかの局面では、更に、データワードに対応する列命令を受信する前に、データワードをプリフェッチ(prefetching)することを含む。
【0230】
上記方法のいくつかの局面において、データワードのプリフェッチ位置は、メモリにアクセスする主制御チップによって予め設定するか、主制御チップの演算プログラムにより決定するか、のうちの少なくとも1つであり、不揮発性メモリに記憶される。
【0231】
上記方法のいくつかの局面において、データワードのプリフェッチ位置はメモリ自体によって判定される。
【0232】
上記方法のいくつかの局面において、メモリがページモード又はランダムアクセスモードの場合に、前記データワードをプリフェッチする。
【0233】
一局面において、メモリは、上記いずれかの方法を実行するよう構成される。
【0234】
上記メモリのいくつかの局面において、メモリは、エッジAIシステム(edge AI system)、ニューラルネットワークシステム(neural-network system)、IoTシステム(internet-of-things system)、カーエレクトロニクスシステム、マイクロコントローラシステム(microcontroller system)、移動通信システム(mobile communication system)、プログラマブルコンピューティングシステム(programmable computing system)、ハードウェアセキュリティシステム(hardware security system)、テレマティクスシステム(telematics system)、バイオメディカル電子機器(biomedical electronics device)、ロボット(robot)及び無人航空機(drone)から選択されるいずれかを含む。
【0235】
開示した実施例について図面を参照して完全に説明したが、当業者であれば、各種の変更及び改良を行い得る点に注意されたい。また、この種の変更及び改良は、開示した実施例の範囲に含まれるとともに、後述する特許請求の範囲により定義されると解釈すべきである。ここで述べた各実施例で使用した用語は、特定の実施例の説明を目的としたものにすぎず、権利範囲を制限するものではない。また、ここで述べた各実施例及び後述の特許請求の範囲では、別途説明する場合を除き、単数形の用語はその複数形を含むことを意図している。また、ここで使用した「及び/又は」との用語は、記載した用語の少なくとも1つの任意及び既存の可能な組み合わせを指し、且つそれを含むと解釈すべきである。また、本明細書で使用した「含む」との用語は、記載する特徴、整数、ステップ、動作、素子、及び/又はコンポーネントの存在を意味するが、少なくとも1つのその他の上記特徴、整数、ステップ、動作、素子、コンポーネント、及び/又はそれらの組み合わせの存在又は追加を排除するものではない。