図面 (/)

技術 メモリベースの分散型プロセッサアーキテクチャ

出願人 ニューロブレード リミテッド
発明者 シティ、エラドヒレル、エリアド
出願日 2018年7月30日 (2年6ヶ月経過) 出願番号 2020-505784
公開日 2020年10月8日 (4ヶ月経過) 公開番号 2020-529676
状態 未査定
技術分野 マルチプロセッサ ハードウェアの冗長性
主要キーワード メイン論理 人工知能アルゴリズム サブシリーズ オフダイ 部分接続 空間的分散 連続コマンド 欲張りアルゴリズム
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年10月8日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題・解決手段

本開示は、分散型プロセッサと、分散型プロセッサによって実行されるコードをコンパイルする方法と、を含む。一実装では、分散型プロセッサは、基板と、基板に配置されるメモリアレイと、基板に配置される処理アレイと、を含み得る。メモリアレイは複数の個別のメモリバンクを含み得て、処理アレイは複数のプロセッササブユニットを含み得る。複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる。分散型プロセッサはさらに、各々が複数のプロセッササブユニットの1つを自らの対応する専用メモリバンクに接続する第1の複数のバスと、各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別のプロセッササブユニットに接続する第2の複数のバスとを含み得る。

概要

背景

本開示は全体的に、メモリ負荷の高い動作を促進する装置に関する。詳細には、本開示は、専用メモリバンクに連結される処理要素を含むハードウェアチップに関する。背景情報

プロセッサの速度が上がり続け、メモリサイズの大型化が続く場合、効果的な処理速度に対する著しい制限がフォンノイマンボトルネックとなる。フォンノイマンボトルネックは、従来のコンピュータアーキテクチャに起因するスループット限界から生じる。詳細には、プロセッが着手する実際の計算に比べ、メモリからプロセッサまでのデータ転送がボトルネックになることが多い。したがって、メモリから読み込みおよび書き込みをするクロックサイクル数は、メモリ負荷の高い処理に伴い著しく増える。このような増えたクロックサイクル数は処理速度の効率をかなり悪くする。これは、メモリからの読み込みおよび書き込みがデータ演算用に使用できないクロックサイクル消費してしまうためである。さらに、プロセッサの計算帯域幅は、プロセッサがメモリにアクセスするために使用するバスの計算帯域幅よりも一般的にかなり広い。

これらのボトルネックは、ニューラルネットワークおよび、データベース構築インデックスサーチクエリといったその他の機械学習アルゴリズム、および、データ処理動作というよりはむしろ読み込みおよび書き込み動作を含むその他のタスク、などメモリ負荷の高い処理で特に顕著である。

その上、利用可能なデジタルデータ量の急増、および利用可能なデジタルデータ粒度により、機械学習アルゴリズムを開発する機会が創出され、新しい技術が可能になった。ところが、このことはさらに、データベースおよび並列計算の世界に扱いにくい難題をもたらしている。例えば、ソーシャルメディアおよびモノインターネットIoT)の台頭により、記録的な速度でデジタルデータが創出されている。この新しいデジタルデータは、新しい広告技法から工業プロセスのより正確な制御法まで多岐にわたるアルゴリズムを様々な目的で作成するのに使用することができる。しかしながら、この新しいデジタルデータは、記憶、処理、解析、および取り扱いが困難である。

新しいデータ資源は、場合によってはペタバイトからゼタバイトの順に大容量になり得る。さらに、これらのデータ資源の増加速度データ処理能力を上回る可能性がある。したがって、データサイエンティストたちは、こうした難題に取り組むために、並列データ処理技術に救いを求めた。計算能力を高めるために、および大容量のデータを処理するために、データサイエンティストたちは負荷の高い並列処理を可能にするシステムおよび方法を創出することに努めている。しかし、こうした現存するシステムおよび方法はデータ処理要件に追いついていない。現存するシステムおよび方法がデータ管理用追加リソースを要求したり、分離されたデータを統合したり、分割されたデータを解析したりすることによって、利用される技術が制限されているというのが大きな理由である。

大容量データセットの処理を促進するために、エンジニアおよびサイエンティストたちは現在、データ解析に使用されるハードウェアを改善しようと努めている。例えば、算術演算ではなくメモリ操作により適合した技術で製造される単一基板内にメモリ機能および処理機能を組み込むことによって、新しい半導体プロセッサまたは半導体チップ(例えば本明細書で記載されるもの)をデータ量の多いタスク用に特別に設計することができる。データ量の多いタスク用に特別に設計された集積回路を用いれば、新しいデータ処理要件を満たすことが可能になる。しかしながら、大容量データセットのデータ処理に取り組むこうした新しいアプローチには、チップ設計およびチップ製造における新しい問題を解決することが求められる。例えば、データ量の多いタスク用に設計された新しいチップが通常のチップ用に使用される製造技術および製造アーキテクチャで製造された場合、新しいチップは低性能および/または不適格歩留りを有することになろう。さらに、新しいチップが現在のデータ処理法で動作するように設計された場合、新しいチップは低性能を有することになろう。なぜなら、現在のデータ処理法は並列演算を処理するチップの能力を制限する可能性があるためである。

本開示は、上記の1または複数の問題、とりわけ先行技術における問題を軽減または克服するための解決策を記載する。

概要

本開示は、分散型プロセッサと、分散型プロセッサによって実行されるコードをコンパイルする方法と、を含む。一実装では、分散型プロセッサは、基板と、基板に配置されるメモリアレイと、基板に配置される処理アレイと、を含み得る。メモリアレイは複数の個別のメモリバンクを含み得て、処理アレイは複数のプロセッササブユニットを含み得る。複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる。分散型プロセッサはさらに、各々が複数のプロセッササブユニットの1つを自らの対応する専用メモリバンクに接続する第1の複数のバスと、各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別のプロセッササブユニットに接続する第2の複数のバスとを含み得る。

目的

本開示と一致する実施形態は、ハードウェア処理チップを含む装置を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

分散型プロセッサであって、基板と、前記基板に配置されるメモリアレイであって、前記メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、前記基板に配置される処理アレイであって、前記処理アレイが複数のプロセッササブユニットを有し、前記複数のプロセッササブユニットの各々が前記複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、第1の複数のバスであって、各バスが前記複数のプロセッササブユニットの1つをその対応する専用メモリバンクに接続する、第1の複数のバスと、第2の複数のバスであって、各バスが前記複数のプロセッササブユニットの1つを前記複数のプロセッササブユニットの別のプロセッササブユニットに接続する、第2の複数のバスとを備える分散型プロセッサ。

請求項2

前記基板が半導体基板である、請求項1に記載の分散型プロセッサ。

請求項3

前記基板が回路基板である、請求項1または2に記載の分散型プロセッサ。

請求項4

前記処理アレイの前記複数のプロセッササブユニットが前記メモリアレイの前記複数の個別のメモリバンク間に空間的に分散される、請求項1から3のいずれか一項に記載の分散型プロセッサ。

請求項5

チップ上の前記分散型プロセッサが人工知能アクセラレータプロセッサである、請求項1から4のいずれか一項に記載の分散型プロセッサ。

請求項6

前記複数のプロセッササブユニット内に含まれる他のプロセッササブユニットに対して独立した特定のアプリケーションと関連付けられるソフトウェアコードを前記複数のプロセッササブユニットの各々が実行するように構成される、請求項1から5のいずれか一項に記載の分散型プロセッサ。

請求項7

前記複数のプロセッササブユニットが少なくとも1つの行および少なくとも1つの列内に配置され、前記第2の複数のバスが、各プロセッササブユニットを同じ行における少なくとも1つの隣接するプロセッササブユニットおよび同じ列における少なくとも1つの隣接するプロセッササブユニットに接続する、請求項1から6のいずれか一項に記載の分散型プロセッサ。

請求項8

前記複数のプロセッササブユニットがスター型パターンで配置され、前記第2の複数のバスが各プロセッササブユニットを前記スター型パターン内の少なくとも1つの隣接するプロセッササブユニットに接続する、請求項1から7のいずれか一項に記載の分散型プロセッサ。

請求項9

各プロセッササブユニットが少なくとも2つの専用メモリバンクと関連付けられる、請求項1から8のいずれか一項に記載の分散型プロセッサ。

請求項10

各専用メモリバンクが少なくとも1つのダイナミックランダムアクセスメモリを含む、請求項1から9のいずれか一項に記載の分散型プロセッサ。

請求項11

メモリチップであって、基板と、前記基板に配置されるメモリアレイであって、前記メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、前記基板に配置される処理アレイであって、前記処理アレイが複数の論理部分を有し、各論理部分がアドレスジェネレータを含み、複数の前記アドレスジェネレータの各々が前記複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、各バスが前記複数のアドレスジェネレータの1つをその対応する専用メモリバンクに接続する、複数のバスとを備えるメモリチップ。

請求項12

各アドレスジェネレータが、前記アドレスジェネレータに対応するメモリバンク内で処理するためにアクセスされるアドレスを決定するように構成される、請求項11に記載のメモリチップ。

請求項13

前記処理アレイがさらに複数のアクセラレータを有し、各アクセラレータが、対応するアドレスジェネレータと関連付けられ、前記各アクセラレータが特定の機能を実行するように構成される、請求項11または12に記載のメモリチップ。

請求項14

前記特定の機能が乗累算機能、最小機能、最大機能、比較機能、またはカウント機能を含む、請求項13に記載のメモリチップ。

請求項15

前記メモリチップが、DRAMメモリチップ、FlashメモリチップSRAMメモリチップ、ReRAMメモリチップ、PRAMメモリチップ、MRAMメモリチップまたはROMメモリチップの少なくとも1つである、請求項13または14に記載のメモリチップ。

請求項16

各プロセッササブユニットが縮小命令セットコンピュータRISC)プロセッサ、または複雑命令セットコンピュータCISC)プロセッサを含む、請求項11から15のいずれか一項に記載のメモリチップ。

請求項17

外部ホストに接続されるメモリインタフェースをさらに含む、請求項11から16のいずれか一項に記載のメモリチップ。

請求項18

前記メモリインタフェースが、少なくとも1つの電子素子技術連合評議会JEDEC規格準拠したインタフェースまたはその変種のインタフェースを含む、請求項17に記載のメモリチップ。

請求項19

前記複数の論理部分の各々が前記複数の個別のメモリバンクの少なくとも1つのメモリバンクに対応し、複数のメモリマットが前記複数の個別のメモリバンクの単一メモリバンク内に含まれ、単一メモリマットが前記複数の個別のメモリバンクの単一メモリバンク内に含まれる、請求項11から18のいずれか一項に記載のメモリチップ。

請求項20

分散型プロセッサであって、基板と、前記基板に配置されるメモリアレイであって、前記メモリアレイが複数の個別のメモリバンクを有し、前記複数の個別のメモリバンクの各々が1メガバイトよりも大きい容量を有する、メモリアレイと、前記基板に配置される処理アレイであって、前記処理アレイが複数のプロセッササブユニットを有し、前記複数のプロセッササブユニットの各々が前記複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイとを備える分散型プロセッサ。

請求項21

第1の複数のバスであって、各々が前記複数のプロセッササブユニットの1つを、対応する専用メモリバンクに接続する、第1の複数のバスと、第2の複数のバスであって、各々が前記複数のプロセッササブユニットの1つを前記複数のプロセッササブユニットの別の1つに接続する、第2の複数のバスと、をさらに備える、請求項20に記載の分散型プロセッサ。

請求項22

各専用メモリバンクが少なくとも1つのダイナミックランダムアクセスメモリバンクを含む、請求項20または21に記載の分散型プロセッサ。

請求項23

各専用メモリバンクが少なくとも1つのスタティックランダムアクセスメモリバンクを含む、請求項20から22のいずれか一項に記載の分散型プロセッサ。

請求項24

各専用メモリバンクが同じサイズである、請求項20から23のいずれか一項に記載の分散型プロセッサ。

請求項25

前記複数の個別のメモリバンクのうち少なくとも2つが異なるサイズを有する、請求項20から24のいずれか一項に記載の分散型プロセッサ。

請求項26

前記複数のプロセッササブユニットが前記メモリアレイ内の前記複数の個別のメモリバンク間に空間的に分散される、請求項20から25のいずれか一項に記載の分散型プロセッサ。

請求項27

前記基板が半導体基板を有する、請求項20から26のいずれか一項に記載の分散型プロセッサ。

請求項28

分散型プロセッサであって、基板と、前記基板に配置されるメモリアレイであって、前記メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、前記基板に配置される処理アレイであって、前記処理アレイが複数のプロセッササブユニットを有し、前記複数のプロセッササブユニットの各々が前記複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、前記複数のバスの各々が前記複数のプロセッササブユニットの1つを前記複数のプロセッササブユニットの少なくとも別の1つに接続する、複数のバスと、を備え、前記複数のバスにはタイミンハードウェア論理コンポーネントがなく、その結果、プロセッササブユニット間の、および前記複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない、分散型プロセッサ。

請求項29

前記複数のバスにはバスアービタがなく、その結果、プロセッササブユニット間、および前記複数のバスのうち対応するバス全体にわたるデータ転送がバスアービタによって制御されない、請求項28に記載の分散型プロセッサ。

請求項30

前記複数のバスが、前記複数のプロセッササブユニットの対応するプロセッササブユニット間にワイヤまたは光ファイバの少なくとも1つを有する、請求項28または29に記載の分散型プロセッサ。

請求項31

前記複数のプロセッササブユニットが、前記複数のプロセッササブユニットによって実行されるコードに従って、前記複数のバスの少なくとも1つにわたりデータを転送するように構成される、請求項28から30のいずれか一項に記載の分散型プロセッサ。

請求項32

前記コードが、前記複数のバスの少なくとも1つにわたるデータ転送のタイミングを規定する、請求項31に記載の分散型プロセッサ。

請求項33

第2の複数のバスをさらに含み、前記第2の複数のバスの各々が前記複数のプロセッササブユニットの1つを、対応する専用メモリバンクに接続する、請求項28から32のいずれか一項に記載の分散型プロセッサ。

請求項34

前記第2の複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニットと、対応する専用メモリバンクとの間のデータ転送がタイミングハードウェア論理コンポーネントによって制御されない、請求項33に記載の分散型プロセッサ。

請求項35

前記第2の複数のバスにはバスアービタがなく、その結果、プロセッササブユニットと、対応する専用メモリバンクとの間のデータ転送がバスアービタによって制御されない、請求項33に記載の分散型プロセッサ。

請求項36

前記複数のプロセッササブユニットが前記メモリアレイ内の前記複数の個別のメモリバンク間に空間的に分散される、請求項28から35のいずれか一項に記載の分散型プロセッサ。

請求項37

前記基板が半導体基板を含む、請求項28から36のいずれか一項に記載の分散型プロセッサ。

請求項38

メモリチップ上の分散型プロセッサであって、基板と、前記基板に配置されるメモリアレイであって、前記メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、前記基板に配置される処理アレイであって、前記処理アレイが複数のプロセッササブユニットを有し、前記複数のプロセッササブユニットの各々が前記複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、前記複数のバスの各々が前記複数のプロセッササブユニットの1つを前記複数の個別のメモリバンクの対応する専用の1つに接続する、複数のバスと、を備え、前記複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニットと、前記複数の個別のメモリバンクの対応する専用の1つとの間のデータ転送、および前記複数のバスの対応する1つのバス全体にわたるデータ転送が、タイミングハードウェア論理コンポーネントによって制御されない、メモリチップ上の分散型プロセッサ。

請求項39

分散型プロセッサであって、基板と、前記基板に配置されるメモリアレイであって、前記メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、前記基板に配置される処理アレイであって、前記処理アレイが複数のプロセッササブユニットを有し、前記複数のプロセッササブユニットの各々が前記複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、前記複数のバスの各々が前記複数のプロセッササブユニットの1つを前記複数のプロセッササブユニットの少なくとも別の1つのプロセッササブユニットに接続する、複数のバスと、を備え、前記複数のプロセッササブユニットが、前記複数のバス全体にわたるデータ転送のタイミングを制御するソフトウェアを実行することで、前記複数のバスの少なくとも1つのバス上でデータ転送が衝突しないように構成される、分散型プロセッサ。

請求項40

メモリチップ上の分散型プロセッサであって、基板と、前記基板に配置される複数のプロセッササブユニットであって、各プロセッササブユニットが他のプロセッササブユニットから独立した一連命令を実行するように構成され、各一連の命令が単一プロセッササブユニットによって実行される一連のタスクを定義する、複数のプロセッササブユニットと、前記基板に配置される対応する複数のメモリバンクであって、前記複数のプロセッササブユニットの各々が、前記複数のプロセッササブユニットの他のあらゆるプロセッササブユニットによって共有されない少なくとも1つの専用メモリバンクに接続される、対応する複数のメモリバンクと、複数のバスであって、前記複数のバスの各々が前記複数のプロセッササブユニットの1つを前記複数のプロセッササブユニットの少なくとも他の1つのプロセッササブユニットに接続する、複数のバスと、を備え、前記複数のバスの少なくとも1つのバス全体にわたるデータ転送が、前記複数のバスの前記少なくとも1つに接続されるプロセッササブユニット内に含まれる前記一連の命令によって予め定義される、メモリチップ上の分散型プロセッサ。

請求項41

各一連の命令が、対応する一連のタスクを定義するマシンコードのセットを含む、請求項40に記載のメモリチップ上の分散型プロセッサ。

請求項42

前記一連のタスクは、一連の上位タスクを複数の一連のタスクとして複数の論理回路間に分散させるように構成されるコンパイラによって定義される、請求項41に記載のメモリチップ上の分散型プロセッサ。

請求項43

前記一連の上位タスクが、人間が読めるプログラミング言語における命令のセットを含む、請求項42に記載のメモリチップ上の分散型プロセッサ。

請求項44

前記複数のバスの前記少なくとも1つのバスに接続される前記プロセッササブユニット内に含まれる前記一連の命令が送信タスクを含み、前記送信タスクは、前記複数のバスの前記少なくとも1つのバスに接続される前記プロセッササブユニットが前記複数のバスの前記少なくとも1つのバスにデータを書き込むためのコマンドを含む、請求項40から43のいずれか一項に記載のメモリチップ上の分散型プロセッサ。

請求項45

前記複数のバスの前記少なくとも1つのバスに接続される前記プロセッササブユニット内に含まれる前記一連の命令が受信タスクを含み、前記受信タスクは、前記複数のバスの前記少なくとも1つのバスに接続される前記プロセッササブユニットが前記複数のバスの前記少なくとも1つのバスからデータを読み出すためのコマンドを含む、請求項40から44のいずれか一項に記載のメモリチップ上の分散型プロセッサ。

請求項46

メモリチップ上の分散型プロセッサであって、前記メモリチップ上に配置される複数のプロセッササブユニットと、前記メモリチップ上に配置される複数のメモリバンクであって、前記複数のメモリバンクの各々が、前記複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、前記複数のプロセッササブユニットの各々が前記複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続される、複数のメモリバンクと、複数のバスであって、前記複数のバスの各々が前記複数のプロセッササブユニットの1つを前記複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を備え、前記複数のバスのうち特定のバス全体にわたるデータ転送が、前記複数のバスの前記特定のバスに接続される対応するプロセッササブユニットよって制御される、メモリチップ上の分散型プロセッサ。

請求項47

前記複数のメモリバンクの各々に記憶される前記データが、前記複数のメモリバンク間にデータを分散させるように構成されるコンパイラによって定義される、請求項46に記載のメモリチップ上の分散型プロセッサ。

請求項48

前記コンパイラが、対応するプロセッササブユニット間に分散された複数の下位タスクを利用して、一連の上位タスク内に定義されるデータを前記複数のメモリバンク間に分散させるように構成される、請求項47に記載のメモリチップ上の分散型プロセッサ。

請求項49

前記一連の上位タスクが、人間が読めるプログラミング言語における命令のセットを含む、請求項48に記載のメモリチップ上の分散型プロセッサ。

請求項50

前記一連の下位タスクが、マシンコードにおける命令のセットを含む、請求項48または49に記載のメモリチップ上の分散型プロセッサ。

請求項51

メモリチップ上の分散型プロセッサであって、前記メモリチップ上に配置される複数のプロセッササブユニットと、前記メモリチップ上に配置される複数のメモリバンクであって、前記複数のプロセッササブユニットの各々が前記複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続され、前記複数のメモリバンクの各メモリバンクが、前記複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、前記複数のメモリバンク間から1つの特定のメモリバンク内に記憶される少なくともいくつかのデータが、前記複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含む、複数のメモリバンクと、複数のバスであって、前記複数のバスの各々が前記複数のプロセッササブユニットの1つを前記複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を備え、前記複数のバスのうち特定のバス全体にわたるデータ転送が、前記複数のバスの前記特定のバスに接続される対応するプロセッササブユニットよって制御される、メモリチップ上の分散型プロセッサ。

請求項52

前記複数のメモリバンク、および前記複数のメモリバンクの前記少なくとも別のメモリバンク間から前記1つの特定のメモリバンク全体にわたり複製される前記少なくともいくつかのデータが、メモリバンク全体にわたりデータを複製するように構成されるコンパイラによって定義される、請求項51に記載のメモリチップ上の分散型プロセッサ。

請求項53

前記複数のメモリバンク、および前記複数のメモリバンクの前記少なくとも別のメモリバンク間から前記1つの特定のメモリバンク全体にわたり複製される前記少なくともいくつかのデータが、ニューラルネットワークウェイトを含む、請求項51または52に記載のメモリチップ上の分散型プロセッサ。

請求項54

前記ニューラルネットワークにおけるノードの各々が、前記複数のプロセッササブユニット間から少なくとも1つのプロセッササブユニットによって定義される、請求項53に記載のメモリチップ上の分散型プロセッサ。

請求項55

ノードの各々が、前記ノードを定義する前記少なくとも1つのプロセッササブユニットによって実行されるマシンコードを含む、請求項54に記載のメモリチップ上の分散型プロセッサ。

請求項56

複数のプロセッササブユニットおよび複数のメモリバンクを含むメモリチップ上で一連の実行命令コンパイルするプログラムであって、前記複数のプロセッササブユニット間からの前記複数のプロセッササブユニットの各々が前記複数のメモリバンク間から少なくとも1つの対応する専用メモリバンクに接続され、前記プログラムは少なくとも1つのプロセッサに、前記一連の命令をサブシリーズ命令の複数のグループに分割する手順であって、前記分割する手順は、前記一連の命令と関連付けられたタスクを前記複数のプロセッササブユニットの異なるものに割り当てる手順であって、前記複数のプロセッササブユニットが、前記メモリチップに配置される前記複数のメモリバンク間に空間的に分散される、手順と、前記メモリチップの前記複数のプロセッササブユニットの複数対の間でデータを転送するタスクを生成し、前記複数のプロセッササブユニットの前記複数対の各々がバスによって接続される、手順と、前記割り当てられたタスクおよび前記生成されたタスクをサブシリーズ命令の前記複数のグループに分類し、サブシリーズ命令の前記複数のグループの各々が前記複数のプロセッササブユニットの異なる1つに対応する、手順と、を含む、手順と、サブシリーズ命令の前記複数のグループの各々に対応するマシンコードを生成する手順と、前記分割に従って、サブシリーズ命令の前記複数のグループの各々に対応する、生成された前記マシンコードを、前記複数のプロセッササブユニットのうち対応する1つのプロセッササブユニットに割り当てる手順とを実行させるためのプログラム。

請求項57

前記一連の命令と関連付けられたタスクを前記プロセッササブユニットの前記異なるものに割り当てる前記手順は、前記メモリチップ上の2つ以上の前記プロセッササブユニット間の空間的近接によって決まる、請求項56に記載のプログラム。

請求項58

前記少なくとも1つのプロセッサに、前記分類に基づいて前記一連の命令と関連付けられたデータを分類する手順と、前記分割に従って前記データを前記複数のメモリバンクに割り当てる手順とを実行させるための、請求項56または57に記載のプログラム。

請求項59

前記データを分類する手順は、前記データのうち前記複数のメモリバンクの2つ以上に複製するための少なくとも一部分を決定する手順を含む、請求項58に記載のプログラム。

請求項60

メモリチップであって、自らの専用の少なくとも1つのメモリバンクに各々が接続された複数のプロセッササブユニットと、対応する複数のメモリバンクとを含み、前記メモリチップの前記複数のプロセッササブユニットが、請求項56から59のいずれか一項に記載のプログラムに従って生成されるマシンコードを実行するように構成される、メモリチップ。

請求項61

メモリチップであって、前記メモリチップが、複数のメモリバンクであって、各メモリバンクがバンク行デコーダおよびバンク列デコーダを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを有する、複数のメモリサブバンクと、を備え、各サブバンク行デコーダおよび各サブバンク列デコーダが前記バンク行デコーダおよび前記バンク列デコーダに接続される、メモリチップ。

請求項62

各メモリサブバンクがさらに、各メモリバンクのコントローラからの読み要求および書き要求を処理するか否かを決定するように構成されるサブバンクコントローラを有する、請求項61に記載のメモリチップ。

請求項63

各メモリバンクの前記コントローラがシステムクロックに同期される、請求項62に記載のメモリチップ。

請求項64

各メモリサブバンクの前記サブバンクコントローラがシステムクロックに同期されない、請求項62に記載のメモリチップ。

請求項65

各メモリサブバンクがさらに、各メモリサブバンクを専用メモリとして使用するプロセッササブユニットを有する、請求項61から64のいずれか一項に記載のメモリチップ。

請求項66

前記プロセッササブユニットが、構成可能プロセッササブユニットまたはアクセラレータを含む、請求項65に記載のメモリチップ。

請求項67

各プロセッササブユニットが、前記バンク行デコーダおよび前記バンク列デコーダを使用せずに前記サブバンク行デコーダおよび前記サブバンク列デコーダを使用して各プロセッササブユニット専用のサブバンクにアクセスするように構成される、請求項65または66に記載のメモリチップ。

請求項68

メモリチップであって、前記メモリチップが、複数のメモリバンクであって、各メモリバンクがバンクコントローラおよび複数のメモリサブバンクを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを有する、複数のメモリサブバンクと、を備え、各サブバンク行デコーダおよび各サブバンク列デコーダが前記バンクコントローラからの読み要求および書き要求を処理する、メモリチップ。

請求項69

各メモリサブバンクがさらに、前記バンクコントローラからの読み要求および書き要求を処理するか否かを決定するように構成されるサブバンクコントローラを有する、請求項68に記載のメモリチップ。

請求項70

前記バンクコントローラがシステムクロックに同期される、請求項69に記載のメモリチップ。

請求項71

各メモリサブバンクの前記サブバンクコントローラがシステムクロックに同期されない、請求項69に記載のメモリチップ。

請求項72

各メモリサブバンクがさらに、各メモリサブバンクを専用メモリとして使用するプロセッササブユニットを有する、請求項68から71のいずれか一項に記載のメモリチップ。

請求項73

各プロセッササブユニットが、前記バンクコントローラを使用せずに各メモリサブバンクの行デコーダおよび列デコーダを使用して各プロセッササブユニット専用のサブバンクにアクセスするように構成された、請求項72に記載のメモリチップ。

請求項74

メモリチップであって、前記メモリチップが、複数のメモリバンクであって、各メモリバンクが、読み書きを処理するバンクコントローラを自らの位置に有し、各メモリバンクが、複数のメモリセルと、マット行デコーダおよびマット列デコーダとを各々が含む複数のメモリマットを有する、複数のメモリバンクを備え、前記マット行デコーダおよび前記マット列デコーダがサブバンクコントローラからの読み要求および書き要求を処理する、メモリチップ。

請求項75

各メモリマットがさらに、前記バンクコントローラからのコマンドアドレスに基づいて前記サブバンクコントローラからの読み要求および書き要求を処理するか否かを決定するように構成されるコンパレータを有する、請求項74に記載のメモリチップ。

請求項76

各メモリマットが、1または複数のヒューズによって決定される割り当てられたアドレスレンジを有する、請求項74または75に記載のメモリチップ。

請求項77

前記1または複数のヒューズが、不良であるメモリマットを無効にするように構成される、請求項76に記載のメモリチップ。

請求項78

各サブバンクがさらに、各サブバンクを専用メモリとして使用するプロセッササブユニットを有する、請求項74から77のいずれか一項に記載のメモリチップ。

請求項79

メモリチップであって、複数のメモリバンクであって、各メモリバンクが、読み書きを可能にするバンクコントローラと、行デコーダと、列デコーダと、を自らの位置に有する、複数のメモリバンクと、各バンクコントローラを少なくとも他の1つのバンクコントローラに接続する複数のバスと、を備えるメモリチップ。

請求項80

データ転送が前記複数のメモリバンクのメインバス割り込むことなく前記複数のバスにアクセスできる、請求項79に記載のメモリチップ。

請求項81

各バンクコントローラが、複数の他のバンクコントローラに接続され、データを送信または受信するために前記複数の他のバンクコントローラのうちもう1つを選択するように構成可能である、請求項79または80に記載のメモリチップ。

請求項82

各メモリバンクがダイナミックランダムアクセスメモリバンクを含む、請求項79から81のいずれか一項に記載のメモリチップ。

請求項83

各バンクコントローラが、構成可能であり、前記複数のメモリバンクのうち自らを有するものの中での読み書きのためのアドレスを決定するように構成される、請求項79から82のいずれか一項に記載のメモリチップ。

請求項84

各バンクコントローラが、他のバンクコントローラから入ってくるデータを処理してから、前記複数のメモリバンクのうち自らを有するものに前記データを渡すように構成される、請求項79から83のいずれか一項に記載のメモリチップ。

請求項85

各コントローラが、別の空間的に隣接するコントローラに接続される、請求項79から84のいずれか一項に記載のメモリチップ。

請求項86

メモリデバイスであって、基板と、前記基板上の複数のメモリバンクと、前記基板上の複数のプライマリ論理ブロックであって、前記複数のプライマリ論理ブロックの各々が前記複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、前記基板上の複数の余剰ブロックであって、前記複数の余剰ブロックの各々が前記複数のメモリバンクの少なくとも1つに接続され、前記複数の余剰ブロックの各々が前記複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、前記基板上の複数の設定スイッチであって、前記複数の設定スイッチの各々が前記複数のプライマリ論理ブロックの少なくとも1つまたは前記複数の余剰ブロックの少なくとも1つに接続される、複数の設定スイッチと、を備え、前記複数のプライマリ論理ブロックの1つと関連付けられる不良を検出すると、前記複数の設定スイッチの第1の設定スイッチが前記複数のプライマリ論理ブロックの前記1つを無効にするように構成され、前記複数の設定スイッチの第2の設定スイッチが、前記複数のプライマリ論理ブロックの前記1つを複製する前記複数の余剰ブロックの1つを有効にするように構成される、メモリデバイス。

請求項87

前記複数の設定スイッチが複数のアクティブ化スイッチおよび複数の非アクティブ化スイッチを含み、前記複数のアクティブ化スイッチの各々および前記複数の非アクティブ化スイッチの各々が外部入力を含み、前記複数のアクティブ化スイッチの各々は、前記外部入力におけるアクティブ化信号がスイッチを閉じた状態にさせるように構成され、前記複数の非アクティブ化スイッチの各々は、前記外部入力における非アクティブ化信号がスイッチを開けた状態にさせるように構成される、請求項86に記載のメモリデバイス。

請求項88

前記複数のプライマリ論理ブロックの少なくとも1つが第1の専用接続で前記複数のメモリバンクのサブセットに接続され、前記複数のプライマリ論理ブロックの前記少なくとも1つを複製する前記複数の余剰ブロックの少なくとも1つが第2の専用接続で前記複数のメモリバンクの前記サブセットに接続される、請求項86または87に記載のメモリデバイス。

請求項89

前記複数の設定スイッチの各々が、前記複数のプライマリ論理ブロックまたは前記複数の余剰ブロックの少なくとも1つをクロックノードまたはパワーノードの少なくとも1つに連結する、請求項86から88のいずれか一項に記載のメモリデバイス。

請求項90

前記複数のプライマリ論理ブロックが、前記複数のメモリバンクのうちの1つの内部の読み取りオペレーションおよび書き込みオペレーションを有効にするように構成される少なくとも1つのメモリ論理ブロックと、メモリ内計算を実行するように構成される少なくとも1つのビジネス論理ブロックと、を含む、請求項86から89のいずれか一項に記載のメモリデバイス。

請求項91

前記少なくとも1つのビジネス論理ブロックが第1のビジネス論理ブロックを含み、前記複数の余剰ブロックが、前記第1のビジネス論理ブロックを複製する第2のビジネス論理ブロックを含む、請求項90に記載のメモリデバイス。

請求項92

前記複数の設定スイッチが、ヒューズ、アンチヒューズ不揮発性メモリデバイスまたはワンタイムプログラマブルデバイスの少なくとも1つを含む、請求項86から91のいずれか一項に記載のメモリデバイス。

請求項93

前記複数のプライマリ論理ブロックの各々および前記複数の余剰ブロックの各々がアドレスバスおよびデータバスに接続される、請求項86から92のいずれか一項に記載のメモリデバイス。

請求項94

前記複数のプライマリ論理ブロックの少なくとも1つが、少なくとも1つのローカル論理ユニットと、少なくとも1つの計算ユニットと、少なくとも1つの複製ユニットと、を含み、前記少なくとも1つの複製ユニットが前記少なくとも1つの計算ユニットを複製し、前記少なくとも1つのローカル論理ユニットが前記少なくとも1つの計算ユニットよりも小サイズを有する、請求項86から93のいずれか一項に記載のメモリデバイス。

請求項95

前記複数のプライマリ論理ブロックの前記少なくとも1つが、複数のローカル設定スイッチであって、前記複数のローカル設定スイッチの各々が前記少なくとも1つの計算ユニットまたは前記少なくとも1つの複製ユニットの少なくとも1つに接続される、複数のローカル設定スイッチを含み、不良が前記少なくとも1つの計算ユニット内で検出された場合に、前記複数のローカル設定スイッチが、前記少なくとも1つのローカル計算ユニットを無効にし、前記少なくとも1つの複製ユニットを有効にするように構成される、請求項94に記載のメモリデバイス。

請求項96

アドレスマネージャと、前記アドレスマネージャを前記複数のメモリバンクの各々、前記複数のプライマリ論理ブロックの各々、および前記複数の余剰ブロックの各々に連結するアドレスバスと、をさらに備え、前記複数のプライマリ論理ブロックの前記1つと関連付けられる前記不良を検出すると、無効アドレスが前記複数のプライマリ論理ブロックの前記1つに割り当てられ、有効アドレスが前記複数の余剰ブロックの前記1つに割り当てられる、請求項86から95のいずれか一項に記載のメモリデバイス。

請求項97

前記複数のプライマリ論理ブロックが直列に接続され、前記複数のプライマリ論理ブロックの各々が並列スイッチ並列に接続され、前記複数のプライマリ論理ブロックの前記1つと関連付けられる前記不良を検出すると、前記複数のプライマリ論理ブロックの前記1つに接続される前記並列スイッチが前記複数のプライマリ論理ブロックの2つを連結するようにアクティブ化される、請求項86から96のいずれか一項に記載のメモリデバイス。

請求項98

前記並列スイッチがアンチヒューズを含む、請求項97に記載のメモリデバイス。

請求項99

前記並列スイッチが、選択されたサイクル遅延を含むサンプリング回路を有する、請求項97に記載のメモリデバイス。

請求項100

前記複数のプライマリ論理ブロックおよび前記複数の余剰ブロックが2次元格子内の前記基板上に配置され、前記複数のプライマリ論理ブロックの各々および前記複数の余剰ブロックの各々が接続盤相互接続され、入力ブロックが前記2次元格子の各ラインおよび各列の周辺に配置される、請求項86から99のいずれか一項に記載のメモリデバイス。

請求項101

メモリチップがDRAMメモリ、Flashメモリ、SRAMメモリ、ReRAMメモリ、PRAMメモリまたはMRAMメモリの少なくとも1つを含む、請求項86から100のいずれか一項に記載のメモリデバイス。

請求項102

前記複数のプライマリ論理ブロックの各々が、前記複数の余剰ブロックの少なくとも1つと同等の計算能力を有する、請求項86から101のいずれか一項に記載のメモリデバイス。

請求項103

前記複数のプライマリ論理ブロックが、少なくとも1つのローカル計算ユニットと、少なくとも1つの余剰計算ユニットと、前記少なくとも1つのローカル計算ユニットを複製する前記少なくとも1つの余剰計算ユニットと、を含む、請求項86から102のいずれか一項に記載のメモリデバイス。

請求項104

前記第1の設定スイッチがさらに、前記複数のプライマリ論理ブロックの前記1つを複製する前記複数の余剰ブロックの前記1つを有効にするように構成される、請求項86から103のいずれか一項に記載のメモリデバイス。

請求項105

メモリチップ上の分散型プロセッサであって、基板と、前記基板上のアドレスマネージャと、前記基板上の複数のプライマリ論理ブロックであって、前記複数のプライマリ論理ブロックの各々が複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、前記基板上の複数の余剰ブロックであって、前記複数の余剰ブロックの各々が前記複数のメモリバンクの少なくとも1つに接続され、前記複数の余剰ブロックの各々が前記複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、前記複数のプライマリ論理ブロックの各々と、前記複数の余剰ブロックの各々と、前記アドレスマネージャに接続される前記基板上のバスと、を備え、前記メモリチップ上の分散型プロセッサが、試験プロトコル合格している前記複数のプライマリ論理ブロック内のブロックに実行ID番号を割り当て、前記試験プロトコルに合格していない前記複数のプライマリ論理ブロック内のブロックに不正ID番号を割り当て、前記試験プロトコルに合格している前記複数の余剰ブロック内のブロックに実行ID番号を割り当てるように構成される、メモリチップ上の分散型プロセッサ。

請求項106

実行ID番号が割り当てられた前記複数の余剰ブロック内の前記ブロックが、不正ID番号が割り当てられた前記複数のプライマリ論理ブロック内の前記ブロックと等しいかまたはより大きい、請求項105に記載のメモリチップ上の分散型プロセッサ。

請求項107

前記複数のプライマリ論理ブロックの各々および前記複数の余剰ブロックの各々が、ヒューズ付き識別回路を含む、請求項106に記載のメモリチップ上の分散型プロセッサ。

請求項108

前記バスがコマンドラインデータライン、およびアドレスラインを含む、請求項107に記載のメモリチップ上の分散型プロセッサ。

請求項109

メモリチップ上の分散型プロセッサを構成する方法であって、前記メモリチップの基板上の複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、前記試験の結果に基づいて前記複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、前記少なくとも1つの不良論理ブロックが前記メモリチップの前記基板に配置される少なくとも1つのメモリバンクに接続される段階と、前記メモリチップの前記基板上の少なくとも1つの余剰ブロックに前記少なくとも1つの回路機能があるかを試験する段階であって、前記少なくとも1つの余剰ブロックが前記少なくとも1つの不良論理ブロックを複製し、前記少なくとも1つのメモリバンクに接続される段階と、外部信号を非アクティブ化スイッチに印加することによって前記少なくとも1つの不良論理ブロックを無効にする段階であって、前記非アクティブ化スイッチが前記少なくとも1つの不良論理ブロックに接続され、前記メモリチップの前記基板に配置される段階と、前記外部信号をアクティブ化スイッチに印加することによって前記少なくとも1つの余剰ブロックを有効にする段階であって、前記アクティブ化スイッチが前記少なくとも1つの余剰ブロックに接続され、前記メモリチップの前記基板に配置される段階とを備える、メモリチップ上の分散型プロセッサを構成する方法。

請求項110

メモリチップ上の分散型プロセッサを構成する方法であって、前記メモリチップの基板上の複数のプライマリ論理ブロックおよび複数の余剰ブロックを有効にする段階と、前記メモリチップの前記基板上の前記複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、前記試験の結果に基づいて前記複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、前記少なくとも1つの不良論理ブロックが前記メモリチップの前記基板に配置される少なくとも1つのメモリバンクに接続される段階と、前記メモリチップの前記基板上の少なくとも1つの余剰ブロックに前記少なくとも1つの回路機能があるかを試験する段階であって、前記少なくとも1つの余剰ブロックが前記少なくとも1つの不良論理ブロックを複製し、前記少なくとも1つのメモリバンクに接続される段階と、外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを無効にする段階であって、前記アクティブ化スイッチが前記少なくとも1つの余剰ブロックに接続され、前記メモリチップの前記基板に配置される段階と、を備える、メモリチップ上の分散型プロセッサを構成する方法。

請求項111

処理デバイスであって、基板と、前記基板上の複数のメモリバンクと、前記複数のメモリバンクの各々に接続される前記基板上のメモリコントローラと、前記基板上の複数の処理ユニットであって、前記複数の処理ユニットの各々が前記メモリコントローラに接続され、前記複数の処理ユニットが構成マネージャを有する、複数の処理ユニットと、を備え、前記構成マネージャが、実行されるタスクであって、少なくとも1つの計算を要求するタスクの第1の指示を受信するように構成され、前記少なくとも1つの計算を実行する少なくとも1つの選択された処理ユニットの能力に基づいて、前記複数の処理ユニットから前記少なくとも1つの選択された処理ユニットに信号を送るように構成され、第2の指示を前記少なくとも1つの選択された処理ユニットに送信するように構成され、前記メモリコントローラが、少なくとも1つの通信ラインを利用して、少なくとも2つのメモリバンクから前記少なくとも1つの選択された処理ユニットにデータを送るように構成され、前記メモリコントローラを介して、前記少なくとも1つの通信ラインが、前記少なくとも2つのメモリバンクおよび前記少なくとも1つの選択された処理ユニットに接続されるように構成される、処理デバイス。

請求項112

前記第2の指示を送信する段階が、前記少なくとも1つの選択された処理ユニットによって前記タスクを実行する命令を伝達する段階を含み、前記少なくとも1つの選択された処理ユニットがデータを前記メモリコントローラに送信する、またはデータを前記メモリコントローラから受信するように構成される、請求項111に記載の処理デバイス。

請求項113

前記第2の指示を送信する段階が、データを前記メモリコントローラに送る命令を伝達する段階を含む、請求項111または112に記載の処理デバイス。

請求項114

前記少なくとも1つの選択された処理ユニットが、前記少なくとも2つのメモリバンクから第1のメモリバンク内の開放されたメモリラインへの一連のアクセス中に、前記少なくとも2つのメモリバンクから第2のメモリバンク内のメモリラインを開放するように構成される、請求項111から113のいずれか一項に記載の処理デバイス。

請求項115

通信ラインが前記第1のメモリバンクに開放されるラインアクセス期間中に、前記選択された処理ユニットがデータを前記第2のメモリバンクに転送するように構成される、請求項114に記載の処理デバイス。

請求項116

前記メモリコントローラが、前記複数のメモリバンクからの少なくとも2つのデータ入力と、前記複数の処理ユニットの各々に接続される少なくとも2つのデータ出力と、を含み、前記メモリコントローラが、前記2つのデータ入力を介して2つのメモリバンクからデータを同時に受信するように構成され、前記メモリコントローラが、前記2つのデータ入力を介して受信されたデータを、前記少なくとも1つの選択された処理ユニットに前記2つのデータ出力を介して同時に送信するように構成される、請求項111から115のいずれか一項に記載の処理デバイス。

請求項117

前記複数の処理ユニットが、予め定義されたタスク用に構成される複数のアクセラレータを含む、請求項111から116のいずれか一項に記載の処理デバイス。

請求項118

前記複数のアクセラレータが、ベクトル乗累算ユニットまたはダイレクトメモリアクセスの少なくとも1つを含む、請求項117に記載の処理デバイス。

請求項119

前記構成マネージャが、RISCプロセッサまたはマイクロコントローラの少なくとも1つを含む、請求項117に記載の処理デバイス。

請求項120

前記メモリバンクに接続される外部インタフェースをさらに含む、請求項111から119のいずれか一項に記載の処理デバイス。

請求項121

前記処理デバイスがさらに、第1のメモリラインを通じて第1のアドレスから前記複数の処理ユニットの少なくとも1つにデータを供給し、ラインアクセス期間内に第2のメモリライン内の第2のアドレスを開放し、前記第1のアドレスが前記複数のメモリバンクの第1のメモリバンク内に存在し、前記第2のアドレスが前記複数のメモリバンクの第2のメモリバンク内に存在するように構成され、前記第2のメモリラインを通じて前記第2のアドレスから前記複数の処理ユニットの前記少なくとも1つにデータを供給し、第2のラインアクセス期間内に前記第1のメモリライン内の前記第1のメモリバンクにおける第3のアドレスを開放するように構成される、請求項111から120のいずれか一項に記載の処理デバイス。

請求項122

コンパイラは、タスクを実行するために同時に要求されるワードの数を決定し、前記複数のメモリバンクの各々から同時にアクセスできるワードの数を決定し、同時に要求される前記ワードの数が同時にアクセスできる前記ワードの数よりも大きい場合に、同時に要求される前記ワードの数を複数のメモリバンク間で分割するように構成される、請求項111から121のいずれか一項に記載の処理デバイス。

請求項123

前記ワードがマシン命令を含む、請求項122に記載の処理デバイス。

請求項124

前記構成マネージャが、前記複数の処理ユニットの少なくとも1つに送信されるコマンドを記憶するローカルメモリを含む、請求項111から123のいずれか一項に記載の処理デバイス。

請求項125

前記メモリコントローラが、外部インタフェースからの要求の受信に応答して前記タスクを割り込ませるように構成される、請求項111から124のいずれか一項に記載の処理デバイス。

請求項126

前駆複数のメモリバンクが、DRAMマット、DRAM、バンク、フラッシュマットSRAMマット、の少なくとも1つを含む、請求項111から125のいずれか一項に記載の処理デバイス。

請求項127

前記複数の処理ユニットが、少なくとも1つの演算論理ユニットと、少なくとも1つのベクトル処理論理ユニットと、少なくとも1つのレジスタと、少なくとも1つのダイレクトメモリアクセスと、を含む、請求項111から126のいずれか一項に記載の処理デバイス。

請求項128

前記構成マネージャおよび前記複数の処理ユニットが、タスクを終了させた後で互いに前記メモリコントローラにアクセスをハンドオーバするように構成される、請求項111から127のいずれか一項に記載の処理デバイス。

請求項129

分散型メモリデバイスを動作するために実行される方法であって、前記分散型メモリデバイスのタスクをコンパイラによってコンパイルする段階であって、前記タスクが少なくとも1つの計算を要求する段階を備え、前記コンパイルする段階が、前記タスクを実行するために同時に要求されるワードの数を決定する段階と、複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求される前記ワードの数よりも少ない場合に、基板に配置される前記複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込む命令を与える段階と、前記基板に配置される構成マネージャによって、前記タスクを実行する指示を受信する段階と、前記指示を受信する段階に応答して、前記基板に配置されるメモリコントローラが、第1のラインアクセスサイクル内で、第1のメモリラインを使用して前記複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、前記少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、第2のメモリバンク内の第1のメモリラインを開放して前記複数のメモリバンクからの前記第2のメモリバンクから第2のアドレスにアクセスするように、および、第2のラインアクセスサイクル内で、前記第1のメモリラインを使用して前記第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、前記少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、前記第1のメモリバンク内の第2のメモリラインを使用して前記第1のメモリバンクから第3のアドレスにアクセスするように、構成する段階と、を有する、方法。

請求項130

前記タスクをコンパイルする前記段階がさらに、前記タスクを実行するのに必要なサイクル数を決定する段階と、前記複数のメモリバンクの単一メモリバンク内で一連のサイクルで必要されるワードを書き込む段階と、を含む、請求項129に記載の方法。

請求項131

少なくとも1つのプロセッサに、少なくとも1つの計算を要求するタスクを実行するために同時に要求されるワードの数を決定することと、複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求される前記ワードの数よりも少ない場合に、基板に配置される前記複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込むことと、前記タスクを実行する指示を、前記基板に配置される構成マネージャに送信することと、前記基板に配置されるメモリコントローラが、第1のラインアクセスサイクル内で、第1のメモリラインを使用して前記複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、前記少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、第2のメモリバンク内の第1のメモリラインを開放して前記複数のメモリバンクからの前記第2のメモリバンクから第2のアドレスにアクセスするように、および、第2のラインアクセスサイクル内で、前記第1のメモリラインを使用して前記第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、前記少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、前記第1のメモリバンク内の第2のメモリラインを使用して前記第1のメモリバンクから第3のアドレスにアクセスするように構成する命令を送信することとをさせる、プログラム。

技術分野

0001

[関連出願の相互参照
本出願は、2017年7月30日に出願された米国仮特許出願第62/538722号、2017年7月30日に出願された米国仮特許出願第62/538724号、および2017年8月23日に出願された米国仮特許出願第62/548990号に対する優先権の利益を主張するものである。上記の全出願の内容全体を参照によって本願明細書に引用したものとする。

背景技術

0002

本開示は全体的に、メモリ負荷の高い動作を促進する装置に関する。詳細には、本開示は、専用メモリバンクに連結される処理要素を含むハードウェアチップに関する。背景情報

0003

プロセッサの速度が上がり続け、メモリサイズの大型化が続く場合、効果的な処理速度に対する著しい制限がフォンノイマンボトルネックとなる。フォンノイマンボトルネックは、従来のコンピュータアーキテクチャに起因するスループット限界から生じる。詳細には、プロセッが着手する実際の計算に比べ、メモリからプロセッサまでのデータ転送がボトルネックになることが多い。したがって、メモリから読み込みおよび書き込みをするクロックサイクル数は、メモリ負荷の高い処理に伴い著しく増える。このような増えたクロックサイクル数は処理速度の効率をかなり悪くする。これは、メモリからの読み込みおよび書き込みがデータ演算用に使用できないクロックサイクル消費してしまうためである。さらに、プロセッサの計算帯域幅は、プロセッサがメモリにアクセスするために使用するバスの計算帯域幅よりも一般的にかなり広い。

0004

これらのボトルネックは、ニューラルネットワークおよび、データベース構築インデックスサーチクエリといったその他の機械学習アルゴリズム、および、データ処理動作というよりはむしろ読み込みおよび書き込み動作を含むその他のタスク、などメモリ負荷の高い処理で特に顕著である。

0005

その上、利用可能なデジタルデータ量の急増、および利用可能なデジタルデータ粒度により、機械学習アルゴリズムを開発する機会が創出され、新しい技術が可能になった。ところが、このことはさらに、データベースおよび並列計算の世界に扱いにくい難題をもたらしている。例えば、ソーシャルメディアおよびモノインターネットIoT)の台頭により、記録的な速度でデジタルデータが創出されている。この新しいデジタルデータは、新しい広告技法から工業プロセスのより正確な制御法まで多岐にわたるアルゴリズムを様々な目的で作成するのに使用することができる。しかしながら、この新しいデジタルデータは、記憶、処理、解析、および取り扱いが困難である。

0006

新しいデータ資源は、場合によってはペタバイトからゼタバイトの順に大容量になり得る。さらに、これらのデータ資源の増加速度データ処理能力を上回る可能性がある。したがって、データサイエンティストたちは、こうした難題に取り組むために、並列データ処理技術に救いを求めた。計算能力を高めるために、および大容量のデータを処理するために、データサイエンティストたちは負荷の高い並列処理を可能にするシステムおよび方法を創出することに努めている。しかし、こうした現存するシステムおよび方法はデータ処理要件に追いついていない。現存するシステムおよび方法がデータ管理用追加リソースを要求したり、分離されたデータを統合したり、分割されたデータを解析したりすることによって、利用される技術が制限されているというのが大きな理由である。

0007

大容量データセットの処理を促進するために、エンジニアおよびサイエンティストたちは現在、データ解析に使用されるハードウェアを改善しようと努めている。例えば、算術演算ではなくメモリ操作により適合した技術で製造される単一基板内にメモリ機能および処理機能を組み込むことによって、新しい半導体プロセッサまたは半導体チップ(例えば本明細書で記載されるもの)をデータ量の多いタスク用に特別に設計することができる。データ量の多いタスク用に特別に設計された集積回路を用いれば、新しいデータ処理要件を満たすことが可能になる。しかしながら、大容量データセットのデータ処理に取り組むこうした新しいアプローチには、チップ設計およびチップ製造における新しい問題を解決することが求められる。例えば、データ量の多いタスク用に設計された新しいチップが通常のチップ用に使用される製造技術および製造アーキテクチャで製造された場合、新しいチップは低性能および/または不適格歩留りを有することになろう。さらに、新しいチップが現在のデータ処理法で動作するように設計された場合、新しいチップは低性能を有することになろう。なぜなら、現在のデータ処理法は並列演算を処理するチップの能力を制限する可能性があるためである。

0008

本開示は、上記の1または複数の問題、とりわけ先行技術における問題を軽減または克服するための解決策を記載する。

0009

本開示と一致する実施形態は、ハードウェア処理チップを含む装置を提供する。本開示の実施形態は、処理要素と対になる専用メモリバンクを使用して従来のプロセッサに比べてより効率的でより効果的な処理速度をもたらすことができる。例えば、開示された実施形態と一致する本発明のチップは、各処理要素と、処理要素に対応するメモリバンクとの間に専用バスを含み得る。さらに、本開示のチップは、処理要素間のデータ転送のタイミングを制御するアービタおよび/またはその他のハードウェアがなくてもよい。開示されたその他の非一時的コンピュータ可読媒体は、上位命令を、本明細書で開示されるハードウェアチップによって実行される下位命令コンパイルする命令を記憶することができる。

0010

本開示のいくつかの実施形態は分散型プロセッサを備え、分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、第1の複数のバスであって、各バスが複数のプロセッササブユニットの1つをその対応する専用メモリバンクに接続する、第1の複数のバスと、第2の複数のバスであって、各バスが複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別のプロセッササブユニットに接続する、第2の複数のバスと、を含む。

0011

本開示と一致する他の実施形態はメモリチップを備え、メモリチップは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のアドレスジェネレータを含み、アドレスジェネレータの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、各バスが複数のアドレスジェネレータの1つをその対応する専用メモリバンクに接続する、複数のバスと、を含む。

0012

本開示と一致する別の実施形態は分散型プロセッサを備え得る。分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含み、個別のメモリバンクの各々が1メガバイトよりも大きい容量を有する、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、プロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、を含む。

0013

本開示と一致するさらに他の実施形態は分散型プロセッサを備え得る。分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別の1つに接続する、複数のバスと、を含み、複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニット間の、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。

0014

他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを有し、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数の個別のメモリバンクの対応する専用の1つに接続する複数のバスと、を含み、複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニットと、複数の個別のメモリバンクの対応する専用の1つとの間の、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。

0015

他の実施形態は分散型プロセッサを備え得る。分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別の1つのプロセッササブユニットに接続する、複数のバスと、を含み、複数のプロセッササブユニットが、複数のバス全体にわたるデータ転送のタイミングを制御するソフトウェアを実行することで、複数のバスの少なくとも1つのバス上でデータ転送が衝突しないように構成される。

0016

他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、基板と、基板に配置される複数のプロセッササブユニットであって、各プロセッササブユニットが他のプロセッササブユニットから独立した一連の命令を実行するように構成され、各一連の命令が単一プロセッササブユニットによって実行される一連のタスクを定義する、複数のプロセッササブユニットと、基板に配置される対応する複数のメモリバンクであって、複数のプロセッササブユニットの各々が、複数のプロセッササブユニットの他のあらゆるプロセッササブユニットによって共有されない少なくとも1つの専用メモリバンクに接続される、対応する複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも他の1つのプロセッササブユニットに接続する、複数のバスと、を含み、複数のバスの少なくとも1つのバス全体にわたるデータ転送が、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令によって予め定義される。

0017

他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクであって、複数のメモリバンクの各々が、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続される、複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を含み、複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される。

0018

他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクであって、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続され、複数のメモリバンクの各メモリバンクが、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のメモリバンク間から1つの特定のメモリバンク内に記憶される少なくともいくつかのデータが、複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含む、複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を含み、複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される。

0019

他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクであって、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続され、複数のメモリバンクの各メモリバンクが、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のメモリバンク間から1つの特定のメモリバンク内に記憶される少なくともいくつかのデータが、複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含む、複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を含み、複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される。

0020

他の実施形態は、複数のプロセッササブユニットおよび複数のメモリバンクを含むメモリチップ上で一連の実行命令をコンパイルする命令を記憶する非一時的コンピュータ可読媒体を備え得る。複数のプロセッササブユニット間からの各プロセッササブユニットが複数のメモリバンク間から少なくとも1つの対応する専用メモリバンクに接続され、命令は少なくとも1つのプロセッサに、一連の命令をサブシリーズ命令の複数のグループに分割させ、分割は、一連の命令と関連付けられたタスクを複数のプロセッササブユニットの異なるものに割り当てる段階であって、複数のプロセッササブユニットが、メモリチップに配置される複数のメモリバンク間に空間的に分散される、段階と、メモリチップの複数のプロセッササブユニットの複数対の間でデータを転送するタスクを生成し、複数のプロセッササブユニットの複数対の各々がバスによって接続される、段階と、割り当てられたタスクおよび生成されたタスクをサブシリーズ命令の複数のグループに分類し、サブシリーズ命令の複数のグループの各々が複数のプロセッササブユニットの異なる1つに対応する、段階と、を含み、サブシリーズ命令の複数のグループの各々に対応するマシンコードを生成させ、分割に従って、サブシリーズ命令の複数のグループの各々に対応する、生成されたマシンコードを、複数のプロセッササブユニットのうち対応する1つのプロセッササブユニットに割り当てさせる、非一時的コンピュータ可読媒体である。

0021

他の実施形態はメモリチップを備え得る。メモリチップは、複数のメモリバンクであって、各メモリバンクがバンク行デコーダおよびバンク列デコーダを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを含む、複数のメモリサブバンクと、を含み、サブバンク行デコーダおよびサブバンク列デコーダがバンク行デコーダおよびバンク列デコーダに接続される。

0022

他の実施形態はメモリチップを備え得る。メモリチップは、複数のメモリバンクであって、各メモリバンクがバンクコントローラおよび複数のメモリサブバンクを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを含む、複数のメモリサブバンクと、を有し、各サブバンク行デコーダおよび各サブバンク列デコーダがバンクコントローラからの読み要求および書き要求を処理する。

0023

他の実施形態はメモリチップを備え得る。メモリチップは、複数のメモリバンクであって、各メモリバンクが、読み書きを処理するバンクコントローラを自らの位置に有し、各メモリバンクが、複数のメモリセルと、マット行デコーダおよびマット列デコーダとを各々が有する複数のメモリマットを含む、複数のメモリバンクを備え、マット行デコーダおよびマット列デコーダがサブバンクコントローラからの読み要求および書き要求を処理する。

0024

他の実施形態はメモリチップを備え得る。メモリチップは、各メモリバンクが、読み書きを可能にするバンクコントローラと、行デコーダと、列デコーダと、を自らの位置に有する、複数のメモリバンクと、複数のバンクコントローラの各コントローラを複数のバンクコントローラの少なくとも他の1つのバンクコントローラに接続する複数のバスと、を含む。

0025

本開示の一態様はメモリデバイスに関し、メモリデバイスは、基板と、基板上の複数のメモリバンクと、基板上の複数のプライマリ論理ブロックであって、複数のプライマリ論理ブロックの各々が複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、基板上の複数の余剰ブロックであって、複数の余剰ブロックの各々が複数のメモリバンクの少なくとも1つに接続され、複数の余剰ブロックの各々が複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、基板上の複数の設定スイッチであって、複数の設定スイッチの各々が複数のプライマリ論理ブロックの少なくとも1つまたは複数の余剰ブロックの少なくとも1つに接続される、複数の設定スイッチと、を含む。メモリデバイスでは、複数のプライマリ論理ブロックの1つと関連付けられる不良を検出すると、複数の設定スイッチの第1の設定スイッチは複数のプライマリ論理ブロックの1つを無効にするように構成することができ、複数の設定スイッチの第2の設定スイッチは、複数のプライマリ論理ブロックの1つを複製する複数の余剰ブロックの1つを有効にするように構成することができる。

0026

本開示の別の態様はメモリチップ上の分散型プロセッサに関し、メモリチップ上の分散型プロセッサは、基板と、基板上のアドレスマネージャと、基板上の複数のプライマリ論理ブロックであって、複数のプライマリ論理ブロックの各々が複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、基板上の複数の余剰ブロックであって、複数の余剰ブロックの各々が複数のメモリバンクの少なくとも1つに接続され、複数の余剰ブロックの各々が複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、複数のプライマリ論理ブロックの各々と、複数の余剰ブロックの各々と、アドレスマネージャに接続される基板上のバスと、を含む。メモリチップ上の分散型プロセッサは、試験プロトコル合格している複数のプライマリ論理ブロック内のブロックに実行ID番号を割り当てることができ、試験プロトコルに合格していない複数のプライマリ論理ブロック内のブロックに不正ID番号を割り当てることができ、試験プロトコルに合格している複数の余剰ブロック内のブロックに実行ID番号を割り当てることができる。

0027

本開示のさらに別の態様は、メモリチップ上の分散型プロセッサを構成する方法に関する。この方法は、メモリチップの基板上の複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、試験の結果に基づいて複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、少なくとも1つの不良論理ブロックがメモリチップの基板に配置される少なくとも1つのメモリバンクに接続される段階と、メモリチップの基板上の少なくとも1つの余剰ブロックに少なくとも1つの回路機能があるかを試験する段階であって、少なくとも1つの余剰ブロックが少なくとも1つの不良論理ブロックを複製し、少なくとも1つのメモリバンクに接続される段階と、外部信号非アクティブ化スイッチに印加することによって少なくとも1つの不良論理ブロックを無効にする段階であって、非アクティブ化スイッチが少なくとも1つの不良論理ブロックに接続され、メモリチップの基板に配置される段階と、外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを有効にする段階であって、アクティブ化スイッチが少なくとも1つの余剰ブロックに接続され、メモリチップの基板に配置される段階と、を含む。

0028

本開示の別の態様は、メモリチップ上の分散型プロセッサを構成する方法に関する。この方法は、メモリチップの基板上の複数のプライマリ論理ブロックおよび複数の余剰ブロックを有効にする段階と、メモリチップの基板上の複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、試験の結果に基づいて複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、少なくとも1つの不良論理ブロックがメモリチップの基板に配置される少なくとも1つのメモリバンクに接続される段階と、メモリチップの基板上の少なくとも1つの余剰ブロックに少なくとも1つの回路機能があるかを試験する段階であって、少なくとも1つの余剰ブロックが少なくとも1つの不良論理ブロックを複製し、少なくとも1つのメモリバンクに接続される段階と、外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを無効にする段階であって、アクティブ化スイッチが少なくとも1つの余剰ブロックに接続され、メモリチップの基板に配置される段階と、を含む。

0029

本開示の一態様は処理デバイスに関する。処理デバイスは、基板と、基板上の複数のメモリバンクと、複数のメモリバンクの各々に接続される基板上のメモリコントローラと、基板上の複数の処理ユニットであって、複数の処理ユニットの各々がメモリコントローラに接続され、複数の処理ユニットが構成マネージャを有する、複数の処理ユニットと、を含み得る。処理デバイスでは、構成マネージャは、実行されるタスクであって、少なくとも1つの計算を要求するタスクの第1の指示を受信するように構成され、少なくとも1つの計算を実行する少なくとも1つの選択された処理ユニットの能力に基づいて、複数の処理ユニットから少なくとも1つの選択された処理ユニットに信号を送るように構成され、第2の指示を少なくとも1つの選択された処理ユニットに送信するように構成され、メモリコントローラが、少なくとも1つの通信ラインを利用して、少なくとも2つのメモリバンクから少なくとも1つの選択された処理ユニットにデータを送るように構成され、メモリコントローラを介して、少なくとも1つの通信ラインが、少なくとも2つのメモリバンクおよび少なくとも1つの選択された処理ユニットに接続されるように構成される。

0030

本開示の別の態様は、分散型メモリデバイスを動作するために実行される方法に関する。この方法は、分散型メモリデバイスのタスクをコンパイラによってコンパイルする段階であって、タスクが少なくとも1つの計算を要求する段階を備え、コンパイルする段階が、タスクを実行するために同時に要求されるワードの数を決定する段階と、複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求されるワードの数よりも少ない場合に、基板に配置される複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込む命令を与える段階と、基板に配置される構成マネージャによって、タスクを実行する指示を受信する段階と、指示を受信する段階に応答して、基板に配置されるメモリコントローラが、第1のラインアクセスサイクル内で、第1のメモリラインを使用して複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、第2のメモリバンク内の第1のメモリラインを開放して複数のメモリバンクからの第2のメモリバンクから第2のアドレスにアクセスするように、および、第2のラインアクセスサイクル内で、第1のメモリラインを使用して第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、第1のメモリバンク内の第2のメモリラインを使用して第1のメモリバンクから第3のアドレスにアクセスするように、構成する段階と、を含み得る。

0031

本開示のさらに別の態様は、少なくとも1つのプロセッサによって実行される場合に命令を記憶する非一時的コンピュータ可読媒体に関し、少なくとも1つのプロセッサに、少なくとも1つの計算を要求するタスクを実行するために同時に要求されるワードの数を決定することと、複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求されるワードの数よりも少ない場合に、基板に配置される複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込むことと、タスクを実行する指示を、基板に配置される構成マネージャに送信することと、基板に配置されるメモリコントローラが、第1のラインアクセスサイクル内で、第1のメモリラインを使用して複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、第2のメモリバンク内の第1のメモリラインを開放して複数のメモリバンクからの第2のメモリバンクから第2のアドレスにアクセスするように、および、第2のラインアクセスサイクル内で、第1のメモリラインを使用して第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、第1のメモリバンク内の第2のメモリラインを使用して第1のメモリバンクから第3のアドレスにアクセスするように構成する命令を送信することと、をさせる、非一時的コンピュータ可読媒体。

0032

開示された他の実施形態と一致する非一時的コンピュータ可読記憶媒体は、少なくとも1つの処理デバイスによって実行されるプログラム命令を記憶し、本明細書で記載されるあらゆる方法を実行することができる。

0033

前述の概要および以下の詳述は、例示および説明に過ぎず、そうした主張に限定しない。

図面の簡単な説明

0034

本開示の一部に引用され、本開示の一部を構成する添付図面は、開示される様々な実施形態を示す。図面

0035

中央処理装置(CPU)の概略図である。

0036

グラフィックス処理ユニット(GPU)の概略図である。

0037

本開示の実施形態と一致する例示的なハードウェアチップの一実施形態の概略図である。

0038

本開示の実施形態と一致する例示的なハードウェアチップの別の実施形態の概略図である。

0039

本開示の実施形態と一致する例示的なハードウェアチップによって実行される汎用コマンドの概略図である。

0040

本開示の実施形態と一致する例示的なハードウェアチップによって実行される専用コマンドの概略図である。

0041

本開示の実施形態と一致する例示的なハードウェアチップ内で用いられる処理グループの概略図である。

0042

本開示の実施形態と一致する処理グループの矩形アレイの概略図である。

0043

本開示の実施形態と一致する処理グループの楕円アレイの概略図である。

0044

本開示の実施形態と一致するハードウェアチップのアレイの概略図である。

0045

本開示の実施形態と一致するハードウェアチップの別のアレイの概略図である。

0046

本開示の実施形態と一致する例示的なハードウェアチップ上で実行する一連の命令をコンパイルする例示的方法を示したフローチャートである。

0047

メモリバンクの概略図である。

0048

メモリバンクの概略図である。

0049

本開示の実施形態と一致するサブバンク制御を備える例示的なメモリバンクの一実施形態の概略図である。

0050

本開示の実施形態と一致するサブバンク制御を備える例示的なメモリバンクの別の実施形態の概略図である。

0051

本開示の実施形態と一致する例示的なメモリチップのブロック図である。

0052

本開示の実施形態と一致する例示的な余剰論理ブロックセットのブロック図である。

0053

本開示の実施形態と一致する例示的な論理ブロックのブロック図である。

0054

本開示の実施形態と一致する、バスと接続された例示的な論理ブロックのブロック図である。

0055

本開示の実施形態と一致する、並列接続された例示的な論理ブロックのブロック図である。

0056

本開示の実施形態と一致する、2次元アレイで接続された例示的な論理ブロックのブロック図である。

0057

本開示の実施形態と一致する、複雑な接続の例示的な論理ブロックのブロック図である。

0058

本開示の実施形態と一致する、余剰ブロックを有効にするプロセスを示す例示的なフローチャートである。

0059

本開示の実施形態と一致する、アドレス割り当てプロセスを示す例示的なフローチャートである。

0060

本開示の実施形態と一致する、例示的な処理装置のブロック図を提供する。

0061

本開示の実施形態と一致する、例示的な処理装置のブロック図である。

0062

本開示の実施形態と一致する、例示的なメモリ構成図を含む。

0063

本開示の実施形態と一致する、メモリ構成プロセスを示す例示的なフローチャートである。

0064

本開示の実施形態と一致する、メモリ読み込みプロセスを示す例示的なフローチャートである。

0065

本開示の実施形態と一致する、プロセス実行を示す例示的なフローチャートである。

実施例

0066

以下の詳細な説明では添付図面を参照する。図面および以下の説明において、同一または類似部分に言及するために、好都合であるときは常に、同一の参照符号を使用する。いくつかの例示的な実施形態を本明細書で記載するが、修正適応、およびその他の実装も可能である。例えば、図面で示されるコンポーネントに置換、追加または修正を行うことができ、本開示の方法に段階を置換、並べ替え、削除、または追加することによって、本明細書に記載される例示的な方法を修正することができる。したがって、以下の詳細な説明は、開示された実施形態および事例に限定されない、 代わりに、適切な範囲が添付の特許請求の範囲によって定義される。

0067

プロセッサアーキテクチャ
開示全体にわたり使用されるように、「ハードウェアチップ」という用語は、1または複数の回路要素(例えばトランジスタコンデンサ抵抗器および/またはその他同種のもの)が形成される半導体ウェハ(例えばシリコンまたはその他同種のもの)を指す。これらの回路要素は処理要素またはメモリデバイスを形成することができる。「処理要素」は、少なくとも1つの論理関数(例えば演算関数論理ゲート、その他のブール演算、またはその他同種のもの)を共に実行する1または複数の回路要素を指す。処理要素は、汎用処理要素(例えば構成可能な複数のトランジスタ)、または専用処理要素(例えば特定の論理ゲート、または特定の論理関数を実行するように設計される複数の回路要素)であってもよい。「メモリ要素」は、データを記憶するのに使用できる1または複数の回路要素を指す。「メモリ要素」はさらに「メモリセル」とも呼ばれ得る。メモリ要素は、(データ記憶を維持するには電気リフレッシュが必要である)ダイナミックメモリ、(電力損失後データが少なくともしばらくの間続く)スタティックメモリ、または不揮発性メモリであってもよい。

0068

処理要素はプロセッササブユニットを形成するように連結され得る。したがって「プロセッササブユニット」は、(例えば、プロセッサ命令セットの)少なくとも1つのタスクまたは命令を実行できる処理要素の最小グループを含み得る。例えば、サブユニットは、互いに命令を実行するように構成される1または複数の汎用処理要素と、補完的に命令を実行するように構成される1または複数の専用処理要素と組み合わされる1または複数の汎用処理要素と、またはその他同種のものと、を含み得る。プロセッササブユニットは、基板(例えば、ウェーハ)にアレイ形式で配置することができる。「アレイ」は矩形を含んでもよいが、アレイ形式でのサブユニットのあらゆる配置を基板に形成することができる。

0069

メモリ要素はメモリバンクを形成するように連結され得る。例えば、メモリバンクは、少なくとも1つのワイヤ(またはその他の導電接続)を介して連結される1または複数のメモリ要素のラインを含み得る。さらに、メモリ要素は、別の方向で少なくとも1つの追加のワイヤを介して連結することができる。例えば、メモリ要素は、下記で説明するように、ワード線およびビット線を介して配置することができる。メモリバンクはラインを含んでもよいが、メモリバンク内のメモリ要素のあらゆる配置を利用して基板にメモリバンクを形成することができる。さらに1または複数のメモリバンクは、メモリアレイを形成するように、少なくとも1つのメモリコントローラと電気的に結合され得る。メモリアレイはメモリバンクの矩形配置を含んでもよいが、アレイ形式でのメモリバンクのあらゆる配置を基板に形成することができる。

0070

さらに本開示を通して使用されるように、「バス」は、基板の要素間のあらゆる通信接続部を指す。例えば、(電気接続部を形成する)ワイヤもしくはライン、(光学接続部を形成する)光ファイバ、またはコンポーネント間通信を行うあらゆるその他の接続が「バス」と呼ばれ得る。

0071

従来のプロセッサは、共有メモリ汎用論理回路を組み合わせる。共有メモリは、論理回路によって実行する命令のセット、ならびに命令のセットを実行するのに使用される、および命令のセットを実行することで生じるデータ、の両方を記憶することができる。下記のように、いくつかの従来のプロセッサは、共有メモリからプルを実行する際にキャッシュシステムを利用して遅延を短くするが、従来のキャッシュシステムは依然として共有されたままである。従来のプロセッサは、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、様々な特定用途向け集積回路ASIC)、またはその他同種のもの、を含む。図1はCPUの一例を示し、図2はGPUの一例を示す。

0072

図1で示されるように、CPU100は、プロセッササブユニット120aおよびプロセッササブユニット120bなど、1または複数のプロセッササブユニットを含む処理ユニット110を備え得る。図1では示されていないが、各プロセッササブユニットは、複数の処理要素を含んでもよい。さらに、処理ユニット110は、オンチップキャッシュの1または複数のレベルを含んでもよい。こうしたキャッシュ要素は一般的に、プロセッササブユニット120aおよび120bに接続されるというよりも、プロセッササブユニット120aおよび120bならびにキャッシュ要素を含む基板内に形成される1または複数のバスを介して処理ユニット110と同じ半導体ダイに形成される。バスを介して接続されるのではなく、同じダイに直接配置されることは、従来のプロセッサ内の1次(L1)キャッシュおよび2次(L2)キャッシュの両方に共通している。あるいは、より旧型のプロセッサでは、プロセッササブユニットと2次(L2)キャッシュ間バックサイドバスを用いてプロセッササブユニット間で2次(L2)キャッシュが共有される。バックサイドバスは一般的に、以下で記載するフロントサイドバスよりも大きい。したがって、キャッシュはダイ上で全てのプロセッササブユニットと共有されるため、キャッシュ130はプロセッササブユニット120aおよび120bと同じダイ上に形成することができる、または1または複数のバックサイドバスを介してプロセッササブユニット120aおよび120bに通信可能に連結することができる。(例えば、キャッシュが直接ダイに形成される)バスのない実施形態、ならびにバックサイドバスを用いた実施形態の両方の実施形態では、キャッシュはCPUのプロセッササブユニット間で共有される。

0073

さらに、処理ユニット110は、共有メモリ140aおよびメモリ140bと通信する。例えば、メモリ140aおよびメモリ140bは、共有ダイナミックランダムアクセスメモリDRAM)のメモリバンクを表し得る。2つのメモリバンクで示されているが、最も従来的なメモリチップは8個から16個のメモリバンクを含んでいる。したがって、プロセッササブユニット120aおよび120bは、共有メモリ140aおよび140bを用いて、その後プロセッササブユニット120aおよび120bによって動作されるデータを記憶することができる。ただし、この配置により、処理ユニット110のクロック速度がバスのデータ転送速度を上回る場合に、メモリ140aおよび140bと処理ユニット110との間のバスがボトルネックとして作用することになる。このことは一般的に従来のプロセッサに当てはまることであり、その結果、クロック速度およびトランジスタの数に基づいて、上述の処理速度よりも処理速度の効率が悪くなる。

0074

図2で示されるように、類似の欠陥がGPU内で持続している。GPU200は、1または複数のプロセッササブユニット(例えば、サブユニット220a、 220b、220c、 220d、 220e、 220f、 220g、 220h、 220i、 220j、 220k、 220l、 220m、 220n、 220o、および220p)を含む処理ユニット210を備え得る。さらに、処理ユニット210は、オンチップキャッシュの1または複数のレベルおよび/またはレジスタファイルを含んでもよい。このようなキャッシュ要素は一般的に処理ユニット210と同じ半導体ダイで形成される。実際、図2の例では、キャッシュ210は処理ユニット210と同じダイで形成され、全てのプロセッササブユニット間で共有される一方、キャッシュ230a、230b、230c、および230dはそれぞれプロセッササブユニットのサブセットに形成され、そのプロセッササブユニットのサブユニットの専用となる。

0075

さらに、処理ユニット210は共有メモリ250a、250b、250c、および250dと通信する。例えば、メモリ250a、250b、250c、および250dは、共有ダイナミックランダムアクセスメモリ(DRAM)のメモリバンクを表し得る。したがって、処理ユニット210のプロセッササブユニットは共有メモリ250a、250b、250c、および250bを用いて、その後プロセッササブユニットによって動作されるデータを記憶することができる。ただし、この配置により、メモリ250a、250b、250c、および250bと処理ユニット210との間のバスが、上記のCPUのボトルネックに似たボトルネックとして作用することになる。

0076

[開示されるハードウェアチップの概要]
図3Aは、例示的なハードウェアチップ300を示す一実施形態の概略図である。ハードウェアチップ300は、CPU、GPU、および他の従来のプロセッサの上記のボトルネックを軽減するように設計された分散型プロセッサを含み得る。分散型プロセッサは、単一基板に空間的に分散される複数のプロセッササブユニットを含み得る。さらに、前述のように、本開示の分散型プロセッサでは、対応するメモリバンクがさらに単一基板に空間的に分散される。いくつかの実施形態では、分散型プロセッサは命令のセットと関連付けることができ、分散型プロセッサのプロセッササブユニットの各々は、命令のセット内に含まれる1または複数のタスクの実行を担うことができる。

0077

図3Aで示されるように、ハードウェアチップ300は、複数のプロセッササブユニット、例えば、論理および制御サブユニット320a、320b、320c、320d、320e、320f、320g、および320hを含んでもよい。さらに図3Aで示されるように、各プロセッササブユニットは、専用メモリインスタンスを含み得る。例えば、論理および制御サブユニット320aは専用メモリインスタンス330aに動作可能に接続され、論理および制御サブユニット320bは専用メモリインスタンス330bに動作可能に接続され、論理および制御サブユニット320cは専用メモリインスタンス330cに動作可能に接続され、論理および制御サブユニット320dは専用メモリインスタンス330dに動作可能に接続され、論理および制御サブユニット320eは専用メモリインスタンス330eに動作可能に接続され、論理および制御サブユニット320fは専用メモリインスタンス330fに動作可能に接続され、論理および制御サブユニット320gは専用メモリインスタンス330gに動作可能に接続され、論理および制御サブユニット320hは専用メモリインスタンス330hに動作可能に接続される。

0078

図3Aは各メモリインスタンスを単一メモリバンクとして示すが、ハードウェアチップ300は、ハードウェアチップ300上のプロセッササブユニットの専用メモリインスタンスとして2つ以上のメモリバンクを含み得る。さらに、図3Aは、論理コンポーネントと、専用メモリバンクの制御と、の両方を含むものとして各プロセッササブユニットを示すが、ハードウェアチップ300は、少なくとも部分的に論理コンポーネントから分離するメモリバンクのコントロールを利用することができる。さらに、図3Aで示されるように、2つ以上のプロセッササブユニットおよびプロセッササブユニットに対応するメモリバンクは、例えば、処理グループ310a、310b、310c、および310dに分類することができる。「処理グループ」は、ハードウェアチップ300が形成される基板上の空間的区別を表し得る。したがって、処理グループはさらに、グループ内のメモリバンクの制御、例えば、制御340a、340b、340c、および340dを含み得る。この代わりに、またはこれに加えて、「処理グループ」は、ハードウェアチップ300で実行するコードをコンパイルするための論理グループを表し得る。したがって、ハードウェアチップ300のコンパイラ(以下でさらに記載する)は、命令のセット全体をハードウェアチップ300上の処理グループ間に分割することができる。

0079

さらに、ホスト350は、命令、データ、およびその他の入力をハードウェアチップ300に提供し、同ハードウェアチップからの出力を読み込むことができる。したがって、命令のセットは、単一ダイ、例えばハードウェアチップ300のホストとして働くダイ上に全体的に実行することができる。実際、オフダイ通信は、ハードウェアチップ300への命令のローディング、ハードウェアチップ300に送信されるあらゆる入力、ハードウェアチップ300から読み込まれるあらゆる出力を含み得るだけである。したがって、全ての計算および全てのメモリ動作オンダイで(ハードウェアチップ300上で)実行することができる。これは、ハードウェアチップ300のプロセッササブユニットがハードウェアチップ300の専用メモリバンクと通信するからである。

0080

図3Bは、別の例示的なハードウェアチップ300′を示す一実施形態の概略図である。図3Bで示されるアーキテクチャは、ハードウェアチップ300の代替として示されるが、図3Aで示されるアーキテクチャと少なくとも部分的に組み合わせることができる。

0081

図3Bで示されるように、ハードウェアチップ300′は、複数のプロセッササブユニット、例えば、プロセッササブユニット350a、350b、350c、および350dを含み得る。さらに図3Bで示されるように、各プロセッササブユニットは、複数の専用メモリインスタンスを含み得る。例えば、プロセッササブユニット350aは専用メモリインスタンス330aおよび330bに動作可能に接続され、プロセッササブユニット350bは専用メモリインスタンス330cおよび330dに動作可能に接続され、プロセッササブユニット350cは専用メモリインスタンス330eおよび330fに動作可能に接続され、プロセッササブユニット350dは専用メモリインスタンス330gおよび330hに動作可能に接続される。さらに、図3Bで示されるように、プロセッササブユニットおよびプロセッササブユニットに対応するメモリバンクは、例えば処理グループ310a、310b、310c、および310dに分類することができる。前述のように、「処理グループ」は、ハードウェアチップ300′が形成される基板上の空間的区別、および/またはハードウェアチップ300′で実行するコードをコンパイルするための論理グループ、を表し得る。

0082

さらに図3Bで示されるように、プロセッササブユニットはバスを介して互いに通信することができる。例えば、図3Bで示されるように、プロセッササブユニット350aは、バス360aを介してプロセッササブユニット350bと、バス360cを介してプロセッササブユニット350cと、バス360fを介してプロセッササブユニット350dと、通信することができる。同様に、プロセッササブユニット350bは、(上記のように)バス360aを介してプロセッササブユニット350aと、バス360eを介してプロセッササブユニット350cと、バス360dを介してプロセッササブユニット350dと、通信することができる。さらに、プロセッササブユニット350cは、(上記のように)バス360cを介してプロセッササブユニット350aと、(上記のように)バス360eを介してプロセッササブユニット350bと、バス360bを介してプロセッササブユニット350dと、通信することができる。したがって、プロセッササブユニット350dは、(上記のように)バス360fを介してプロセッササブユニット350aと、(上記のように)バス360dを介してプロセッササブユニット350bと、(上記のように)バス360bを介してプロセッササブユニット350cと、通信することができる。当業者は、図3Bで示されるよりも少ないバスを利用することができることを理解するであろう。例えば、バス360eを無くすことによって、結果プロセッササブユニット350bおよび350c間の通信はプロセッササブユニット350aおよび/または350dを経由して伝えることができる。同様に、バス360fを無くすことによって、結果プロセッササブユニット350aおよびプロセッササブユニット350d間の通信はプロセッササブユニット350bまたは350cを経由して伝えることができる。

0083

さらに、当業者は、図3Aおよび図3Bで示されるアーキテクチャとは異なるアーキテクチャを利用することができることを理解するであろう。例えば、各々が単一のプロセッササブユニットおよび単一のメモリインスタンスを備える処理グループのアレイを基板上に配置することができる。プロセッササブユニットは、対応する専用メモリバンクのコントローラの一部、対応する専用メモリバンクのメモリマットのコントローラの一部、またはその他同種のものを追加的または代替的に形成することができる。

0084

上記のアーキテクチャを鑑みると、ハードウェアチップ300および300′は、従来のアーキテクチャと比べてメモリ負荷の高いタスクの効率性を著しく高めることができる。例えば、データベース演算および(ニューラルネットワークなどの)人工知能アルゴリズムは、従来のアーキテクチャが効率性でハードウェアチップ300および300′に劣るメモリ負荷の高いタスクの例である。したがって、ハードウェアチップ300および300′は、データベースアクセラレータプロセッサおよび/または人工知能アクセラレータプロセッサと呼ばれ得る。

0085

[開示されるハードウェアチップの構成]
上記のハードウェアチップのアーキテクチャはコードを実行するように構成することができる。例えば、各プロセッササブユニットは、ハードウェアチップ内の他のプロセッササブユニットとは別の(命令のセットを定義する)コードを個別に実行することができる。したがって、マルチスレッディングを管理するオペレーティングシステムに依存するのではなく、または(並列処理ではなく同時実行する)マルチタスキングを利用するのではなく、本開示のハードウェアチップによりプロセッササブユニットは完全並列演算をすることが可能となり得る。

0086

上記の完全並列の実装に加えて、各プロセッササブユニットに割り当てられる命令の少なくともいくつかがオーバーラップし得る。例えば、分散型プロセッサ上の複数のプロセッササブユニットは、例えば、オペレーティングシステムまたはその他の管理ソフトウェアの実装としてオーバーラップ命令を実行することができる一方、オペレーティングシステムまたはその他の管理ソフトウェアのコンテキスト内で並列タスクを実行するために非オーバーラップ命令を実行することができる。

0087

図4は、汎用コマンドを処理グループ410で実行する例示的なプロセス400を示す。例えば、処理グループ410は、本開示のハードウェアチップ、例えば、ハードウェアチップ300、ハードウェアチップ300′の一部分、またはその他同種のものを含み得る。

0088

図4で示されるように、コマンドは、専用メモリインスタンス420と組み合わされるプロセッササブユニット430に送信することができる。外部ホスト(例えば、ホスト350)は実行するためにコマンドを処理グループ410に送信することができる。あるいは、ホスト350は記憶するためのコマンドを含む命令のセットをメモリインスタンス420内に送信することで、結果、プロセッササブユニット430がメモリインスタンス420からコマンドを引き出し、引き出したコマンドを実行することができる。したがって、コマンドは、受信したコマンドを実行するように構成可能である汎用処理要素である処理要素440によって実行されてもよい。さらに、処理グループ410は、メモリインスタンス420の制御460を含み得る。図4で示されるように、制御460は、受信したコマンドを実行する際に処理要素440が必要とするメモリインスタンス420に対してあらゆる読み込みおよび/または書き込みを実行できる。コマンドを実行した後、処理グループ410は、例えば、外部ホストまたは同ハードウェアチップ上の異なる処理グループにコマンドの結果を出力することができる。

0089

いくつかの実施形態では、図4で示されるように、プロセッササブユニット430はさらに、アドレスジェネレータ450を含み得る。「アドレスジェネレータ」は、読み込みおよび書き込みを実行するために1または複数のメモリバンク内のアドレスを決定するように構成される複数の処理要素を含み得て、さらに、決定されたアドレスに配置されるデータを演算すること(例えば、加算、減算、乗算、またはその他同種のもの)ができる。例えば、アドレスジェネレータ450は、メモリにあらゆる読み込みまたは書き込みを行うアドレスを決定することができる。一例では、アドレスジェネレータ450は、読み込み値がもはや不要となった場合にコマンドに基づいて決定される新しい値を読み込み値に上書きすることによって効率性を高めることができる。この代わりに、またはこれに加えて、アドレスジェネレータ450は、コマンドの実行結果を記憶するために利用可能なアドレスを選択することができる。これにより、外部ホストにとってさらに都合が良いその後のクロックサイクル時に、読み込んだ結果をスケジューリングすることが可能となり得る。別の例では、アドレスジェネレータ450は、ベクトルまたは行列積和計算などの複数サイクル計算中に読み込みおよび書き込みを行うアドレスを決定することができる。したがって、アドレスジェネレータ450は、プロセッササブユニット430がメモリアドレスを記憶する必要なく継続して処理できるように、データを読み込み、複数サイクル計算の中間結果を書き込むこれらのメモリアドレスを管理または計算することができる。

0090

図5は、専用コマンドを処理グループ510で実行する例示的なプロセス500を示す。例えば、処理グループ510は、本開示のハードウェアチップ、例えば、ハードウェアチップ300、ハードウェアチップ300′の一部分、またはその他同種のものを含み得る。

0091

図5で示されるように、専用コマンド(例えば、乗累算コマンド)は、専用メモリインスタンス520と組み合わされる処理要素530に送信することができる。外部ホスト(例えば、ホスト350)は実行するためにコマンドを処理要素530に送信することができる。したがって、コマンドは、処理要素530、すなわち(受信したコマンドを含む)特定のコマンドを実行するように構成可能である専用処理要素によってホストからの所定の信号で実行することができる。あるいは、処理要素530は、実行するためにメモリインスタンス520からコマンドを引き出すことができる。このように、図5の例では、処理要素530は、外部ホストから受信され、メモリインスタンス520から引き出される乗累算(MAC)コマンドを実行するように構成される乗累算(MAC)回路である。コマンドを実行した後、処理グループ510は、例えば、外部ホストまたは同ハードウェアチップ上の異なる処理グループにコマンドの結果を出力することができる。単一のコマンドおよび単一の結果で示されるが、複数のコマンドを受信または引き出し、および実行することができ、複数の結果を出力前に処理グループ510に組み合わせることができる。

0092

図5MAC回路として示されるが、追加的または代替的な専用回路を処理グループ510内に含めることができる。例えば、MAX読み込みコマンド(ベクトルの最大値を戻す)と、MAX—0読み込みコマンド(整流器とも呼ばれ、全ベクトルを戻すが、さらにMAXを0で戻す共通関数)と、またはその他同種のものと、を実装することができる。

0093

別々に示されるが、図4の汎用処理グループ410および図5の専用処理グループ510は組み合わせることができる。例えば、汎用プロセッササブユニットを1または複数の専用プロセッササブユニットに連結してプロセッササブユニットを形成することができる。したがって、汎用プロセッササブユニットは、1または複数の専用プロセッササブユニットによって実行可能ではない全ての命令用に利用することができる。

0094

ニューラルネットワークの実装およびその他のメモリ負荷の高いタスクは専用論理回路で処理できることが当業者には理解されよう。例えば、データベースクエリパケットインスペクションストリング比較、およびその他の機能は、本明細書で記載されるハードウェアチップによって実行されれば効率性を高めることができる。

0095

分散型処理用メモリベースアーキテクチャ本開示と一致するハードウェアチップ上で、専用バスは、ハードウェアチップ上のプロセッササブユニット間、および/またはプロセッササブユニットとプロセッササブユニットに対応する専用メモリバンクとの間でデータを転送することができる。専用バスを使用することによりアービトレーションコストを削減できる。これは、競合要求が起こり得なくなるため、またはハードウェアではなくソフトウェアを使用して競合要求を容易に回避するためである。

0096

図6は、処理グループ600の概略図を図式的に示す。処理グループ600は、ハードウェアチップ、例えば、ハードウェアチップ300、ハードウェアチップ300′、またはその他同種のものに使用されてもよい。プロセッササブユニット610は、バス630を介してメモリ620に接続することができる。メモリ620は、プロセッササブユニット610が実行するデータおよびコードを記憶するランダムアクセスメモリ(RAM)要素を含んでもよい。いくつかの実施形態では、メモリ620は、Nウェイ(N−way)メモリであってもよい(Nは、インタリーブドメモリ620内のセグメントの数を示す1以上の数である)。プロセッササブユニット610はバス630を介してプロセッササブユニット610専用のメモリ620に連結されるため、Nは実効性能を損なうことなく比較的少数のままに維持できる。これは、Nの数が少数になると概して実効性能がかなり落ちることにつながり、Nの数が多くなると概して大面積となり電力損失がもたらされる従来のマルチウェイレジスタファイルまたはマルチウェイキャッシュの改善を示す。

0097

メモリ620のサイズ、ウェイの数、およびバス630の幅は、例えばタスクまたは複数のタスク内に含まれるデータサイズに従って、処理グループ600を使用してシステムのタスクおよびアプリケーション実装の要件を満たすように調節することができる。メモリ要素620は、当該技術分野で知られる1または複数のメモリタイプ、例えば、揮発性メモリ(RAM、DRAM、SRAM、相変化RAM(PRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(ReRAM)、またはその他同種のもの)、または不揮発性メモリ(フラッシュメモリまたはROM)を含み得る。いくつかの実施形態によると、メモリ要素620部分は第1のメモリタイプを含んでもよく、別の部分は別のメモリタイプを含んでもよい。例えば、メモリ要素620のコード領域はROM要素を含んでもよく、メモリ要素620のデータ領域はDRAM要素を含んでもよい。このような区分の別の例は、ニューラルネットワークのウェイトをFlash内に記憶し、計算データDRAM内に記憶する。

0098

プロセッササブユニット610は、プロセッサを含み得る処理要素640を備えてもよい。本プロセッサパイプライン化してもよいし、またはパイプライン化しなくてもよく、当業者によって理解されるように、カスタマイズされた縮小命令セットコンピューティングRISC)要素またはその他の処理スキームが、当技術分野にて周知であるあらゆる市販の集積回路(IC)(例えばARM,ARC,RISC−Vなど)上に実装される。処理要素640は、いくつかの実施形態において、算術論理演算ユニットALU)を含むコントローラ、またはその他のコントローラを備え得る。

0099

いくつかの実施形態によると、受信コードまたは記憶コードを実行する処理要素640は、汎用処理要素を含んでもよいため、フレキシブルになり得、様々な処理動作を実行することができる。非専用回路は一般的に、特定演算の実行時に消費される電力と比較すると、特定演算専用回路よりも電力を消費する。したがって、特殊で複雑な算術計算を実行する場合、処理要素640は、専用ハードウェアよりも多くの電力を消費し、効果的に実行しない場合がある。したがって、いくつかの実施形態によると、処理要素640のコントローラは、特定演算(例えば、加算演算または「移動」演算)を実行するように設計することができる。

0100

一例では、特定演算は、1または複数のアクセラレータ650によって実行することができる。各アクセラレータは、(乗算、浮動小数点ベクトル演算、またはその他同種のものなど)特殊計算の実行を専門に、およびプログラムできる。アクセラレータを使用することによって、プロセッササブユニット毎の1計算あたりの平均電力消費を削減でき、その後計算スループットが向上する。このシステムが実装する(例えば、ニューラルネットワークを実行する、データベースクエリ、またはその他同種のものを実行する)ように設計されるアプリケーションに従って、アクセラレータ650を選ぶことができる。アクセラレータ650は処理要素640によって構成することができ、電力消費を削減し、計算および演算を加速するために処理要素640と同時に動作することができる。追加または代替として、アクセラレータを使用してメモリと、スマートDMAダイレクトメモリアクセス)の周辺装置などの処理グループ600のマルチプレクサ(MUX)/デマルチプレクサ(DEMUX)/入力ポート出力ポート(例えば、マルチプレクサ(MUX)650およびデマルチプレクサ(DEMUX)660)との間でデータを転送することができる。

0101

アクセラレータ650は、様々な機能を実行するように構成することができる。例えば、1つのアクセラレータは、ニューラルネットワークで頻繁に使用される16ビット浮動小数点計算または8ビットの整数計算を実行するように構成することができる。アクセラレータ機能の別の例は、ニューラルネットワークのトレーニング段階中に頻繁に使用される32ビットの浮動小数点の計算である。アクセラレータ機能のさらに別の例は、データベース内で使用されるものなど、クエリ処理である。いくつかの実施形態では、アクセラレータ650は、これらの機能を実行する専用処理要素を含み得て、および/またはアクセラレータ650は、メモリ要素620に記憶される構成データに従って、構成データが修正できるように構成することができる。

0102

アクセラレータ650は、追加または代替として、メモリ620に/メモリ620から、またはその他のアクセラレータに/その他のアクセラレータからデータを移動させる時間を決める、および/またはデータ入力データ出力の時間を決めるメモリ移動の構成可能なスクリプトリストを実装することができる。したがって、さらに以下で詳述するように、処理グループ600を使用したハードウェアチップ内の全てのデータ移動は、ハードウェア同期ではなくソフトウェア同期を利用してもよい。例えば、1つの処理グループ(例えば、グループ600)内のアクセラレータは、入力からのデータを10サイクル毎にアクセラレータに転送し、次いで次のサイクルでデータを出力することができる。こうすることによって、データが処理グループのメモリから別のメモリに流れる。

0103

図6でさらに示されるように、いくつかの実施形態では、処理グループ600はさらに、入力ポートに接続される少なくとも1つの入力マルチプレクサ(MUX)660と、出力ポートに接続される少なくとも1つの出力デマルチプレクサDEMUX670と、を含んでもよい。これらのMUX/DEMUXは、処理要素640からの、および/またはアクセラレータ650のうち1つのアクセラレータからの制御信号(図示せず)によって制御でき、処理要素640によって実行される最新の命令および/またはアクセラレータ650のうち1つのアクセラレータによって実行される演算に従ってMUX/DEMUXを決定することができる。いくつかのシナリオでは、入力ポートから出力ポートにデータを転送するように(コードメモリからの予め定義された命令に従って)処理グループ600に要求することができる。したがって、1または複数の入力MUX(例えば、MUX660)は、1または複数のバスを介して出力DEMUX(例えば、DEMUX670)に直接接続することができ、さらにDEMUX/MUXの各々は処理要素640およびアクセラレータ650に接続される。

0104

図6の処理グループ600は、例えば図7Aで示されるように、分散型プロセッサを形成するように配列することができる。処理グループを基板710上に配置してアレイを形成することができる。いくつかの実施形態では、基板710はシリコンなどの半導体基板を含んでもよい。この代わりに、またはこれに加えて、基板710は、フレキシブル回路基板などの回路基板を含んでもよい。

0105

図7Aで示されるように、基板710は、その基板上に配置される処理グループ600などの複数の処理グループを含んでもよい。したがって、基板710は、バンク720a、720b、720c、720d、720e、720f、720g、および720hなどの複数のバンクを含むメモリアレイを備える。さらに、基板710は、サブユニット730a、730b、730c、730d、730e、730f、730g、および730hなどの複数のプロセッササブユニットを含み得る処理アレイを備える。

0106

さらに、前述のように、各処理グループは、プロセッササブユニットと、プロセッササブユニット専用の1または複数の対応する専用メモリバンクと、含み得る。したがって、図7Aで示されるように、各サブユニットは、対応する専用メモリバンクと関連付けられる。すなわち、プロセッササブユニット730aはメモリバンク720aと関連付けられ、プロセッササブユニット730bはメモリバンク720bと関連付けられ、プロセッササブユニット730cはメモリバンク720cと関連付けられ、プロセッササブユニット730dはメモリバンク720dと関連付けられ、プロセッササブユニット730eはメモリバンク720eと関連付けられ、プロセッササブユニット730fはメモリバンク720fと関連付けられ、プロセッササブユニット730gはメモリバンク720gと関連付けられ、プロセッササブユニット730hはメモリバンク720hと関連付けられる。

0107

各プロセッササブユニットがプロセッササブユニットに対応する専用メモリバンクと通信できるようにするために、基板710は、プロセッササブユニットの1つをプロセッササブユニットに対応する専用メモリバンクに接続する第1の複数のバスを含み得る。したがって、バス740aはプロセッササブユニット730aをメモリバンク720aに接続し、バス740bはプロセッササブユニット730bをメモリバンク720bに接続し、バス740cはプロセッササブユニット730cをメモリバンク720cに接続し、バス740dはプロセッササブユニット730dをメモリバンク720dに接続し、バス740eはプロセッササブユニット730eをメモリバンク720eに接続し、バス740fはプロセッササブユニット730fをメモリバンク720fに接続し、バス740gはプロセッササブユニット730gをメモリバンク720gに接続し、バス740hはプロセッササブユニット730hをメモリバンク720hに接続する。さらに、各プロセッササブユニットがその他のプロセッササブユニットと通信できるようにするために、基板710は、プロセッササブユニットの1つを別のプロセッササブユニットに接続する第2の複数のバスを含み得る。図7Aの例では、バス750aはプロセッササブユニット730aをプロセッササブユニット750eに接続し、バス750bはプロセッササブユニット730aをプロセッササブユニット750bに接続し、バス750cはプロセッササブユニット730bをプロセッササブユニット750fに接続し、バス750dはプロセッササブユニット730bをプロセッササブユニット750cに接続し、バス750eはプロセッササブユニット730cをプロセッササブユニット750gに接続し、バス750fはプロセッササブユニット730cをプロセッササブユニット750dに接続し、バス750gはプロセッササブユニット730dをプロセッササブユニット750hに接続し、バス750hはプロセッササブユニット730hをプロセッササブユニット750gに接続し、バス750iはプロセッササブユニット730gをプロセッササブユニット750gに接続し、バス750jはプロセッササブユニット730fをプロセッササブユニット750eに接続する。

0108

したがって、図7Aで示される例示的な配置では、複数の論理プロセッササブユニットが少なくとも1つの行および少なくとも1つの列内に配置される。第2の複数のバスが、同じ行における少なくとも1つの隣接するプロセッササブユニットおよび同じ列における少なくとも1つの隣接するプロセッササブユニットに各プロセッササブユニットを接続する。図7Aは「タイル部分接続」と呼んでもよい。

0109

図7Aで示される配置を修正して「タイル全域接続」を形成してもよい。タイル全域接続は、対角線のプロセッササブユニットを接続する追加のバスを含む。例えば、第2の複数のバスは、プロセッササブユニット730aとプロセッササブユニット730f間に、プロセッササブユニット730bとプロセッササブユニット730e間に、プロセッササブユニット730bとプロセッササブユニット730g間に、プロセッササブユニット730cとプロセッササブユニット730f間に、プロセッササブユニット730cとプロセッササブユニット730h間に、プロセッササブユニット730dとプロセッササブユニット730g間に、追加のバスを含み得る。

0110

タイル全域接続は、近傍のプロセッササブユニット内に記憶されるデータおよび結果を使用するコンボリューション計算用に利用することができる。例えば、画像のコンボリューション処理時に、各プロセッササブユニットは画像のタイル(画素または画素群など)を受信することができる。コンボリューション結果を計算するために、各プロセッササブユニットは、隣接する8つ全てのプロセッササブユニットからデータを取得することができ、プロセッササブユニットの各々は対応するタイルを受信する。タイル部分接続では、対角線上の隣接するプロセッササブユニットからのデータを、プロセッササブユニットに接続される他の隣接するプロセッササブユニットを介して渡すことができる。したがって、チップ上の分散型プロセッサは、人工知能アクセラレータプロセッサであってもよい。

0111

コンボリューション計算の具体例では、N×M画像を複数のプロセッササブユニット全体に分割することができる。各プロセッササブユニットは、プロセッササブユニットの対応するタイル上のA×Bフィルタでコンボリューションを実行することができる。タイル間境界上の1または複数の画素にフィルタリングを実行するために、各プロセッササブユニットは、同境界上の画素を含んだタイルを有する隣接するプロセッササブユニットからデータを要求できる。したがって、各プロセッササブユニット用に生成されるコードは、隣接するサブユニットからデータが必要となる場合にいつでもサブユニットがコンボリューションを計算する、および第2の複数のバスのうち1つのバスからプルするように構成される。必要とされるデータ転送の適切なタイミングを確保するために、データを第2の複数のバスに出力するための対応するコマンドがサブユニットに提供される。

0112

図7Aのタイル部分接続を変更してNタイル部分接続にしてもよい。この変更では、第2の複数のバスはさらに、図7Aのバスが実行する4つの方向(すなわち、上、下、左、右)で各プロセッササブユニットをプロセッササブユニットの閾値距離内(例えば、nプロセッササブユニット内)のプロセッササブユニットに接続することができる。同様の変更をタイル全域接続に行う(結果Nタイル全域接続になる)ことで、結果、第2の複数のバスはさらに、2つの対角線方向に加えて、図7Aのバスが実行する4つの方向で各プロセッササブユニットをプロセッササブユニットの閾値距離内(例えば、nプロセッササブユニット内)のプロセッササブユニットに接続することができる。

0113

その他の配置も可能である。例えば、図7Bで示される配置では、バス750aはプロセッササブユニット730aをプロセッササブユニット730dに接続し、バス750bはプロセッササブユニット730aをプロセッササブユニット730bに接続し、バス750cはプロセッササブユニット730bをプロセッササブユニット730cに接続し、バス750dはプロセッササブユニット730cをプロセッササブユニット730dに接続する。したがって、図7Bで示される例示的な配置では、複数のプロセッササブユニットはスター型パターンで配置される。第2の複数のバスが各プロセッササブユニットを少なくとも1つの隣接するプロセッササブユニットにスター型パターンで接続する。

0114

さらなる配置(図示せず)も可能である。例えば、隣接接続配置を利用することによって、複数のプロセッササブユニットを1または複数のラインで配置することができる(例えば、図7Aで示される配置に類似する)。隣接接続配置では、第2の複数のバスが各プロセッササブユニットを同ラインの左側のプロセッササブユニットに、同ラインの右側のプロセッササブユニットに、同ラインの左側および右側の両方のプロセッササブユニットに接続する。

0115

別の例では、Nライン接続配置を利用することができる。Nライン接続配置では、第2の複数のバスが、各プロセッササブユニットをプロセッササブユニットの閾値距離内(例えば、nプロセッササブユニット内)のプロセッササブユニットに接続する。Nライン接続配置は、ラインアレイ(上記)、矩形アレイ(図7Aで図示)、楕円アレイ(図7Bで図示)、またはその他のあらゆる幾何学的アレイで利用することができる。

0116

さらに別の例では、Nログ接続配置を利用することができる。Nログ接続配置では、第2の複数のバスが、各プロセッササブユニットをプロセッササブユニットの2つの距離の閾値パワー内(例えば、2nプロセッササブユニット内)のプロセッササブユニットに接続する。Nログ接続配置は、ラインアレイ(上記)、矩形アレイ(図7Aで図示)、楕円アレイ(図7Bで図示)、またはその他のあらゆる幾何学的アレイで利用することができる。

0117

上記のあらゆる接続方式は、同じハードウェアチップ用に組み合わせることができる。例えば、ある領域ではタイル全域接続を利用することができ、別の領域ではタイル部分接続を利用する。別の例では、ある領域ではNライン接続配置を利用することができ、別の領域ではNタイル全域接続を利用する。

0118

メモリチップのプロセッササブユニット間の専用バスの追加として、または代替として、1または複数の共有バスを利用して分散型プロセッサの全てのプロセッササブユニット(またはそのサブセット)を相互接続できる。さらに、以下で詳述するように、プロセッササブユニットによって実行されるコードを使用して、共有バス上でのデータ転送の時間を調節することによって共有バス上での衝突を回避できる。共有バスの追加として、または代替として、設定可能なバスを使用してプロセッササブユニットを動的に接続し、分離したバスに接続されるプロセッサユニットのグループを形成することができる。例えば、設定可能なバスは、データ転送を選択されたプロセッササブユニットに導くためにプロセッササブユニットによって制御され得るトランジスタまたはその他の機構を含んでもよい。

0119

図7Aおよび図7Bの両方では、処理アレイの複数のプロセッササブユニットがメモリアレイの複数の個別のメモリバンク間に空間的に分散される。他の代替実施形態(図示せず)では、基板の1または複数の領域内に複数のプロセッササブユニットを集めてグループにすることができ、基板の1または複数の他の領域内に複数のメモリバンクを集めてグループにすることができる。いくつかの実施形態では、空間的分散およびグループ分類の組み合わせを利用することができる(図示せず)。例えば、基板のある領域はプロセッササブユニットのグループを含んでもよく、基板の別の領域はメモリバンクのグループを含んでもよく、基板のさらに別の領域はメモリバンク間に分散される処理アレイを含んでもよい。

0120

当業者は、処理グループ600を基板に配置することは、排他的な実施形態ではないことを理解するであろう。例えば、各プロセッササブユニットは少なくとも2つの専用メモリバンクと関連付けることができる。したがって、図3Bの処理グループ310a、310b、310c、および310dは、処理グループ600の代わりに、または処理グループ600と組み合わせて利用して、処理アレイおよびメモリアレイを形成することができる。例えば3および4以上の専用メモリバンク(図示せず)を含む他の処理グループを利用することができる。

0121

複数のプロセッササブユニットの各々は、複数のプロセッササブユニット内に含まれる他のプロセッササブユニットに対して、独立した特定のアプリケーションと関連付けられるソフトウェアコードを実行するように構成してもよい。例えば、以下で説明するように、複数のサブシリーズ命令をマシンコードとして分類し、実行するために各プロセッササブユニットに与えることができる。

0122

いくつかの実施形態では、各専用メモリバンクは少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)を含む。あるいは、メモリバンクは、スタティックランダムアクセスメモリ(SRAM)、DRAM、Flash、またはその他同種のものなどのメモリタイプの組み合わせを含んでもよい。

0123

従来のプロセッサでは、プロセッササブユニット間のデータ共有は、共有メモリで通常実行される。共有メモリは一般的にチップ領域の大部分を必要とし、および/または追加のハードウェア(アービタなど)によって管理されるバスを実行してきた。上記のように、バスがボトルネックにつながる。さらに、チップの外部にあってもよい共有メモリは一般的に、正確かつ最新のデータをプロセッササブユニットに提供するためのキャッシュコヒーレンス機構、およびより複雑なキャッシュ(例えば、L1キャッシュ、L2キャッシュ、および共有DRAM)を含む。以下で詳述するように、図7Aおよび図7Bで示される専用バスは、ハードウェア管理(アービタなど)がないハードウェアチップを可能にする。さらに、図7Aおよび図7Bで示される専用バスを使用することによって、複雑なキャッシュ層および複雑なキャッシュコヒーレンス機構を無くすことができる。

0124

代わりに、他のプロセッササブユニットによって計算される、および/または他のプロセッササブユニット専用のメモリバンク内に記憶されるデータに各プロセッササブユニットがアクセスできるようにするために、各プロセッササブユニットによって個別に実行されるコードを使用してタイミングが動的に実行されるバスを提供する。これにより、従来使用していたバス管理ハードウェアのほぼ全てを無くすことが可能となる さらに、複雑なキャッシュ機構が、これらのバスを利用した直接転送に取って代わられ、結果メモリの読み込みおよび書き込み時の待ち時間がより短くなる。

0125

[メモリベース処理アレイ]
図7Aおよび図7Bで示されるように、本開示のメモリチップは独立して動作することができる。あるいは、本開示のメモリチップは、メモリデバイス(例えば、1または複数のDRAMバンク)、システムオンチップフィールドプログラマブルゲートアレイFPGA)、またはその他の処理チップおよび/またはメモリチップなど、1または複数の追加の集積回路と動作可能に接続することができる。こうした実施形態では、アーキテクチャによって実行される一連の命令におけるタスクは(例えば下記のコンパイラによって)、メモリチップのプロセッササブユニットと、追加の集積回路のあらゆるプロセッササブユニットとの間に分割することができる。例えば、その他の集積回路は、命令および/またはデータをメモリチップに入力し、メモリチップから出力を受信するホスト(例えば、図3Aのホスト350)を含んでもよい。

0126

本開示のメモリチップを1または複数の追加の集積回路と相互接続するために、メモリチップは、電子素子技術連合評議会JEDEC規格準拠したメモリインタフェースまたはその変種のメモリインタフェースなどのメモリインタフェースを含んでもよい。次いで1または複数の追加の集積回路はメモリインタフェースに接続することができる。したがって、1または複数の追加の集積回路が本開示の複数のメモリチップに接続される場合、データは1または複数の追加の集積回路を介してメモリチップ間で共有することができる。この代わりに、またはこれに加えて、1または複数の追加の集積回路は本開示のメモリチップ上のバスに接続するバスを含み得るため、結果、1または複数の追加の集積回路は本開示のメモリチップと同時にコードを実行することができる。このような実施形態では、1または複数の追加の集積回路が本開示のメモリチップとは異なる基板上にある場合でも、1または複数の追加の集積回路はさらに分散処理支援する。

0127

さらに、本開示のメモリチップは分散型プロセッサのアレイを形成するために配置してもよい。例えば、1または複数のバスは、図7Cで示されるように、メモリチップ770aを追加のメモリチップ770bに接続できる図7Cの例では、メモリチップ770aは、各プロセッササブユニット専用の1または複数の対応するメモリバンクを備えるプロセッササブユニットを含む。例えば、プロセッササブユニット730aはメモリバンク720aと関連付けられ、プロセッササブユニット730bはメモリバンク720bと関連付けられ、プロセッササブユニット730eはメモリバンク720cと関連付けられ、プロセッササブユニット730fはメモリバンク720dと関連付けられる。バスは各プロセッササブユニットをプロセッササブユニットに対応するメモリバンクに接続する。したがって、バス740aはプロセッササブユニット730aをメモリバンク720aに接続し、バス740bはプロセッササブユニット730bをメモリバンク720bに接続し、バス740cはプロセッササブユニット730eをメモリバンク720cに接続し、バス740dはプロセッササブユニット730fをメモリバンク720dに接続する。さらに、バス750aはプロセッササブユニット730aをプロセッササブユニット750eに接続し、バス750bはプロセッササブユニット730aをプロセッササブユニット750bに接続し、バス750cはプロセッササブユニット730bをプロセッササブユニット750fに接続し、バス750dはプロセッササブユニット730eをプロセッササブユニット750fに接続する。例えば、上記のように、メモリチップ770aのその他の配置を利用してもよい。

0128

同様に、メモリチップ770bは、各プロセッササブユニット専用の1または複数の対応するメモリバンクを備えるプロセッササブユニットを含む。例えば、プロセッササブユニット730cはメモリバンク720eと関連付けられ、プロセッササブユニット730dはメモリバンク720fと関連付けられ、プロセッササブユニット730gはメモリバンク720gと関連付けられ、プロセッササブユニット730hはメモリバンク720hと関連付けられる。バスは各プロセッササブユニットをプロセッササブユニットに対応するメモリバンクに接続する。したがって、バス740eはプロセッササブユニット730cをメモリバンク720eに接続し、バス740fはプロセッササブユニット730dをメモリバンク720fに接続し、バス740gはプロセッササブユニット730gをメモリバンク720gに接続し、バス740hはプロセッササブユニット730hをメモリバンク720hに接続する。さらに、バス750gはプロセッササブユニット730cをプロセッササブユニット750gに接続し、バス750hはプロセッササブユニット730dをプロセッササブユニット750hに接続し、バス750iはプロセッササブユニット730cをプロセッササブユニット750dに接続し、バス750jはプロセッササブユニット730gをプロセッササブユニット750hに接続する。例えば、上記のように、メモリチップ770bのその他の配置を利用してもよい。

0129

メモリチップ770aおよび770bのプロセッササブユニットは、1または複数のバスを使用して接続することができる。したがって、図7Cの例では、バス750eはメモリチップ770aのプロセッササブユニット730bおよびメモリチップ770bのプロセッササブユニット730cを接続することができ、バス750fはメモリチップ770aのプロセッササブユニット730fおよびメモリチップ770bのプロセッササブユニット730cを接続することができる。例えば、バス750eはメモリチップ770bへの入力バス(したがってメモリチップ770aへの出力バス)として機能することができ、バス750fはメモリチップ770aへの入力バス(したがってメモリチップ770bへの出力バス)として機能することができ、逆の場合も同じである。あるいは、バス750eおよび750fは両方ともメモリチップ770aと770bとの間の双方バスとして機能することができる。

0130

バス750eおよび750fは、メモリチップ770aと集積回路770bとの間のチップ間インタフェースとして使用されるピンを少なくするために直接ワイヤを含み得て、または高速接続交互配置することができる。さらに、メモリチップそのものに使用される上記のあらゆる接続配置を利用してメモリチップを1または複数の追加の集積回路に接続することができる。例えば、メモリチップ770aおよび770bは、図7Cで示されるように2つのバスだけでなくタイル全域接続またはタイル部分接続を利用して接続することができる。

0131

したがって、アーキテクチャ760がバス750eおよび750fを使用して示されているが、アーキテクチャ760は少ないバス、または追加のバスを含んでもよい。例えば、プロセッササブユニット730bと730c、またはプロセッササブユニット730fと730cとの間で単一バスを使用することができる。あるいは、例えば、プロセッササブユニット730bと730d、プロセッササブユニット730fと730d、またはその他同種のものとの間で追加のバスを使用することができる。

0132

さらに、複数のメモリチップが単一メモリチップおよび追加の集積回路を使用して示されるが、複数のメモリチップは上述のようにバスを使用して接続することができる。例えば、図7Cの例で示されるように、メモリチップ770a、770b、770c、および770dがアレイ形式で接続される。各メモリチップは、上記のメモリチップに類似するプロセッササブユニットおよび専用のメモリバンクを含む。したがって、これらのコンポーネントの記載はここでは繰り返さない。

0133

図7Cの例では、メモリチップ770a、770b、770c、および770dは、ループで接続される。したがって、バス750aはメモリチップ770aおよび770dを接続し、バス750cはメモリチップ770aおよび770bを接続し、バス750eはメモリチップ770bおよび770cを接続し、バス750gはメモリチップ770cおよび770dを接続する。メモリチップ770a、770b、770c、および770dは、タイル全域接続、タイル部分接続、またはその他の接続配置で接続することができるが、図7Cの例は、メモリチップ770a、770b、770c、および770d間において少ないピンでの接続を可能にする。

0134

[相対的に大型なメモリ]
本開示の実施形態は、従来のプロセッサの共有メモリと比べて相対的に大型サイズの専用メモリを使用することができる。共有メモリではなく専用メモリを使用することで、メモリが増えると同時に効率が衰えることなく効率向上を持続させることが可能となる。これにより、増える共有メモリの効率向上がフォンノイマンボトルネックにより続かなくなる従来のプロセッサよりもより効率的にニューラルネットワーク処理およびデータベースクエリなどメモリ負荷の高いタスクを実行することが可能となる。

0135

例えば、本開示の分散型プロセッサでは、分散型プロセッサの基板に配置されるメモリアレイは、複数の個別のメモリバンクを含み得る。個別のメモリバンクの各々は、1メガバイト以上の容量と、基板上に配置され、複数のプロセッササブユニットを含む処理アレイと、を有することができる。前述のように、プロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。いくつかの実施形態では、複数のプロセッササブユニットは、メモリアレイ内の複数の個別のメモリバンク間に空間的に分散することができる。大型CPUまたは大型GPUの数メガバイトの共有キャッシュではなく、少なくとも1メガバイトの専用メモリを使用することによって、本開示の分散型プロセッサはCPUまたはGPU内のフォンノイマンボトルネックにより従来システムでは不可能である効率性を向上させる。

0136

専用メモリとして異なるメモリを使用することができる。例えば、各専用メモリバンクは少なくとも1つのDRAMバンクを含み得る。あるいは、各専用メモリバンクは少なくとも1つのスタティックランダムアクセスメモリバンクを含み得る。他の実施形態では、異なるタイプのメモリを単一ハードウェアチップ上に組み合わせることができる。

0137

前述のように、各専用メモリは少なくとも1メガバイトであってもよい。したがって、各専用メモリバンクは同じサイズであってもよく、または、複数のメモリバンクのうち少なくとも2つは異なるサイズを有してもよい。

0138

さらに、上記のように、分散型プロセッサは、各バスが複数のプロセッササブユニットの1つを対応する専用メモリバンクに接続する、第1の複数のバスと、各バスが複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別のプロセッササブユニットに接続する、第2の複数のバスと、を含み得る。

0139

[ソフトウェアを用いた同期]
前述のように、本開示のハードウェアチップは、ハードウェアではなくソフトウェアを使用してデータ転送を管理することができる。詳細には、バス上での転送のタイミング、メモリへの読み込みおよび書き込み、およびプロセッササブユニットの計算はプロセッササブユニットが実行するサブシリーズ命令によって設定されるため、本開示のハードウェアチップは、バス上で衝突しないようにするコードを実行することができる。したがって、本開示のハードウェアチップは、データ転送(チップ内のネットワークコントローラ、プロセッササブユニット間のパケットパーサおよびパケット転送者、バスアービテータ、アービテータを回避する複数のバス、またはその他同種のものなど)を管理するために従来から使われているハードウェア機構を回避することができる。

0140

本開示のハードウェアチップが従来の方法でデータを転送した場合、Nプロセッササブユニットをバスと接続するには、アービタによって制御されるバスアービトレーションまたはワイドマルチプレクサ(MUX)が必要になるであろう。代わりに、上記のように、本開示の実施形態は、プロセッササブユニット間のワイヤ、光ケーブル、またはその他同種のものだけであるバスを使用することができ、プロセッササブユニットはバス上で衝突しないようにするコードを個別に実行する。したがって、本開示の実施形態は、基板上の空きを失わないようにすることに加え、マテリアルコストを維持し、および(例えば、アービトレーションによる電力消費および無駄な時間が原因となる)効率損失から守ることができる。先入れ先出し(FIFO)コントローラおよび/またはメールボックスを利用した他のアーキテクチャと比べて、効率性および空きの確保が今以上に高まる。

0141

さらに、前述のように、各プロセッササブユニットは、1または複数の処理要素に加えて1または複数のアクセラレータを含み得る。いくつかの実施形態では、アクセラレータは、処理要素ではなく、バスから読み込みおよび書き込み行うことができる。このような実施形態では、処理要素が1または複数の計算を実行する同サイクル時に、アクセラレータがデータを送信できるようにさせることによって追加の効率性が得られる場合がある。ただし、このような実施形態は、アクセラレータに対して追加のマテリアルを必要とする。例えば、アクセラレータの製造に追加のトランジスタが必要となる場合がある。

0142

コードはさらに、タイミングおよび待ち時間を含む、プロセッササブユニット(例えば、プロセッササブユニット部を形成する処理要素および/またはアクセラレータを含む)の内部挙動を構成できる。例えば、コンパイラ(以下で記載する)は、データ転送を制御するサブシリーズ命令を生成する際にタイミングおよび待ち時間を構成する前処理を実行できる。

0143

一例では、複数のプロセッササブユニットには、ニューラルネットワーク層を計算するタスクを割り当てることができる。ニューラルネットワーク層は複数の大型ニューロンの前層に完全接続される複数のニューロンを含む。ニューロンの前層のデータがプロセッササブユニット間に均等に広まることを想定すると、この計算を実行する1つの方法は、各プロセッササブユニットがニューロンの前層のデータをメインバス次々に送信するように構成でき、次いで各プロセッササブユニットは、サブユニットが実装する対応するニューロンのウェイトによってこのデータを逓倍することになる。各プロセッササブユニットが1つ以上のニューロンを計算するため、各プロセッササブユニットはニューロンの数に等しい回数分前層のデータを送信することになる。つまり、サブユニットは時間的に別々に送信するため、各プロセッササブユニットのコードは他のプロセッササブユニットのコードと同じではない。

0144

いくつかの実施形態では、分散型プロセッサは、例えば図7Aおよび図7Bで示されるように、基板上に配置されるメモリアレイを備える基板(例えば、シリコンなどの半導体基板および/またはフレキシブル回路基板などの回路基板)を備え得る。メモリアレイは複数の個別のメモリバンクを含み、処理アレイが基板に配置され、処理アレイが複数のプロセッササブユニットを含む。前述のようにプロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。さらに、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに複数のバスを含み得て、複数のバスの各々が、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別のプロセッササブユニットに接続する。

0145

前述のように、複数のバスはソフトウェアで制御できる。したがって、複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニット間、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、複数のバスにはバスアービタがない場合があるため、結果、プロセッササブユニット間、および複数のバスのうち対応するバス全体にわたるデータ転送がバスアービタによって制御されない。

0146

いくつかの実施形態では、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに、複数のプロセッササブユニットの1つを対応する専用メモリバンクに接続する第2の複数のバスを含み得る。上記の複数のバスと同様に、第2の複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、第2の複数のバスにはバスアービタがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がバスアービタによって制御されない。

0147

本明細書で使用される「ない(free of)」というフレーズは、必ずしもタイミングハードウェア論理コンポーネント(例えば、バスアービタ、アービトレーションツリーFIFOコントローラ、メールボックス、またはその他同種のもの)などのコンポーネントが完全にないということを意味しない。さらにこうしたコンポーネントは、これらのコンポーネントが「ない(free of)」と記載されるハードウェアチップ内に含まれる場合がある。代わりに、「ない(free of)」というフレーズはハードウェアチップの機能を指す。つまり、タイミングハードウェア論理コンポーネントが「ない(free of)」ハードウェアチップは、タイミングハードウェア論理コンポーネントがある場合、ハードウェアチップ内に含まれるタイミングハードウェア論理コンポーネントを使用せずにデータ転送のタイミングを制御する。例えば、ハードウェアチップは、実行されるコード内のエラーによる衝突から守る補助予防措置としてのタイミングハードウェア論理コンポーネントを含むとはいえ、ハードウェアチップはハードウェアチップのプロセッササブユニット間のデータ転送を制御するサブシリーズ命令を含むコードを実行する。

0148

前述のように、複数のバスは、複数のプロセッササブユニットの対応するプロセッササブユニット間に少なくとも1つのワイヤまたは光ファイバを含んでもよい。したがって、一例では、タイミングハードウェア論理コンポーネントがない分散型プロセッサは、バスアービタ、アービトレーションツリー、FIFOコントローラ、メールボックス、またはその他同種のものを使用せず、ワイヤまたは光ファイバのみを含み得る。

0149

いくつかの実施形態では、複数のプロセッササブユニットは、複数のプロセッササブユニットによって実行されるコードに従って複数のバスの少なくとも1つの全体にわたりデータを転送するように構成される。したがって、以下で説明するように、コンパイラはサブシリーズ命令を編成することができ、各サブシリーズは単一プロセッササブユニットによって実行されるコードを含む。サブシリーズ命令は、バスの1つにデータを転送する時期、およびバスからデータを引き出す時期をプロセッササブユニットに命令できる。サブシリーズが分散型プロセッサ全体に平行して実行される場合、サブシリーズ内に含まれる転送命令および引き出し命令がプロセッササブユニット間の転送するタイミングを制御できる。このように、コードは、複数のバスの少なくとも1つの全体にデータ転送のタイミングを規定する。コンパイラは、単一プロセッササブユニットによって実行されるコードを生成することができる。さらに、コンパイラは、プロセッササブユニットのグループによって実行されるコードを生成することができる。場合によっては、コンパイラは、全てのプロセッササブユニットがあたかも1つのスーパープロセッサ(例えば、分散型プロセッサ)であるかのように全てのプロセッササブユニットを共に処理することができ、コンパイラは、その定義されたスーパープロセッサ/分散型プロセッサによって実行するコードを生成することができる。

0150

上記のように、および図7Aおよび図7Bで示されるように、複数のプロセッササブユニットがメモリアレイ内の複数の個別のメモリバンク間に空間的に分散される。あるいは、基板の1または複数の領域内に複数のプロセッササブユニットを集めてグループにすることができ、基板の1または複数の他の領域内に複数のメモリバンクを集めてグループにすることができる。いくつかの実施形態では、前述のように、空間的分散およびグループ分類の組み合わせを利用することができる。

0151

いくつかの実施形態では、分散型プロセッサは、基板上に配置されるメモリアレイを備える基板(例えば、シリコンなどの半導体基板および/またはフレキシブル回路基板などの回路基板)を備え得る。メモリアレイは複数の個別のメモリバンクを含む。例えば、図7Aおよび図7Bで示されるように、処理アレイはさらに基板に配置され、処理アレイが複数のプロセッササブユニットを含む。前述のようにプロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。さらに、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに複数のバスを含み得て、複数のバスの各々が、複数のプロセッササブユニットの1つを複数の個別のメモリバンクのうち対応する専用メモリバンクに接続する。

0152

前述のように、複数のバスはソフトウェアで制御できる。したがって、複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニットと複数の個別のメモリバンクのうち対応する専用メモリバンクとの間、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、複数のバスにはバスアービタがない場合があるため、結果、プロセッササブユニット間、および複数のバスのうち対応するバス全体にわたるデータ転送がバスアービタによって制御されない。

0153

いくつかの実施形態では、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別のプロセッササブユニットに接続する第2の複数のバスを含み得る。上記の複数のバスと同様に、第2の複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、第2の複数のバスにはバスアービタがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がバスアービタによって制御されない。

0154

いくつかの実施形態では、分散型プロセッサは、ソフトウェアタイミングコンポーネントとハードウェアタイミングコンポーネントとの組み合わせを利用することができる。例えば、分散型プロセッサは、基板上に配置されるメモリアレイを備える基板(例えば、シリコンなどの半導体基板および/またはフレキシブル回路基板などの回路基板)を備え得る。メモリアレイは複数の個別のメモリバンクを含む。例えば、図7Aおよび図7Bで示されるように、処理アレイがさらに基板に配置され、処理アレイが複数のプロセッササブユニットを含む。前述のようにプロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。さらに、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに複数のバスを含み得て、複数のバスの各々が、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別のプロセッササブユニットに接続する。さらに、前述のように、複数のプロセッササブユニットは、複数のバス全体にわたるデータ転送のタイミングを制御して、複数のバスの少なくとも1つにデータ転送が衝突しないようにするソフトウェアを実行するように構成することができる。この一例では、ソフトウェアがデータ転送のタイミングを制御することができるが、データ転送自体は1または複数のハードウェアコンポーネントによって少なくとも部分的に制御される場合がある。

0155

このような実施形態において、分散型プロセッサはさらに、複数のプロセッササブユニットの1つを対応する専用メモリバンクに接続する第2の複数のバスを含み得る。上記の複数のバスと同様に、複数のプロセッササブユニットは、第2の複数のバス全体にわたるデータ転送のタイミングを制御して、第2の複数のバスの少なくとも1つにデータ転送が衝突しないようにするソフトウェアを実行するように構成することができる。この一例では、前述のように、ソフトウェアがデータ転送のタイミングを制御することができるが、データ転送自体は1または複数のハードウェアコンポーネントによって少なくとも部分的に制御される場合がある。

0156

コードの分割 前述のように、本開示のハードウェアチップは、ハードウェアチップを形成する基板上に含まれるプロセッササブユニット全体にわたり並列でコードを実行することができる。さらに、本開示のハードウェアチップはマルチタスキングを実行することができる。例えば、本開示のハードウェアチップはエリアマルチタスキングを実行することができる。エリアマルチタスキングでは、ハードウェアチップのプロセッササブユニットの1グループが1つのタスク(例えば、音声処理)を実行し、ハードウェアチップのプロセッササブユニットの別グループが別のタスク(例えば、画像処理)を実行する。別の例では、本開示のハードウェアチップはタイミングマルチタスキングを実行することができる。タイミングマルチタスキングでは、ハードウェアチップの1または複数のプロセッササブユニットが第1の期間中に1つのタスクを実行し、第2の期間中に別のタスクを実行する。さらに、第1の期間中に1つのタスクをプロセッササブユニットの第1のグループに割り当てることができ、第1の期間中に別のタスクをプロセッササブユニットの第2のグループに割り当てることができ、その後、第2の期間中に第3のタスクを第1のグループおよび第2のグループ内に含まれるプロセッササブユニットに割り当てることができるように、エリアマルチタスキングとタイミングマルチタスキングの組み合わせを利用することができる。

0157

本開示のメモリチップ上で実行するマシンコードを編成するために、マシンコードをメモリチップのプロセッササブユニット間に分割することができる。例えば、メモリチップ上のプロセッサは、基板と、基板上に配置される複数のプロセッササブユニットと、を含み得る。メモリチップはさらに、基板上に配置される対応する複数のメモリバンクを含み得て、複数のプロセッササブユニットの各々が、複数のプロセッササブユニットの他のあらゆるプロセッササブユニットによって共有されない少なくとも1つの専用メモリバンクに接続される。メモリチップ上の各プロセッササブユニットは、他のプロセッササブユニットから独立した一連の命令を実行するように構成することができる。各一連の命令は、一連の命令を定義するコードに従ってプロセッササブユニットの1または複数の汎用処理要素を構成することによって、および/または、一連の命令を定義するコード内に提供されるシーケンスに従ってプロセッササブユニットの1または複数の専用処理要素(例えば、1または複数のアクセラレータ)をアクティブ化させることによって、実行することができる。

0158

したがって、各一連の命令は、単一プロセッササブユニットによって実行される一連のタスクを定義することができる。単一のタスクは、プロセッササブユニット内の1または複数の処理要素のアーキテクチャによって定義される命令セット内の命令を含み得る。例えば、プロセッササブユニットは特定のレジスタを含み得て、単一タスクは、データをレジスタで処理し、レジスタからデータを引き出し、レジスタ内のデータ上に演算関数を実行し、レジスタ内のデータ上に論理演算を実行し、またはその他同種のことを実行することができる。さらに、プロセッササブユニットは、0オペランドプロセッササブユニット(「スタックマシン」とも呼ばれる)、1オペランドプロセッササブユニット(アキュムレータマシンとも呼ばれる)、2オペランドプロセッササブユニット(RISCなど)、3オペランドプロセッササブユニット(複雑な命令セットコンピューティング(CISCなど))、またはその他同種のもの、など、あらゆる複数のオペランドを構成することができる。別の例では、プロセッササブユニットは1または複数のアクセラレータを含み得て、単一タスクはアクセラレータをアクティブ化させてMAC関数、MAX関数、MAX—0関数、またはその他同種の関数など、特殊関数を実行することができる。

0159

一連の命令はさらに、メモリチップの専用メモリバンクから読み込みおよび書き込みを行うタスクを含み得る。例えば、タスクは、タスクを実行するプロセッササブユニット専用のメモリバンクにデータを書き込む段階と、タスクを実行するプロセッササブユニット専用のメモリバンクからデータを読み込む段階と、またはその他同種の段階と、を含み得る。いくつかの実施形態では、読み込みおよび書き込みは、メモリバンクのコントローラと同時にプロセッササブユニットによって実行することができる。例えば、プロセッササブユニットは、コントローラに制御信号を送信して読み込みまたは書き込みを実行することによって読み込みタスクまたは書き込みタスクを実行することができる。いくつかの実施形態では、制御信号は、読み込みおよび書き込み用の特定のアドレスを含み得る。あるいは、プロセッササブユニットは、読み込みおよび書き込み用の利用可能なアドレスを選択するためにメモリコントローラに従う場合がある。

0160

この代わりに、またはこれに加えて、読み込みおよび書き込みは、メモリバンクのコントローラと同時に1または複数のアクセラレータによって実行することができる。例えば、アクセラレータはメモリコントローラの制御信号を生成することができる。これは、上記のようにプロセッササブユニットがどのように制御信号を生成するかに似ている。

0161

上記のあらゆる実施形態では、アドレスジェネレータはさらに、読み込みおよび書き込みをメモリバンクの特定のアドレスに導くために使用することができる。例えば、アドレスジェネレータは、読み込みおよび書き込み用のメモリアドレスを生成するように構成される処理要素を含み得る。アドレスジェネレータは、例えば、もはや不要である前の計算結果と同じアドレスに後の計算結果を書き込むことによって効率を高めるためにアドレスを生成するように構成することができる。したがって、アドレスジェネレータは、プロセッササブユニットから(例えば、プロセッササブユニット内に含まれる処理要素から、またはプロセッササブユニット内に含まれる1または複数のアクセラレータから)のコマンドに応答して、またはプロセッササブユニットと同時に、のいずれかで、メモリコントローラの制御信号を生成することができる。この代わりに、またはこれに加えて、アドレスジェネレータは、いくつかの構成に基づいてアドレスを、または例えばメモリ内の特定のアドレス上に特定のパターンで繰り返すループが何重にも入れ子になった構造を生成するレジスタ、を生成することができる。

0162

いくつかの実施形態では、各一連の命令は、対応する一連のタスクを定義するマシンコードのセットを含み得る。したがって、上記の一連のタスクは、一連の命令を含むマシンコード内にカプセル化することができる。いくつかの実施形態では、図8に関連して以下で説明するように、一連のタスクはコンパイラによって定義することができる。コンパイラは一連の複数のタスクとしての複数の論理回路間に一連の上位タスクを分散するように構成される。例えば、コンパイラは、各対応する一連のタスクを同時に実行するプロセッササブユニットが一連の上位タスクが概説した同じ機能を実行するように、一連の上位タスクに基づいて一連の複数のタスクを生成することができる。

0163

さらに以下で詳述するように、一連の上位タスクは、人間が読めるプログラミング言語における命令のセットを含み得る。同様に、各プロセッササブユニットの一連のタスクは一連の下位タスクを含み得て、一連の下位タスクの各々はマシンコード内の命令のセットを含む。

0164

図7Aおよび図7Bに関連して上記で説明したように、メモリチップはさらに複数のバスを含み得て、各バスは、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも1つの他のプロセッササブユニットに接続する。さらに、上記のように、複数のバス上でのデータ転送はソフトウェアを使用して制御できる。したがって、複数のバスの少なくとも1つのバス全体にわたるデータ転送は、複数のバスの少なくとも1つのバスに接続されるプロセッササブユニット内に含まれる一連の命令によって予め定義することができる。したがって、一連の命令の中に含まれるタスクの1つは、データをバスの1つに出力する段階、またはデータをバスの1つから引き出す段階を含み得る。このようなタスクは、プロセッササブユニットの処理要素によって、または、プロセッササブユニット内に含まれる1または複数のアクセラレータによって実行することができる。後者の実施形態では、プロセッササブユニットは、アクセラレータがデータをバスの1つから引き出すまたはデータをバスの1つに入れる同じサイクルで計算を実行し、または制御信号を対応するメモリバンクに送信することができる。

0165

一例では、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は送信タスクを含み得る。送信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットがデータを複数のバスの少なくとも1つに書き込むコマンドを含む。この代わりに、またはこれに加えて、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は受信タスクを含み得る。受信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットが複数のバスの少なくとも1つからデータを読み込むコマンドを含む。

0166

コードをプロセッササブユニット間に分散する代わりに、またはそのことに加えて、データをメモリチップのメモリバンク間に分割することができる。例えば、前述のように、メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクと、を含み得る。複数のメモリバンクの各々は、複数のメモリバンクうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成することができ、複数のプロセッササブユニットの各々は、複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続することができる 例えば、各プロセッササブユニットはプロセッササブユニット専用の1または複数の対応するメモリバンクの1または複数のメモリコントローラへのアクセス権を有することができ、他のプロセッササブユニットはこれらの対応する1または複数のメモリコントローラへのアクセス権を有することができない。したがって、各メモリバンク内に記憶されるデータは専用プロセッササブユニットに特有になり得る。さらに、各メモリバンク内に記憶されるデータは他のメモリバンク内に記憶されるメモリから独立してもよい。これは、メモリコントローラがメモリバンク間で共有することができないためである。

0167

いくつかの実施形態では、図8に関連して以下で説明されるように、複数のメモリバンクの各々に記憶されるデータは、データを複数のメモリバンク間に分散するように構成されるコンパイラによって定義することができる。さらに、コンパイラは、対応するプロセッササブユニット間に分散される複数の下位タスクを利用して、一連の上位タスク内で定義されるデータを複数のメモリバンク間に分散するように構成することができる。

0168

以下で詳述するように、一連の上位タスクは、人間が読めるプログラミング言語における命令のセットを含み得る。同時に、各プロセッササブユニットの一連のタスクは一連の下位タスクを含み得て、一連の下位タスクの各々はマシンコードにおける命令のセットを含む。

0169

図7Aおよび図7Bに関連して上記で説明したように、メモリチップはさらに複数のバスを含み得て、各バスは、複数のプロセッササブユニットの1つを、複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する。さらに、前述のように、複数のバス上でのデータ転送はソフトウェアを使用して制御できる。したがって、複数のバスの特定の1つのバス全体にわたるデータ転送は、複数のバスの特定の1つのバスに接続される対応するプロセッササブユニットによって制御することができる。したがって、一連の命令の中に含まれるタスクの1つは、データをバスの1つに出力する段階と、またはデータをバスの1つから引き出す段階と、を含み得る。前述のように、このようなタスクは、(i)プロセッササブユニットの処理要素によって、または、(ii)プロセッササブユニット内に含まれる1または複数のアクセラレータによって実行することができる。後者の実施形態では、プロセッササブユニットは、アクセラレータが1または複数の対応する専用メモリバンクに接続されるバスの1つからデータを引き出す、またはそのバスの1つにデータを入れる同じサイクルで計算を実行する、またはプロセッササブユニットを他のプロセッササブユニットに接続するバスを使用することができる。

0170

したがって、一例では、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は送信タスクを含み得る。送信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットが1または複数の対応する専用メモリバンク内に記憶するためにデータを複数のバスの少なくとも1つに書き込むコマンドを含み得る。この代わりに、またはこれに加えて、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は受信タスクを含み得る。受信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットが1または複数の対応する専用メモリバンク内に記憶するために複数のバスの少なくとも1つからデータを読み込むコマンドを含み得る。したがって、このような実施形態における送信タスクおよび受信タスクは、複数のバスの少なくとも1つを介して1または複数の対応する専用メモリバンクの1または複数のメモリコントローラに送信される制御信号を含み得る。さらに、送信タスクおよび受信タスクは、プロセッササブユニットの一部分によって(例えば、プロセッササブユニットの1または複数のアクセラレータによって)計算と同時に実行することができ、またはその他のタスクはプロセッササブユニットの別部分よって(例えば、プロセッササブユニットの1または複数の異なるアクセラレータによって)実行することができる。こうした同時実行の一例は、受信、逓倍、および送信が同時に実行されるMACリレーコマンドを含み得る。

0171

データをメモリバンク間に分散することに加え、異なるメモリバンク全体にわたりデータの特定の部分を複製することができる。例えば、前述のように、メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクと、を含み得る。複数のプロセッササブユニットの各々は、複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続することができ、複数のメモリバンクの各メモリバンクは、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成することができる。さらに、複数のメモリバンク間からの特定の1つのメモリバンク内に記憶されるデータの少なくともいくつかは、複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含み得る。例えば、一連の命令において使用されるデータの数、データストリング、またはその他のデータ型は、メモリチップ内の1つのメモリバンクから他のプロセッササブユニットに転送されるのではなく、異なるプロセッササブユニット専用の複数のメモリバンク内に記憶することができる。

0172

一例では、並列ストリングマッチングが上記のデータ複製を使用することができる。例えば、複数のストリングは同じストリングと比較することができる。従来のプロセッサであれば、複数のストリングの各ストリングを順番に同じストリングと比較するであろう。本開示のハードウェアチップ上では、プロセッササブユニットが複数のストリングの別々のストリングを複製されたストリングと並列に比較することができるように、同じストリングをメモリバンク全体にわたり複製することができる。

0173

いくつかの実施形態では、図8に関連して以下で説明されるように、複数のメモリバンク間からの1つの特定のメモリバンクおよび複数のメモリバンクの少なくとも別のメモリバンクの全体にわたり複製される少なくともいくつかのデータは、データをメモリバンク全体にわたり複製するように構成されるコンパイラによって定義される。さらに、コンパイラは、対応するプロセッササブユニット間に分散される複数の下位タスクを利用して、少なくともいくつかのデータを複製するように構成することができる。

0174

データ複製は、異なる計算中に同じデータ部分を再利用する特定のタスクに役立つ場合がある。これらのデータ部分を複製することによって、並列実行するために異なる計算をメモリチップのプロセッササブユニット間に分散することができる一方、各プロセッササブユニットは(プロセッササブユニットを接続するバス全体にわたりデータ部分を処理および引き出すのではなく)データ部分を専用メモリバンク内に記憶することができ、専用メモリバンクから記憶したデータ部分にアクセスできる。一例では、複数のメモリバンク間からの1つの特定のメモリバンク、および複数のメモリバンクの少なくとも別のメモリバンク全体にわたり複製される少なくともいくつかのデータは、ニューラルネットワークのウェイトを含み得る。この例では、ニューラルネットワーク内の各ノードは複数のプロセッササブユニット間からの少なくとも1つのプロセッササブユニットによって定義することができる。例えば、各ノードは、ノードを定義する少なくとも1つのプロセッササブユニットによって実行されるマシンコードを含み得る。この例では、ウェイトを複製することにより各プロセッササブユニットがマシンコードを実行して対応するノードを少なくとも部分的に有効にし、各プロセッササブユニットが(他のプロセッササブユニットでデータ転送を実行するのではなく)1または複数の専用メモリバンクにアクセスするだけでよいことになる。プロセッササブユニット間のデータ転送のタイミングには(例えば、前述のようにソフトウェアを使用して)タイミング同期が必要になるが、専用メモリバンクへの読み込みおよび書き込みのタイミングは他のプロセッササブユニットに依存していないため、メモリを複製してプロセッササブユニット間でのデータ転送をしないようにすることで総合実行時にさらなる効率性が生み出される可能性がある。

0175

図7Aおよび図7Bに関連して前述したように、メモリチップはさらに複数のバスを含み得て、各バスは、複数のプロセッササブユニットの1つを、複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する。さらに、前述のように、複数のバス上でのデータ転送はソフトウェアを使用して制御できる。したがって、複数のバスの特定の1つのバス全体にわたるデータ転送は、複数のバスの特定の1つのバスに接続される対応するプロセッササブユニットによって制御することができる。したがって、一連の命令の中に含まれるタスクの1つは、データをバスの1つに出力する段階と、またはデータをバスの1つから引き出す段階と、を含み得る。前述のように、このようなタスクは、(i)プロセッササブユニットの処理要素によって、または、(ii)プロセッササブユニット内に含まれる1または複数のアクセラレータによって実行することができる。詳述したように、こうしたタスクは送信タスクおよび/または受信タスクを含み得る。送信タスクおよび/または受信タスクは、複数のバスの少なくとも1つを介して1または複数の対応する専用メモリバンクの1または複数のメモリコントローラに送信される制御信号を含む。

0176

図8は、例えば、図7Aおよび図7Bで示されるように、本開示の例示的なメモリチップ上で実行するための一連の命令をコンパイルする方法800のフローチャートを示す。方法800は、汎用であろうと専用であろうと従来のあらゆるプロセッサによって実装することができる。

0177

方法800は、コンパイラを形成するコンピュータプログラムの一部分として実行することができる。本明細書で使用される「コンパイラ」は、上位言語(例えば、C、FORTRANBASIC、またはその他同種のものといった手続き形言語、およびJava(登録商標)、C++、PASCAL、Python、またはその他同種のものといったオブジェクト指向言語)を下位言語(例えば、アセンブリコードオブジェクトコード、マシンコード、またはその他同種のもの)に変換するあらゆるコンピュータプログラムを指す。コンパイラにより、人間は、実行可能な機械語にその後変換された人間が読める言語で一連の命令のプログラムを可能にできる。

0178

段階810で、本プロセッサは、一連の命令と関連付けられたタスクをプロセッササブユニットの異なるプロセッササブユニットに割り当てることができる。例えば、一連の命令はサブグループに分割することができ、サブグループはプロセッササブユニット全体にわたり並列で実行される。一例では、ニューラルネットワークはニューラルネットワークノードに分割することができ、1または複数のノードはプロセッササブユニットを分離するように割り当てることができる。この例では、各サブグループは異なる層全体にわたり接続される複数のノードを含み得る。したがって、プロセッササブユニットは、ニューラルネットワークの第1の層からのノード、同じプロセッササブユニットが実装する第1の層からのノードに接続される第2の層からのノード、またはその他同種のもの、を実装することができる。ノードをそうした接続に基づいて割り当てることによって、プロセッササブユニット間のデータ転送を減少することができ、上記のように結果的に効率向上がもたらされる可能性がある。

0179

前述のように、図7Aおよび図7Bで示されるプロセッササブユニットはメモリチップ上に配置される複数のメモリバンク間に空間的に分散することができる。したがって、タスクの割り当ては、少なくとも部分的に空間分散ならびに論理分割であってもよい。

0180

段階820で、本プロセッサは、メモリチップのプロセッササブユニットの対の間でデータを転送するタスクを生成し、プロセッササブユニットの対の各々がバスによって接続される。例えば、前述のように、データ転送はソフトウェアを使用して制御できる。したがって、プロセッササブユニットは、同期時にバス上でデータを処理および引き出すように構成することができる。したがって、生成されたタスクは、こうしたデータの同期された処理および引き出しを実行するタスクを含み得る。

0181

前述のように、段階820は、タイミングおよび待ち時間を含むプロセッササブユニットの内部挙動を構成する前処理を含み得る。例えば、プロセッサは、プロセッササブユニットの周知の時間および待ち時間(例えば、バスにデータを処理する時間、バスからデータを引き出す時間、計算と処理または引き出しとの間の待ち時間、またはその他同種の時間)を利用して、生成されたタスクが確実に同期するようにできる。したがって、プロセッササブユニット間の期間的差異、プロセッササブユニットの待ち時間、またはその他同種のものが原因で生じる遅延を被ることなく、1または複数のプロセッササブユニットによる少なくとも1つの処理、および1または複数のプロセッササブユニットによる少なくとも1つの引き出し、を含むデータ転送を同時に行える。

0182

段階830で、本プロセッサは、割り当てられたタスクおよび生成されたタスクをサブシリーズ命令の複数のグループに分割することができる。例えば、サブシリーズ命令の各々は、単一プロセッササブユニットが実行する一連のタスクを含み得る。そのため、サブシリーズ命令の複数のグループの各々は、複数のプロセッササブユニットのうち異なるプロセッササブユニットに対応することができる。したがって、段階810、段階820、および段階830は、一連の命令をサブシリーズ命令の複数のグループに分割する段階につなげることができる。前述のように、段階820は、異なるグループ間のあらゆるデータ転送を確実に同期することができる。

0183

段階840で、本プロセッサは、サブシリーズ命令の複数のグループの各々に対応するマシンコードを生成することができる。例えば、サブシリーズ命令を表す上位コードは、対応するプロセッササブユニットによって実行可能であるマシンコードなどの下位コードに変換することができる。

0184

段階850で、プロセッサは、分割に従って、サブシリーズ命令の複数のグループの各々に対応する生成されたマシンコードを、複数のプロセッササブユニットのうち対応する1つのプロセッササブユニットに割り当てることができる。例えば、プロセッサは、対応するプロセッササブユニットの識別子で各サブシリーズ命令を分類することができる。そのため、サブシリーズ命令が実行するために(例えば、図3Aのホスト350によって)メモリチップにアップロードされる場合、各サブシリーズは正しいプロセッササブユニットを構成することができる。

0185

いくつかの実施形態では、一連の命令と関連付けられたタスクをプロセッササブユニットの異なるプロセッササブユニットに割り当てることは、メモリチップ上の2つ以上のプロセッササブユニット間の空間的近接に少なくとも部分的によって決まる場合がある。例えば、前述のように、プロセッササブユニット間のデータ転送の回数を減らすことによって効率を向上することができる。したがって、プロセッサは、2つ以上のプロセッササブユニット全体にデータを移動するデータ転送を減らすことができる。そのため、プロセッサは、1または複数の最適化アルゴリズム欲張りアルゴリズムなど)を組み合わせてメモリチップの周知の設計を利用して、隣接する転送を(少なくともローカルに)最大化し、隣接しないプロセッササブユニットへの転送を(少なくともローカルに)最小化する方法でサブシリーズをプロセッササブユニットに割り当てることができる。

0186

方法800はさらに、本開のメモリチップの最適化を含み得る。例えば、プロセッサは、分割に基づいて一連の命令と関連付けられるデータを分割し、そのデータ分類に従ってデータをメモリバンクに割り当てることができる。したがって、メモリバンクは、各プロセッササブユニット専用の各メモリバンクに割り当てられるサブシリーズ命令に使用されるデータを保持することができる。

0187

いくつかの実施形態では、データを分類する段階は、2つ以上のメモリバンク内に複製するための少なくともデータ部分を決定する段階を含み得る。例えば、前述のように、いくつかのデータを1つ以上のサブシリーズ命令全体にわたり使用することができる。こうしたデータは、異なるサブシリーズ命令が割り当てられる複数のプロセッササブユニット専用のメモリバンク全体に複製できる こうした最適化はさらにプロセッササブユニット全体にわたるデータ転送を減らすことができる。

0188

方法800の出力は、実行するために本開示のメモリチップに入力することができる。例えば、メモリチップは、複数のプロセッササブユニットおよび対応する複数のメモリバンクを含み得て、各プロセッササブユニットはプロセッササブユニット専用の少なくとも1つのメモリバンクに接続され、メモリチップのプロセッササブユニットは方法800によって生成されるマシンコードを実行するように構成することができる。図3Aに関連して前述したように、ホスト350は、実行するために方法800によって生成されるマシンコードをプロセッササブユニットに入力することができる。

0189

[サブバンクおよびサブコントローラ
従来のメモリバンクでは、コントローラがバンクレベルで提供される。各バンクは、一般的に矩形状で配置されるが、あらゆる幾何学的図形で配置することができる複数のマットを含む。各マットは、一般的に矩形状でも配置されるが、あらゆる幾何学的図形で配置することができる複数のメモリセルを含む。各メモリセルは、(例えば、メモリセルが高電圧で維持されるか、または低電圧で維持されるかに応じて)データの単一ビットを記憶することができる。

0190

この従来のアーキテクチャの一例が図9および図10で示される。図9で示されるように、バンクレベルで複数のマット(例えば、マット930−1、930−2、940−1、および940−2)がバンク900を形成することができる。従来の矩形構成では、バンク900は、グローバルワード線(例えば、ワード線950)およびグローバルビット線(例えば、ビット線960)全体にわたって制御できる。したがって、行デコーダ910は、入ってくる制御信号(例えば、アドレスからの読み込み要求、アドレスへの書き込み要求、またはその他同種の要求)に基づいて正しいワード線を選択することができ、グローバルセンスアンプ920(および/または図9で示されないグローバル列デコーダ)は制御信号に基づいて正しいビット線を選択することができる。グローバルセンスアンプ920はさらに、読み込み動作時に、選択されたバンクからのあらゆる電圧レベルを上げる。列に沿って増幅初期選択および初期実行を行う行デコーダを使用するように示されるが、バンクは、追加または代替として、行に沿って増幅の初期選択および初期実行を行う列デコーダを使用することができる。

0191

図10はマット1000の一例を示す。例えば、マット1000は、図9のバンク900などのメモリバンクの一部分を形成することができる。図10で示されるように、複数のセル(例えば、セル1030−1、1030−2、および1030−3)はマット1000を形成することができる。各セルは、少なくとも1ビットのデータを記憶するコンデンサ、トランジスタ、またはその他の回路を含み得る。例えば、セルはコンデンサを含み得て、コンデンサは充電されて「1」を示し、放電されて「0」を示す。またはセルは、「1」を示す第1の状態および「0」を示す第2の状態を有するフリップフロップを含み得る。従来のマットは、例えば、512ビット×512ビットを含んでもよい。マット1000がMRAM、ReRAM、またはその他同種のメモリの一部分を形成する実施形態では、セルは、少なくとも1ビットのデータを記憶するイオンまたはマテリアルの一部分を絶縁するトランジスタ、抵抗器、コンデンサまたはその他の機構を含み得る。例えば、セルは、「1」を示す第1の状態および「0」を示す第2の状態を有する電解質イオンカルコゲナイドガラスの一部分、またはその他同種のものを含み得る。

0192

図10でさらに示されるように、従来の矩形構成では、マット1000は、ローカルワード線(例えば、ワード線1040)およびローカルビット線(例えば、ビット線1050)全体にわたって制御できる。したがって、ワード線ドライバ(例えば、ワード線ドライバ1020−1、1020−2、. . .、1020−x)は、マット1000がパート(例えば、アドレスからの読み込み要求、アドレスへの書き込み要求、リフレッシュ信号)を形成するメモリバンクと関連付けられたコントローラからの制御信号に基づいて、選択されたワード線を制御して読み込み、書き込み、またはリフレッシュを実行することができる。さらに、ローカルセンスアンプ(例えば、ローカルアンプ1010−1、1010−2、. . .、1010−x)および/またはローカル列デコーダ図10で示されない)は選択されたビット線を制御して読み込み、書き込み、またはリフレッシュを実行することができる。ローカルセンスアンプはさらに、読み込み動作時に、選択されたセルからのあらゆる電圧レベルを上げることができる。列に沿って増幅の初期選択および初期実行を行うワード線ドライバを使用するように示されるが、マットは代わりに、行に沿って増幅の初期選択および初期実行を行うビット線ドライバを使用することができる。

0193

前述のように、多くのマットを複製してメモリバンクを形成する。メモリバンクを分割してメモリチップを形成することができる。例えば、メモリチップは、8から32のメモリバンクを含んでもよい。したがって、プロセッササブユニットを従来のメモリチップ上のメモリバンクと組み合わせることにより、8から32だけのプロセッササブユニットをもたらすことができる。したがって、本開示の実施形態は、追加のサブバンク層を備えるメモリチップを含んでもよい。本開示のこれらのメモリチップは次いで、プロセッササブユニットと組み合わされた専用メモリバンクとして使用されるメモリサブバンクを備え、多くのサブプロセッサを可能にするプロセッササブユニットを含み得て、多くのサブプロセッサは次いで高並列処理を実現し、インメモリーコンピューティングを実行することができる。

0194

本開示のいくつかの実施形態では、バンク900のグローバル行デコーダおよびグローバルセンスアンプをサブバンクコントローラに取り替えることができる。したがって、制御信号をメモリバンクのグローバル行デコーダおよびグローバルセンスアンプに送信するのではなく、メモリバンクのコントローラは、制御信号を適切なサブバンクコントローラに導くことができる。その指示は(例えば1または複数の論理ゲートを介して)動的に制御でき、またはハードワイヤードできる。いくつかの実施形態では、制御信号をブロックするか、適切なサブバンクまたはマットに渡すか、またはどうかを各サブバンクまたはマットのコントローラに示すのにヒューズを使用することができる。したがって、このような実施形態では、ヒューズを使用して不良のサブバンクを非アクティブ化できる。

0195

このような実施形態の一例では、メモリチップは、複数のメモリバンクであって、各メモリバンクがバンクコントローラを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み込みおよび書き込みきを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有する、複数のメモリサブバンクと、を含み得る。各サブバンクは、複数のメモリマットであって、各メモリマットが複数のメモリセルを有する、複数のメモリマットを含んでもよく、各サブバンクはローカル行デコーダ、ローカル列デコーダ、および/またはローカルセンスアンプを内部に有することができる。サブバンク行デコーダおよびサブバンク列デコーダは、下記のように、バンクコントローラからの、またはサブバンクメモリ上でインメモリーコンピューティング用に使用されるサブバンクプロセッササブユニットからの読み込み要求および書き込み要求を処理することができる。また、各メモリサブバンクはさらに、バンクコントローラからの読み込み要求および書き込み要求を処理するかどうか、読み込み要求および書き込み要求を(例えば、マット上の行デコーダおよび列デコーダの)次のレベルに転送するかどうか、例えば、内部処理要素またはプロセッササブユニットがメモリにアクセスできるようにする読み込み要求および書き込み要求をブロックするかどうか、を決定するように構成されるコントローラを含み得る。いくつかの実施形態では、バンクコントローラはシステムクロックに同期できる。ただし、サブバンクコントローラはシステムクロックに同期しない場合がある。

0196

前述のように、プロセッササブユニットを従来のチップのメモリバンクと組み合わせた場合に比べ、サブバンクを使用することで多くのプロセッササブユニットをメモリチップ内に含むことを可能にできる。したがって、各サブバンクはさらに、サブバンクを専用メモリとして使用するプロセッササブユニットを有することができる。前述のように、プロセッササブユニットは、RISC、CISC、またはその他の汎用プロセッササブユニットを含み得て、および/または1または複数のアクセラレータを含み得る。さらに、プロセッササブユニットは、前述のように、アドレスジェネレータを含み得る。上記のあらゆる実施形態では、各プロセッササブユニットは、バンクコントローラを使用せずにサブバンクの行デコーダおよび列デコーダを使用してプロセッササブユニット専用のサブバンクにアクセスするように構成することができる。サブバンクと関連付けられるプロセッササブユニットはさらに、メモリマット(下記のデコーダおよびメモリ余剰機構を含む)を処理することができ、および/または、上位(例えば、バンクレベルまたはメモリレベル)からの読み込み要求または書き込み要求がそれに応じて転送および処理されるかどうかを決定することができる。

0197

いくつかの実施形態では、サブバンクコントローラはさらに、サブバンクの状態を記憶するレジスタを含み得る。したがって、サブバンクコントローラがメモリコントローラから制御信号を受信し、サブバンクが使用中であることをレジスタが示す場合に、サブバンクコントローラはエラーに戻ってもよい。各サブバンクがさらにプロセッササブユニットを含む実施形態では、サブバンク内のプロセッササブユニットがメモリコントローラからの外部要求と衝突してメモリにアクセスする場合に、レジスタはエラーを示す場合がある。

0198

図11は、サブバンクコントローラを使用したメモリバンクの別の実施形態の一例を示す。図11の例では、バンク1100は、行デコーダ1110と、列デコーダ1120と、サブバンクコントローラ(例えば、コントローラ1130a、1130b、および1130c)を備えた複数のメモリサブバンク(例えば、サブバンク1170a、1170b、および1170c)と、を有する。サブバンクコントローラは、アドレスリゾルバ(例えば、リゾルバ1140a、1140b、および1140c)を含み得て、アドレスリゾルバは、サブバンクコントローラによって制御される1または複数のサブバンクに要求を渡すかどうかを決定することができる。

0199

サブバンクコントローラはさらに1または複数の論理回路(例えば、論理1150a、1150b、および1150c)を含み得る。例えば、1または複数の処理要素を含む論理回路は、サブバンク内のセルをリフレッシュする、サブバンク内のセルを消去する、またはその他同種の動作を行うなどの1または複数の動作を、バンク1100からの要求を外部で処理せずに実行させることを可能にする。あるいは、論理回路は、前述のように、プロセッササブユニットを含み得るため、結果、プロセッササブユニットは、対応する専用メモリとしてサブバンクコントローラによって制御されるあらゆるサブバンクを有する。図11の例では、論理1150aは、対応する専用メモリとしてサブバンク1170aを有することができ、論理1150bは、対応する専用メモリとしてサブバンク1170bを有することができ、論理1150cは、対応する専用メモリとしてサブバンク1170cを有することができる。上記のあらゆる実施形態では、論理回路はサブバンクへのバス、例えば、バス1131a、1131b、または1131cを有することができる。図11でさらに示されるように、サブバンクコントローラの各々は、処理要素またはプロセッササブユニットによって、またはコマンドを発行する上位メモリコントローラによって、のいずれかによって、メモリサブバンク上の記憶位置に読み込みおよび書き込みを可能にするサブバンク行デコーダおよびサブバンク列デコーダなどの複数のデコーダを含み得る。例えば、サブバンクコントローラ1130aはデコーダ1160a、1160b、および1160cを含み、サブバンクコントローラ1130bはデコーダ1160d、1160e、および1160fを含み、サブバンクコントローラ1130cはデコーダ1160g、1160h、および1160iを含む。サブバンクコントローラは、バンク行デコーダ1110からの要求に基づいて、サブバンクコントローラ内に含まれるデコーダを使用してワード線を選択できる。本記載のシステムにより、サブバンクの処理要素またはプロセッササブユニットはその他のバンクおよびその他のサブバンクにさえ割り込むことなくメモリにアクセスすることが可能となる。これにより、各サブバンクのプロセッササブユニットはその他のサブバンクプロセッササブユニットでメモリ計算を並列に実行することができる。

0200

さらに、各サブバンクは複数のメモリマットをみ得て、各メモリマットは複数のセルを有する。例えば、サブバンク1170aはマット1190a−1、1190a−2、. . .、1190a−xを含む。サブバンク1170bはマット1190b−1、1190b−2、. . . 、1190b−xを含む。サブバンク1170cはマット1190c−1、1190c−2、. . .、1190c−3を含む。図11でさらに示されるように、各サブバンクは、少なくとも1つのデコーダを含み得る。例えば、サブバンク1170aはデコーダ1180aを含み、サブバンク1170bはデコーダ1180bを含み、サブバンク1170cはデコーダ1180cを含む。したがって、バンク列デコーダ1120は、外部要求に基づいてグローバルビット線(例えば、ビット線1121aまたは1121b)を選択することができ、バンク行デコーダ1110によって選択されるサブバンクはそのバンク列デコーダを使用して、サブバンクが専用になる論理回路からのローカル要求に基づいてローカルビット線(例えば、ビット線1181aまたは1181b)を選択することができる。したがって、各プロセッササブユニットは、バンク行デコーダおよびバンク列デコーダを使用せずにサブバンクの行デコーダおよび列デコーダを使用して、プロセッササブユニット専用のサブバンクにアクセスするように構成することができる。したがって、各プロセッササブユニットは、他のサブバンクに割り込むことなく、対応するサブバンクにアクセスできる。さらに、サブバンクデコーダは、サブバンクへの要求がプロセッササブユニットの外部にある場合、アクセスデータバンクデコーダに反映することができる。あるいは、各サブバンクが1行だけのメモリマットを有する実施形態では、ローカルビット線はサブバンクのビット線ではなくマットのビット線になってもよい。

0201

サブバンク行デコーダおよびサブバンク列デコーダを使用した実施形態と、図11で示される実施形態との組み合わせを利用することができる。例えば、バンク行デコーダを無くすが、バンク列デコーダを残し、ローカルビット線を使用してもよい。

0202

図12は、複数のマットを有するメモリサブバンク1200の一実施形態の一例を示す。例えば、サブバンク1200は、図11のサブバンク1100の一部分を表し得る、またはサブバンク1200は、メモリバンクの代替実装を表し得る。図12の例では、サブバンク1200は複数のマット(例えば、マット1240aおよび1240b)を含む。さらに、各マットは複数のセルを含み得る。例えば、マット1240aはセル1260a−1、1260a−2. . .1260a−xを含み、 マット1240bはセル1260b−1、1260b−2. . .1260b−xを含む。

0203

各マットには、マットのメモリセルに割り当てられることになるアドレスレンジを割り当てることができる。これらのアドレスは、生成時に、(例えば、以下で詳述するように1または複数のヒューズを使用して)マットをあちこち移動できるように、および、不良マットを非アクティブ化し、未使用状態にできるように構成することができる。

0204

サブバンク1200は、メモリコントローラ1210から読み込み要求および書き込み要求を受信する。図12で示されないが、アドレス解決のためにメモリコントローラ1210からの要求をサブバンク1200のコントローラを介してフィルタし、サブバンク1200の適切なマットに導くことができる。あるいは、メモリコントローラ1210からの要求のアドレスの少なくとも一部分(例えば、高ビット)は、サブバンク1200の全てのマット(例えば、マット1240aおよび1240b)に送信することができるため、結果、割り当てられたマットのアドレスレンジがコマンド内で指定されたアドレスを含む場合に限り、各マットは全てのアドレスおよびアドレスと関連付けられた要求を処理することができる。上記のサブバンクの指示と同様に、マットの決定は動的に制御できる、またはハードワイヤードできる。いくつかの実施形態では、ヒューズを使用して各マットのアドレスレンジを決定することができ、さらに不正アドレスレンジを割り当てることによって不良マットを無効にすることが可能となる。追加または代替として、他の一般的な方法またはヒューズを接続することによってマットを無効にできる。

0205

上記のあらゆる実施形態では、サブバンクの各マットは、マット内にワード線を選択するための行デコーダ(例えば、行デコーダ1230aまたは1230b)を含み得る。いくつかの実施形態では、各マットはさらにヒューズおよびコンパレータ(例えば1220aおよび1220b)を含み得る。上記のように、コンパレータは、各マットが入ってくる要求を処理するかどうかを決定することができる場合があり、ヒューズは、各マットが不良の場合非アクティブ化できる場合がある。あるいは、各マット内の行デコーダではなく、バンクおよび/またはサブバンクの行デコーダを使用することができる。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ