JPH06208501A - 集積回路 - Google Patents
集積回路Info
- Publication number
- JPH06208501A JPH06208501A JP3051143A JP5114391A JPH06208501A JP H06208501 A JPH06208501 A JP H06208501A JP 3051143 A JP3051143 A JP 3051143A JP 5114391 A JP5114391 A JP 5114391A JP H06208501 A JPH06208501 A JP H06208501A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- address
- chip
- broadcast
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a secondary processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a secondary processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
- Dram (AREA)
Abstract
(57)【要約】 (修正有)
【目的】集積回路の数を増すだけで、大量の並列処理を
可能とする。 【構成】データバス端子に接続されたデータメモリ20
2、データバス端子に接続された同報通信メモリ20
4、並びにデータメモリ202及び同報通信メモリ20
4に接続されたデータ経路制御回路を備える。
可能とする。 【構成】データバス端子に接続されたデータメモリ20
2、データバス端子に接続された同報通信メモリ20
4、並びにデータメモリ202及び同報通信メモリ20
4に接続されたデータ経路制御回路を備える。
Description
【0001】
【産業上の利用分野】本発明は一般的に分散処理に関す
るものであり、更に詳細には集積化されたメモリおよび
論理回路と、そのような集積化されたメモリおよび論理
回路のためのシステムに関するものである。
るものであり、更に詳細には集積化されたメモリおよび
論理回路と、そのような集積化されたメモリおよび論理
回路のためのシステムに関するものである。
【0002】
【従来の技術】典型的なフォンノイマン型のコンピュー
タシステムは1個の中央処理装置(CPU)と複数個の
メモリチップを含んでいる。並列処理によって処理能力
を高めるために複数個の処理装置を付加することは困難
な仕事であり、他方単一の処理装置にメモリを付加する
ことは簡単である。これは、処理装置がシステムバスに
対して頻繁なアクセスを必要とし、1つのシステム中に
複数個の処理装置が存在する場合にはバスへのアクセス
を調整することが必要となるためである。メモリから各
処理装置への入出力(I/O)バスに適切な帯域幅を与
えることができないために、使用可能なCPUサイクル
のすべてを効率的に使用することができない。従って、
現在の並列処理システムはバスあるいはI/Oで制限さ
れていると言われ、システムのスループットを高めるた
めに、高価なCPUとメモリ間の帯域幅と高価な付加的
処理装置を必要とする。専用の1つのメモリを持つ単一
の処理装置システムと、データの各ビットについて計算
用ハードウエアを備えたシストリック方式との間で、計
算とメモリサイズとの比は連続的に変化する。設計シス
テムは、1秒間に百万動作単位(MIPS)で測られる
巨大な計算能力を有しているかもしれないが、処理装置
におけるデータ待ちで失われるサイクルのためにその潜
在的なMIPSのすべてが使用可能なわけではない。シ
ステム性能はそのシステムの全体的な帯域幅によって支
配される。システム帯域幅はバスの数とトグル周波数と
の積によって定義される。そして、システム性能コスト
関数は消費される電力であり、次の式で表される。
タシステムは1個の中央処理装置(CPU)と複数個の
メモリチップを含んでいる。並列処理によって処理能力
を高めるために複数個の処理装置を付加することは困難
な仕事であり、他方単一の処理装置にメモリを付加する
ことは簡単である。これは、処理装置がシステムバスに
対して頻繁なアクセスを必要とし、1つのシステム中に
複数個の処理装置が存在する場合にはバスへのアクセス
を調整することが必要となるためである。メモリから各
処理装置への入出力(I/O)バスに適切な帯域幅を与
えることができないために、使用可能なCPUサイクル
のすべてを効率的に使用することができない。従って、
現在の並列処理システムはバスあるいはI/Oで制限さ
れていると言われ、システムのスループットを高めるた
めに、高価なCPUとメモリ間の帯域幅と高価な付加的
処理装置を必要とする。専用の1つのメモリを持つ単一
の処理装置システムと、データの各ビットについて計算
用ハードウエアを備えたシストリック方式との間で、計
算とメモリサイズとの比は連続的に変化する。設計シス
テムは、1秒間に百万動作単位(MIPS)で測られる
巨大な計算能力を有しているかもしれないが、処理装置
におけるデータ待ちで失われるサイクルのためにその潜
在的なMIPSのすべてが使用可能なわけではない。シ
ステム性能はそのシステムの全体的な帯域幅によって支
配される。システム帯域幅はバスの数とトグル周波数と
の積によって定義される。そして、システム性能コスト
関数は消費される電力であり、次の式で表される。
【0003】
【数1】コスト≒帯域幅×容量×(電圧スイング)2 与えられたシステムMIPSとシステム帯域幅とに対し
て、このコスト関数はバス容量および/またはバス信号
スイングを減らすことによって最小化することができ
る。システム帯域幅を改善するための伝統的な方法は、
ゲート速度を高め、チップの複雑度を高め、ピン数を増
やすことなどである。これらの方法は、より高価な集積
回路(IC)製造技術および/または実装コストの増大
により、電気的なコスト関数の点でもまた資金の点で
も、より高いコストをかけて徐々に成功を収めてきた。
て、このコスト関数はバス容量および/またはバス信号
スイングを減らすことによって最小化することができ
る。システム帯域幅を改善するための伝統的な方法は、
ゲート速度を高め、チップの複雑度を高め、ピン数を増
やすことなどである。これらの方法は、より高価な集積
回路(IC)製造技術および/または実装コストの増大
により、電気的なコスト関数の点でもまた資金の点で
も、より高いコストをかけて徐々に成功を収めてきた。
【0004】並列処理の分野の研究者は、汎用的な並列
ハードウエアおよびソフトウエアに固有な困難を克服す
ることに取り組んでいる。一般に、大量並列処理マシン
の利用できる非常に多くの処理要素を、効果的に利用で
きる同程度の大きさのブロックに分割することが有望で
あると思われるようになってきている。市販されている
システムの最近の傾向は、セグメント化された問題を容
易に解くように設計された用途別の専用システムに向い
ている。コンピュータシステムの大きさが増大してくる
と計算能力とメモリサイズとの不一致が現れてくる。デ
ジタル信号処理のようないくつかのコンピュータタスク
ではシステムの大きさに比例した計算サイクルを要求さ
れ、メモリと中央処理装置との間のバスの交通量が処理
速度を制限する。計算能力をメモリへ分散させる解決法
は数年前から知られていたが、非イノマン型のコンピュ
ータアーキテクチャが含まれているためほとんど無視さ
れてきた。オックスフォードコンピュータ(Oxfor
d Computers)によって開発されたこのスマ
ートメモリの最近のモデルについては、VLSIシステ
ム設計(VLSI SystemDesign)誌の1
988年12月号の頁18−32に、クッシュマン(C
ushman)によって発表された“大量並列方式によ
る行列計算(MatrixCrunching wit
h Massive Parallelism)”と、
レーザフォーカスワールド(Laser Focus
World)誌の1989年4月号の頁163−164
にモルトン(Morton)によって発表された“光コ
ンピュータと競合する知的なメモリチップ(Intel
ligent Memory Chip Compet
es with OpticalComputin
g)”に述べられている。しかし、このスマートメモリ
は、中央処理装置から個々のメモリチップへの書き込み
がシリアルのみであること、論理回路の複雑度に厳しい
制限があること、等の制約を有している。
ハードウエアおよびソフトウエアに固有な困難を克服す
ることに取り組んでいる。一般に、大量並列処理マシン
の利用できる非常に多くの処理要素を、効果的に利用で
きる同程度の大きさのブロックに分割することが有望で
あると思われるようになってきている。市販されている
システムの最近の傾向は、セグメント化された問題を容
易に解くように設計された用途別の専用システムに向い
ている。コンピュータシステムの大きさが増大してくる
と計算能力とメモリサイズとの不一致が現れてくる。デ
ジタル信号処理のようないくつかのコンピュータタスク
ではシステムの大きさに比例した計算サイクルを要求さ
れ、メモリと中央処理装置との間のバスの交通量が処理
速度を制限する。計算能力をメモリへ分散させる解決法
は数年前から知られていたが、非イノマン型のコンピュ
ータアーキテクチャが含まれているためほとんど無視さ
れてきた。オックスフォードコンピュータ(Oxfor
d Computers)によって開発されたこのスマ
ートメモリの最近のモデルについては、VLSIシステ
ム設計(VLSI SystemDesign)誌の1
988年12月号の頁18−32に、クッシュマン(C
ushman)によって発表された“大量並列方式によ
る行列計算(MatrixCrunching wit
h Massive Parallelism)”と、
レーザフォーカスワールド(Laser Focus
World)誌の1989年4月号の頁163−164
にモルトン(Morton)によって発表された“光コ
ンピュータと競合する知的なメモリチップ(Intel
ligent Memory Chip Compet
es with OpticalComputin
g)”に述べられている。しかし、このスマートメモリ
は、中央処理装置から個々のメモリチップへの書き込み
がシリアルのみであること、論理回路の複雑度に厳しい
制限があること、等の制約を有している。
【0005】
【発明の概要】本発明は、すべてのチップに対して同報
通信されることのできる二次的メモリと内部計算論理回
路とを含むコンピュータメモリチップを供給するもので
あり、更にそのようなメモリを備えたシステムをも供給
するものである。このメモリチップは標準的な実装ピン
形式を有している。この構造の採用により、単にチップ
の数を増やすことによって、並列処理要素の数を拡張
し、大量の並列処理を実現することが容易になる。この
チップはまた、従来のRAMとしても動作し得る。この
チップによって、基板レベルでのデータの移動の要求を
最小にして、従来のシステムの問題点を解決することが
できる。このチップは、記憶と計算とを結び付け、主C
PUへ送られるデータ量を減らすことによってこのこと
を達成する。
通信されることのできる二次的メモリと内部計算論理回
路とを含むコンピュータメモリチップを供給するもので
あり、更にそのようなメモリを備えたシステムをも供給
するものである。このメモリチップは標準的な実装ピン
形式を有している。この構造の採用により、単にチップ
の数を増やすことによって、並列処理要素の数を拡張
し、大量の並列処理を実現することが容易になる。この
チップはまた、従来のRAMとしても動作し得る。この
チップによって、基板レベルでのデータの移動の要求を
最小にして、従来のシステムの問題点を解決することが
できる。このチップは、記憶と計算とを結び付け、主C
PUへ送られるデータ量を減らすことによってこのこと
を達成する。
【0006】システムスループット増大の一次的な見積
は、“情報”データに対する生データの比によって与え
られる。例えば、行列乗算の場合には(後に詳細に説明
する)、256の生バイトから2バイトの情報が得られ
ると仮定する。従って、256バイトの生データの替わ
りに2バイトの情報だけがCPUへ送られることからシ
ステムの改善は明かである。すなわち改善度は128で
ある。チップ中に含まれるデータ経路論理回路の量と、
システム中に含まれるチップ数とに依存して、MIPS
数とスループット改善度は上に述べた例の128よりも
大きくなり得る。このチップの設計は、チップの数を単
に増やすだけで分散並列処理能力を望みのレベルにまで
高めるように拡張することが容易なものとなっている。
メモリ商品の経済学では、製造ステップおよび実装のコ
ストを最小化しながら素子密度を最大化することが要求
される。作業負荷をCPUからメモリへ移すことは、必
要とされるCPUバスの帯域幅を大幅に低減する一方
で、メモリ製造技術を十分活用している。実施例の設計
では、処理要素の数がメモリチップの数によって定まる
ので、システム設計者が柔軟に処理能力対コストを設定
することができる。
は、“情報”データに対する生データの比によって与え
られる。例えば、行列乗算の場合には(後に詳細に説明
する)、256の生バイトから2バイトの情報が得られ
ると仮定する。従って、256バイトの生データの替わ
りに2バイトの情報だけがCPUへ送られることからシ
ステムの改善は明かである。すなわち改善度は128で
ある。チップ中に含まれるデータ経路論理回路の量と、
システム中に含まれるチップ数とに依存して、MIPS
数とスループット改善度は上に述べた例の128よりも
大きくなり得る。このチップの設計は、チップの数を単
に増やすだけで分散並列処理能力を望みのレベルにまで
高めるように拡張することが容易なものとなっている。
メモリ商品の経済学では、製造ステップおよび実装のコ
ストを最小化しながら素子密度を最大化することが要求
される。作業負荷をCPUからメモリへ移すことは、必
要とされるCPUバスの帯域幅を大幅に低減する一方
で、メモリ製造技術を十分活用している。実施例の設計
では、処理要素の数がメモリチップの数によって定まる
ので、システム設計者が柔軟に処理能力対コストを設定
することができる。
【0007】
【実施例】図面は分かりやすいように模式的に示してあ
る。第1a図は、システム100に接続された第1の実
施例のメモリ110、111、112…139を示すブ
ロック図である。そのシステム100は、中央処理装置
CPU102、8ビットデータバス104、11ビット
アドレスバス106、30個のメモリチップ110、1
11、112…139のための5ビットチップ選択デコ
ーダ108それとI/O109とを含む、メモリ11
0、111、112…139は各々2K×8ビット又は
バイトのSRAM部を有している。CPU102はモト
ローラ社製の6800やインテル社製の8080のよう
な簡単な処理装置でよく、メモリ110、111…13
9の各々へ接続されたライトイネーブルピンとレディピ
ンを有している。合計60K×8のメモリのための2K
×8のSRAMとして動作する各メモリ110、111
…139で汎用の処理を実行することもできるが、シス
テム100は以下の節で述べるように、メモリ110、
111…139の構造によって、デジタル信号処理のよ
うな計算用途に特に向いている。実際、各メモリ11
0、111、112…139は応用分野専用の論理回路
を含む埋め込みデータ経路であると共に、デュアルメモ
リ(データメモリと同報通信メモリ)である、(第1b
図と第2図を参照のこと)。メモリチップに論理回路を
埋め込むことで、同一チップ上に低コストで帯域幅を確
保し、非常に高速のメモリアクセスを可能とするという
特長を発揮できる。更に、各チップ中に同報通信メモリ
を含むことによって、システムは大量並列分散計算のた
めに各チップのデータ経路処理要素を同時に使用するこ
とが可能になる。これらのメモリチップのピン出力は標
準的であり、SRAMメモリのファミリと共通である。
る。第1a図は、システム100に接続された第1の実
施例のメモリ110、111、112…139を示すブ
ロック図である。そのシステム100は、中央処理装置
CPU102、8ビットデータバス104、11ビット
アドレスバス106、30個のメモリチップ110、1
11、112…139のための5ビットチップ選択デコ
ーダ108それとI/O109とを含む、メモリ11
0、111、112…139は各々2K×8ビット又は
バイトのSRAM部を有している。CPU102はモト
ローラ社製の6800やインテル社製の8080のよう
な簡単な処理装置でよく、メモリ110、111…13
9の各々へ接続されたライトイネーブルピンとレディピ
ンを有している。合計60K×8のメモリのための2K
×8のSRAMとして動作する各メモリ110、111
…139で汎用の処理を実行することもできるが、シス
テム100は以下の節で述べるように、メモリ110、
111…139の構造によって、デジタル信号処理のよ
うな計算用途に特に向いている。実際、各メモリ11
0、111、112…139は応用分野専用の論理回路
を含む埋め込みデータ経路であると共に、デュアルメモ
リ(データメモリと同報通信メモリ)である、(第1b
図と第2図を参照のこと)。メモリチップに論理回路を
埋め込むことで、同一チップ上に低コストで帯域幅を確
保し、非常に高速のメモリアクセスを可能とするという
特長を発揮できる。更に、各チップ中に同報通信メモリ
を含むことによって、システムは大量並列分散計算のた
めに各チップのデータ経路処理要素を同時に使用するこ
とが可能になる。これらのメモリチップのピン出力は標
準的であり、SRAMメモリのファミリと共通である。
【0008】第1b図のチップ配置図が示すように、各
メモリは3つの主要な回路ブロックを含んでいる: a) データRAMまたはデータメモリ202と呼ばれる
2K×8のSRAM、 b) アプリケーション論理回路およびデータ経路20
6、 c) 同報通信RAMまたは同報通信メモリ204と呼ば
れる256×8のSRAM。 チップの平面配置はこれらの3つの部分を強く反映した
ものとなっている。上から下へ、データメモリ、アプリ
ケーション論理回路、同報通信メモリが見られ、データ
メモリと該論理回路との間、および該論理回路と同報通
信メモリとの間には明瞭な境界が見られる。データメモ
リ部は、すべてのアドレス、チップ選択論理回路、Vc
cパッドを含んでいる。同報通信メモリ部は、すべての
I/OパッドとVssパッドを含んでいる。この配慮さ
れた平面配置方法は、各種の大きさの特定顧客向けアプ
リケーション論理回路部に容易に組込むことができるよ
うに、チップ構成はプログラム可能である。この論理回
路は特注用に設計でき(ゲートアレイ、標準セル、
等)、あるいは特定のアプリケーション用に利用者が熔
断および非熔断(antifuse)をプログラムする
ことで構成できる。この論理回路はまた、いくらか一般
的でもよく、あるいはハーバード(Harvard)構
造のように、同一チップ上に命令解読を備えることで、
プログラム可能な論理回路とすることもできる。より高
密度の設計のためには、標準的な32K×8のSRAM
と同様なピン出力の構成を使用でき、そのときCPUは
32ビットアドレスを持つことができる。
メモリは3つの主要な回路ブロックを含んでいる: a) データRAMまたはデータメモリ202と呼ばれる
2K×8のSRAM、 b) アプリケーション論理回路およびデータ経路20
6、 c) 同報通信RAMまたは同報通信メモリ204と呼ば
れる256×8のSRAM。 チップの平面配置はこれらの3つの部分を強く反映した
ものとなっている。上から下へ、データメモリ、アプリ
ケーション論理回路、同報通信メモリが見られ、データ
メモリと該論理回路との間、および該論理回路と同報通
信メモリとの間には明瞭な境界が見られる。データメモ
リ部は、すべてのアドレス、チップ選択論理回路、Vc
cパッドを含んでいる。同報通信メモリ部は、すべての
I/OパッドとVssパッドを含んでいる。この配慮さ
れた平面配置方法は、各種の大きさの特定顧客向けアプ
リケーション論理回路部に容易に組込むことができるよ
うに、チップ構成はプログラム可能である。この論理回
路は特注用に設計でき(ゲートアレイ、標準セル、
等)、あるいは特定のアプリケーション用に利用者が熔
断および非熔断(antifuse)をプログラムする
ことで構成できる。この論理回路はまた、いくらか一般
的でもよく、あるいはハーバード(Harvard)構
造のように、同一チップ上に命令解読を備えることで、
プログラム可能な論理回路とすることもできる。より高
密度の設計のためには、標準的な32K×8のSRAM
と同様なピン出力の構成を使用でき、そのときCPUは
32ビットアドレスを持つことができる。
【0009】第1の実施例では、チップ内に含めること
のできる論理回路の部分用に外部信号ピンを利用するこ
ともできる。60Kバイトメモリシステムとして、2K
×8のメモリを30個備えた第1a図のシステムを取り
上げる。各チップのデータメモリは、フォンノイマンシ
ステムと同様にCPUアドレス空間にマッピングされ
る。具体的には、CPUアドレスの0−2Kはチップ1
10によって占められ、アドレスの2K−4Kはチップ
111によって占められ、以下同様である。しかし、各
チップの同報通信メモリの256バイトは同じCPUア
ドレス空間を占めるようにマッピングされる。このよう
にすることによって、すべてのチップの同報通信メモリ
がCPUの書き込み命令に対して同時に応答することが
できる。この目的のために60K−62KのCPUアド
レス空間が使用されるとする。この領域の256バイト
のみが各チップ中の実際のメモリに対応している。第1
c図がこのアドレスマッピングを示している。
のできる論理回路の部分用に外部信号ピンを利用するこ
ともできる。60Kバイトメモリシステムとして、2K
×8のメモリを30個備えた第1a図のシステムを取り
上げる。各チップのデータメモリは、フォンノイマンシ
ステムと同様にCPUアドレス空間にマッピングされ
る。具体的には、CPUアドレスの0−2Kはチップ1
10によって占められ、アドレスの2K−4Kはチップ
111によって占められ、以下同様である。しかし、各
チップの同報通信メモリの256バイトは同じCPUア
ドレス空間を占めるようにマッピングされる。このよう
にすることによって、すべてのチップの同報通信メモリ
がCPUの書き込み命令に対して同時に応答することが
できる。この目的のために60K−62KのCPUアド
レス空間が使用されるとする。この領域の256バイト
のみが各チップ中の実際のメモリに対応している。第1
c図がこのアドレスマッピングを示している。
【0010】メモリシステムのチップ選択の従来の方法
が第1a図に示されており、CPUはアドレス上位5ビ
ットを供給し、それらはチップ選択のためデコードされ
る。チップ選択のこの第1の実施例の方法もまた、デー
タメモリへのアクセスのためにアドレス上位5ビットの
デコードを使用しているが、同報通信メモリへのアクセ
スのためには、以下に述べるように各チップ上のレジス
タを使用している。CPUアドレス空間中でのプログラ
マブル同報通信メモリの位置は各チップ上の初期化レジ
スタ(“CBSレジスタ”)によって設定される。CB
Sレジスタの初期化は、CPUからの同報通信に対する
応答のためにチップのシステムをグループ分けするため
に使用されることができる。初期化は任意の時点でCP
Uによって実行することができ、簡便にシステムを再構
成することができる。初期化は、2つの特別なアドレス
の列へ何度も書き込みを行うことによって、逐次的に個
々のチップ上で実行することができる。初期化として受
け取られるようなデータメモリへの書き込み動作のラン
ダムな発生の可能性を避けるために、この事象は順番に
複数回発生することが必要である。各チップ上の事象カ
ウンタがそのシーケンスを検出し、それによってデータ
バス上のデータがCBSレジスタへ書き込まれ、そのC
SBレジスタはそのチップに対するグループを定義す
る。事象カウンタへのクロックは、アドレス遷移検出器
(ATD)によって供給され、それはアドレスが変化す
る毎に一度パルスを発生する。これが事象が2つの異な
るアドレス列である理由である。通常のアドレス上位5
ビットに基づくチップ選択動作は初期化の間のCBSレ
ジスタへの書き込み時には1つのチップを選ぶが、同報
通信命令の検出時にはアクティブではないことを思い出
されたい。
が第1a図に示されており、CPUはアドレス上位5ビ
ットを供給し、それらはチップ選択のためデコードされ
る。チップ選択のこの第1の実施例の方法もまた、デー
タメモリへのアクセスのためにアドレス上位5ビットの
デコードを使用しているが、同報通信メモリへのアクセ
スのためには、以下に述べるように各チップ上のレジス
タを使用している。CPUアドレス空間中でのプログラ
マブル同報通信メモリの位置は各チップ上の初期化レジ
スタ(“CBSレジスタ”)によって設定される。CB
Sレジスタの初期化は、CPUからの同報通信に対する
応答のためにチップのシステムをグループ分けするため
に使用されることができる。初期化は任意の時点でCP
Uによって実行することができ、簡便にシステムを再構
成することができる。初期化は、2つの特別なアドレス
の列へ何度も書き込みを行うことによって、逐次的に個
々のチップ上で実行することができる。初期化として受
け取られるようなデータメモリへの書き込み動作のラン
ダムな発生の可能性を避けるために、この事象は順番に
複数回発生することが必要である。各チップ上の事象カ
ウンタがそのシーケンスを検出し、それによってデータ
バス上のデータがCBSレジスタへ書き込まれ、そのC
SBレジスタはそのチップに対するグループを定義す
る。事象カウンタへのクロックは、アドレス遷移検出器
(ATD)によって供給され、それはアドレスが変化す
る毎に一度パルスを発生する。これが事象が2つの異な
るアドレス列である理由である。通常のアドレス上位5
ビットに基づくチップ選択動作は初期化の間のCBSレ
ジスタへの書き込み時には1つのチップを選ぶが、同報
通信命令の検出時にはアクティブではないことを思い出
されたい。
【0011】すべてのチップはアドレスバス上の活動度
を見て、命令の同報通信のために使用することを許す。
アドレス上位5ビットに基づくチップ選択動作は命令の
問い合わせに対してアクティブになることは要求されて
いないので、すべてのチップが命令問い合わせを同時に
行うことができる設計になっている。グループの識別は
同報通信命令中に含まれており、要求されたグループ中
のチップのみがコマンドに応答する。この命令フィール
ドは、第1の実施例の2K×8の構成に関しては11ビ
ットである:最初の3ビットはコマンドを指定し、次の
5ビットの内の1ビットはATD信号を生成し、最後の
3ビットはCBSレジスタ中に記憶されている値との比
較によってそのチップが属するグループを定義する。例
えば、次の表はグループ指定をRRR付きでエンコード
したときの様子を示す:
を見て、命令の同報通信のために使用することを許す。
アドレス上位5ビットに基づくチップ選択動作は命令の
問い合わせに対してアクティブになることは要求されて
いないので、すべてのチップが命令問い合わせを同時に
行うことができる設計になっている。グループの識別は
同報通信命令中に含まれており、要求されたグループ中
のチップのみがコマンドに応答する。この命令フィール
ドは、第1の実施例の2K×8の構成に関しては11ビ
ットである:最初の3ビットはコマンドを指定し、次の
5ビットの内の1ビットはATD信号を生成し、最後の
3ビットはCBSレジスタ中に記憶されている値との比
較によってそのチップが属するグループを定義する。例
えば、次の表はグループ指定をRRR付きでエンコード
したときの様子を示す:
【0012】
【表1】 命令 アドレスビット ─────────────────────────────────── 同報通信書き込みモード開始 000 00001 RRR 000 00000 RRR 同報通信書き込みモード終了 001 00001 RRR 001 00000 RRR ローカル計算開始 010 00001 RRR 010 00000 RRR 自己試験モード開始 011 00001 RRR 011 00000 RRR ローカルな計算のインターラプト 100 00001 RRR 100 00000 RRR チップの事象カウンタは、次の事象の順次発生を制御論
理回路が検出した場合にインクリメントされる:“アド
レスバス上のデータが命令と一致、中間のビットが期待
されたもの、及び要求されたグループがCBSレジスタ
中に設定されたグループと一致”。事象カウンタは、統
計的に計算された数の逐次的事象が発生したときに満足
される。次に制御論理回路はそのグループ内のすべての
チップに対して要求された操作を開始する。
理回路が検出した場合にインクリメントされる:“アド
レスバス上のデータが命令と一致、中間のビットが期待
されたもの、及び要求されたグループがCBSレジスタ
中に設定されたグループと一致”。事象カウンタは、統
計的に計算された数の逐次的事象が発生したときに満足
される。次に制御論理回路はそのグループ内のすべての
チップに対して要求された操作を開始する。
【0013】例えば、システムが4つの同報通信グルー
プ:000、001、010、011に初期化されたと
仮定する。グループ001に対して同報通信書き込みモ
ード開始を命令するためには、CPU102はまず、任
意のチップの000 00001 001アドレスを読
み出し、次に000 00000 001アドレスを読
み出し、ATDによって生成されるクロックパルスを供
給し、グループ001中のすべてのチップ上の事象カウ
ンタを増分させる。そのような読出しを逐次行うこと
で、グループ001内の各チップ中の事象カウンタが満
足され、同一チップ上の制御論理回路が、要求されるコ
マンド000(同報通信書き込みモード開始)を実行す
る。この命令において、グループ001中のすべてのチ
ップに対する同報通信メモリチップ選択(CSB)がア
クティブになる。これに従ってCPU102は一連の通
常の書き込みサイクルを実行することができ、それによ
ってグループ001中の各チップの同報通信メモリへの
同時書き込みが行われる。1つのチップが、同報通信書
き込みモードにある間、CSBとデータメモリチップの
選択(CSD)の両方がアクティブ状態になることがあ
る。その場合同一チップ上の論理回路はこれをチップの
同報通信メモリへの書き込み命令と解釈する。CPU1
02は、同報通信書き込みを完了すると、このプロセス
を繰り返すが、今度の命令はアドレスバス上へ001
00001 001を送出することによる同報通信書き
込みモード終了である。これによってグループ001内
のチップはCSBを非アクティブとし、通常のモードへ
戻る。
プ:000、001、010、011に初期化されたと
仮定する。グループ001に対して同報通信書き込みモ
ード開始を命令するためには、CPU102はまず、任
意のチップの000 00001 001アドレスを読
み出し、次に000 00000 001アドレスを読
み出し、ATDによって生成されるクロックパルスを供
給し、グループ001中のすべてのチップ上の事象カウ
ンタを増分させる。そのような読出しを逐次行うこと
で、グループ001内の各チップ中の事象カウンタが満
足され、同一チップ上の制御論理回路が、要求されるコ
マンド000(同報通信書き込みモード開始)を実行す
る。この命令において、グループ001中のすべてのチ
ップに対する同報通信メモリチップ選択(CSB)がア
クティブになる。これに従ってCPU102は一連の通
常の書き込みサイクルを実行することができ、それによ
ってグループ001中の各チップの同報通信メモリへの
同時書き込みが行われる。1つのチップが、同報通信書
き込みモードにある間、CSBとデータメモリチップの
選択(CSD)の両方がアクティブ状態になることがあ
る。その場合同一チップ上の論理回路はこれをチップの
同報通信メモリへの書き込み命令と解釈する。CPU1
02は、同報通信書き込みを完了すると、このプロセス
を繰り返すが、今度の命令はアドレスバス上へ001
00001 001を送出することによる同報通信書き
込みモード終了である。これによってグループ001内
のチップはCSBを非アクティブとし、通常のモードへ
戻る。
【0014】このチップ選択方式は次のような特長を有
している。 1. 特別なプリント基板配線が不要。 2. システム中の各チップの同報通信RAMのCPUア
ドレス空間中の記憶場所がプログラム可能な“ソフト”
的。 3. 標準的なSRAM実装以上の付加的なピンが不要。 4. CPUからシステム中のチップすべてへ、または任
意のチップへ命令を同報通信することが可能。命令はロ
ーカル計算や自己試験のようなチップ動作を開始させる
ためにも用いられる。 別のチップ選択方式では次のように、与えられたCPU
アドレス空間において1つ、または複数個の同報通信メ
モリを選択することができるように、チップレベルと基
板レベルでのデコードが組み合わされる。第1a図の6
0Kバイトメモリシステムとして30個の2K×8のメ
モリを備えたシステムについて考える。各チップのデー
タメモリは従来のシステムのように、CPUのアドレス
空間へマッピングされる。具体的には、CPUアドレス
の0−2Kはチップ110で占められ、アドレス2K−
4Kはチップ111によって、以下同様にして、アドレ
ス58K−60Kはチップ139によって占められる。
各データメモリの間隔の2Kは11ビットのアドレスバ
ス106で定義される。
している。 1. 特別なプリント基板配線が不要。 2. システム中の各チップの同報通信RAMのCPUア
ドレス空間中の記憶場所がプログラム可能な“ソフト”
的。 3. 標準的なSRAM実装以上の付加的なピンが不要。 4. CPUからシステム中のチップすべてへ、または任
意のチップへ命令を同報通信することが可能。命令はロ
ーカル計算や自己試験のようなチップ動作を開始させる
ためにも用いられる。 別のチップ選択方式では次のように、与えられたCPU
アドレス空間において1つ、または複数個の同報通信メ
モリを選択することができるように、チップレベルと基
板レベルでのデコードが組み合わされる。第1a図の6
0Kバイトメモリシステムとして30個の2K×8のメ
モリを備えたシステムについて考える。各チップのデー
タメモリは従来のシステムのように、CPUのアドレス
空間へマッピングされる。具体的には、CPUアドレス
の0−2Kはチップ110で占められ、アドレス2K−
4Kはチップ111によって、以下同様にして、アドレ
ス58K−60Kはチップ139によって占められる。
各データメモリの間隔の2Kは11ビットのアドレスバ
ス106で定義される。
【0015】この別のチップ選択方式では、通常、32
個のチップの各々を選択するためのCSD信号をデコー
ドするために使用されるアドレス上位5ビットがメモリ
チップ110−139の識別のために利用され、各チッ
プは同一チップ上のCSDとCSBをデコードするため
に、CPU全アドレス空間の使用率を見る。実装された
チップはこの目的のための5本の付加的ピンを有してい
る。アドレス上位5ビット信号の各々は基板レベルで反
転され、真値と相補値の両方が各メモリチップによって
供給される。次にシステム設計者はチップを各信号の真
値または相補値のいずれかへつなぐ。より簡便には、各
チップにインバータを含めることによって、真値または
相補値の接続を同一チップ上のレジスタによって行うこ
とができる。CSBを発生させ、チップの同報通信メモ
リをグループに分割できるようにするために、各チップ
上の特別なメモリアドレスレジスタがそのチップの同報
通信メモリチップ選択場所を記憶するために用いられ
る。これは既に述べたチップ選択方式のためのCSBレ
ジスタと同様のものである。5上位アドレスビットの各
々の真値と相補値は、5個のインバータによって同一チ
ップ上で利用可能である。レジスタ中の値がCSBを発
生させるのに真値または相補値が使用されるかどうかを
決定し、CSBはこの場合でもプログラム可能な対象で
ある。もしチップの同報通信メモリすべてが同じアドレ
ス空間へマッピングされたとしたら、すべてのチップ中
の同報通信メモリが同時に書き込み可能となる。CPU
のアドレス空間60Kから60.25Kはこの目的のた
めに使用される。この領域の256バイトは各チップ上
の実際の同報通信メモリ記憶場所に対応する。第1c図
はこのマッピングを示す。
個のチップの各々を選択するためのCSD信号をデコー
ドするために使用されるアドレス上位5ビットがメモリ
チップ110−139の識別のために利用され、各チッ
プは同一チップ上のCSDとCSBをデコードするため
に、CPU全アドレス空間の使用率を見る。実装された
チップはこの目的のための5本の付加的ピンを有してい
る。アドレス上位5ビット信号の各々は基板レベルで反
転され、真値と相補値の両方が各メモリチップによって
供給される。次にシステム設計者はチップを各信号の真
値または相補値のいずれかへつなぐ。より簡便には、各
チップにインバータを含めることによって、真値または
相補値の接続を同一チップ上のレジスタによって行うこ
とができる。CSBを発生させ、チップの同報通信メモ
リをグループに分割できるようにするために、各チップ
上の特別なメモリアドレスレジスタがそのチップの同報
通信メモリチップ選択場所を記憶するために用いられ
る。これは既に述べたチップ選択方式のためのCSBレ
ジスタと同様のものである。5上位アドレスビットの各
々の真値と相補値は、5個のインバータによって同一チ
ップ上で利用可能である。レジスタ中の値がCSBを発
生させるのに真値または相補値が使用されるかどうかを
決定し、CSBはこの場合でもプログラム可能な対象で
ある。もしチップの同報通信メモリすべてが同じアドレ
ス空間へマッピングされたとしたら、すべてのチップ中
の同報通信メモリが同時に書き込み可能となる。CPU
のアドレス空間60Kから60.25Kはこの目的のた
めに使用される。この領域の256バイトは各チップ上
の実際の同報通信メモリ記憶場所に対応する。第1c図
はこのマッピングを示す。
【0016】第2図は第1の実施例メモリ110の模式
的ブロック図である;メモリ110はシリコンCMOS
集積回路で構成され、2K×8の標準的な16KのSR
AMと同じピン出力形式で実装されている。このことは
既存の16Kメモリチップを、メモリ110のようなチ
ップで単に置き換えることによって、16Kメモリチッ
プを使用するシステムをシステム100と同様なシステ
ムに変換可能であることを意味する。メモリ110は、
2K×8のSRAM202(データRAM)、256×
8のSRAM204(同報通信RAM)、論理回路20
6(アプリケーション論理回路処理要素を備えたローカ
ルデータ経路を含む)、データRAMとデータ経路との
間のローカル32ビットバス208、同報通信RAMと
データ経路との間のローカル32ビットバス209、デ
ータRAM202と同報通信RAM204とをデータバ
ス104へつなぐ8ビット入出力ポート210、データ
メモリ用チップ選択(CSD)入力214、書き込み許
可(WE)入力216、マルチプレクサ212から11
ビットアドレスを受け取るローカルアドレスバス21
8、メモリレディ出力または出力イネーブル(OE)入
力220(CPUの型に依存する)を含んでいる。標準
的なピン出力形式を維持するために、外部レディピンは
オプションである。但しそれは標準的なピン出力形式が
必要でない場合には利用できる。レディ機能は、メモリ
中でローカルな計算が始められた時に、データRAM中
の予約された“フラグ”を“準備できていない(ノット
レディ)”値に設定することで実行される。CPU10
2はメモリチップに対してレディ信号のポーリングを行
う時だけ、ローカルな計算に割り込むことが許されてい
る。ポーリングは通常の読み出しによって行われる。割
り込みは以下で述べる1つの命令である。
的ブロック図である;メモリ110はシリコンCMOS
集積回路で構成され、2K×8の標準的な16KのSR
AMと同じピン出力形式で実装されている。このことは
既存の16Kメモリチップを、メモリ110のようなチ
ップで単に置き換えることによって、16Kメモリチッ
プを使用するシステムをシステム100と同様なシステ
ムに変換可能であることを意味する。メモリ110は、
2K×8のSRAM202(データRAM)、256×
8のSRAM204(同報通信RAM)、論理回路20
6(アプリケーション論理回路処理要素を備えたローカ
ルデータ経路を含む)、データRAMとデータ経路との
間のローカル32ビットバス208、同報通信RAMと
データ経路との間のローカル32ビットバス209、デ
ータRAM202と同報通信RAM204とをデータバ
ス104へつなぐ8ビット入出力ポート210、データ
メモリ用チップ選択(CSD)入力214、書き込み許
可(WE)入力216、マルチプレクサ212から11
ビットアドレスを受け取るローカルアドレスバス21
8、メモリレディ出力または出力イネーブル(OE)入
力220(CPUの型に依存する)を含んでいる。標準
的なピン出力形式を維持するために、外部レディピンは
オプションである。但しそれは標準的なピン出力形式が
必要でない場合には利用できる。レディ機能は、メモリ
中でローカルな計算が始められた時に、データRAM中
の予約された“フラグ”を“準備できていない(ノット
レディ)”値に設定することで実行される。CPU10
2はメモリチップに対してレディ信号のポーリングを行
う時だけ、ローカルな計算に割り込むことが許されてい
る。ポーリングは通常の読み出しによって行われる。割
り込みは以下で述べる1つの命令である。
【0017】同報通信RAM204はメモリ110に対
するCSD信号が存在しなくても書き込まれ得る;すな
わちメモリ110、111…139の同報通信RAMは
すべて同じCPUアドレス空間を占めているため、同時
に書き込みできる。同報通信RAM204のアドレスは
11ビットアドレスの上位8ビットを占めている。デー
タは、CPU102によってアドレスバス106上にア
ドレスを与え、メモリ110に対するCSDをアクティ
ブにし、WEをアクティブにすることによって、データ
RAM202中へ書き込み、またはそこから読み出され
る。このように、このモードでメモリ110は標準的な
2K×8のメモリのように動作する。読み出し/書き込
みの真偽値表は次のようになる:
するCSD信号が存在しなくても書き込まれ得る;すな
わちメモリ110、111…139の同報通信RAMは
すべて同じCPUアドレス空間を占めているため、同時
に書き込みできる。同報通信RAM204のアドレスは
11ビットアドレスの上位8ビットを占めている。デー
タは、CPU102によってアドレスバス106上にア
ドレスを与え、メモリ110に対するCSDをアクティ
ブにし、WEをアクティブにすることによって、データ
RAM202中へ書き込み、またはそこから読み出され
る。このように、このモードでメモリ110は標準的な
2K×8のメモリのように動作する。読み出し/書き込
みの真偽値表は次のようになる:
【表2】
【0018】第3図はメモリ110のより詳細な図であ
り、回路の一部を示している。メモリ110は128個
のセルが128列に配置された配列を含んでおり、メモ
リセルのピッチは15×20μmとなっている。同報通
信メモリは本質的に、主配列の内128×16の部分で
ある。この設計は1μmCMOS技術を用いて作製され
ている。理想的な構造ではローカルなデータ処理のスル
ープットを最大化するために128ビットの内部データ
経路を設けたものになろう。しかし、SRAMセルピッ
チの中にランダム論理回路を設計することは極めて困難
である。従って、メモリ110ではチップ内部で全論理
レベルを発生するためにビットラインからセンス増幅器
(およびデータ経路論理回路)および強化されたセンス
増幅器へ4:1の多重化が行なわれている。こうして、
内部データ経路は128/4=32ビット幅となる;3
2個の処理要素219が示されているが、第3の実施例
に示されているように処理要素の数は違ってもよい。更
に第2図の入出力ポート210は単にデータバス104
から32ビットの内部バスへの接続を意味するものであ
る。
り、回路の一部を示している。メモリ110は128個
のセルが128列に配置された配列を含んでおり、メモ
リセルのピッチは15×20μmとなっている。同報通
信メモリは本質的に、主配列の内128×16の部分で
ある。この設計は1μmCMOS技術を用いて作製され
ている。理想的な構造ではローカルなデータ処理のスル
ープットを最大化するために128ビットの内部データ
経路を設けたものになろう。しかし、SRAMセルピッ
チの中にランダム論理回路を設計することは極めて困難
である。従って、メモリ110ではチップ内部で全論理
レベルを発生するためにビットラインからセンス増幅器
(およびデータ経路論理回路)および強化されたセンス
増幅器へ4:1の多重化が行なわれている。こうして、
内部データ経路は128/4=32ビット幅となる;3
2個の処理要素219が示されているが、第3の実施例
に示されているように処理要素の数は違ってもよい。更
に第2図の入出力ポート210は単にデータバス104
から32ビットの内部バスへの接続を意味するものであ
る。
【0019】4:1のビットライン多重化を使用するこ
とに決定したことによって、アルゴリズムを組み込むた
めに必要なアプリケーション論理回路の設計にかなり大
きい柔軟性が得られる。例えば、隣接する列の間には乗
算器と加算器とを作り込むのに十分な空間が得られる。
データ経路論理回路信号は60μmピッチであり、これ
は非拡張のゲートアレイセルピッチと一致している。デ
ータメモリに関しては、4:1の多重化によって隣接す
るデータ(データ経路に関して)が4番目の列毎に現れ
るようになる。従って、データ経路信号は更に順序立っ
て組織化されており、任意の2進演算が“桁上げ”信号
等を容易に通過させることができる。
とに決定したことによって、アルゴリズムを組み込むた
めに必要なアプリケーション論理回路の設計にかなり大
きい柔軟性が得られる。例えば、隣接する列の間には乗
算器と加算器とを作り込むのに十分な空間が得られる。
データ経路論理回路信号は60μmピッチであり、これ
は非拡張のゲートアレイセルピッチと一致している。デ
ータメモリに関しては、4:1の多重化によって隣接す
るデータ(データ経路に関して)が4番目の列毎に現れ
るようになる。従って、データ経路信号は更に順序立っ
て組織化されており、任意の2進演算が“桁上げ”信号
等を容易に通過させることができる。
【0020】メモリ110は、CPU102による2K
×8のSRAMとしての利用の他に、論理回路206中
のデータ経路におけるローカルな計算を含む第2の動作
モードを持っており、そのモードではメモリ110はC
PU102に対して低速メモリにみえる。ローカルな計
算の間、レディ220出力は低レベルであり、ローカル
計算が終了するとレディ220は高レベルへ変わる;メ
モリ110、111…139からのレディ出力は論理和
が取られてCPU102へ与えられる。既に述べたよう
に、標準的な2K×8 SRAMのピン出力形式におい
てはCPUへのローカルな計算の終了を教えるための外
部レディピンは用いていない。CPUは常にスレーブで
あるメモリに対してマスタとして働く。CPUはメモリ
をポーリングして、“レディフラグ”値を保有している
各メモリ中の予約された場所を読み出すことによって、
ローカル計算が終了したかどうかを決定する。こうし
て、CPUはCSDを低レベルに設定してローカルな計
算へ割り込み、その後通常の読み出しのように読み出し
動作を実行する。もし計算が割り込みを受けると、制御
論理回路206はCPUによる読み出しへ進む前にデー
タ経路の状態を保存しておき、CPUがCSDを高レベ
ルに、WEを低レベルに設定した時に再開する。
×8のSRAMとしての利用の他に、論理回路206中
のデータ経路におけるローカルな計算を含む第2の動作
モードを持っており、そのモードではメモリ110はC
PU102に対して低速メモリにみえる。ローカルな計
算の間、レディ220出力は低レベルであり、ローカル
計算が終了するとレディ220は高レベルへ変わる;メ
モリ110、111…139からのレディ出力は論理和
が取られてCPU102へ与えられる。既に述べたよう
に、標準的な2K×8 SRAMのピン出力形式におい
てはCPUへのローカルな計算の終了を教えるための外
部レディピンは用いていない。CPUは常にスレーブで
あるメモリに対してマスタとして働く。CPUはメモリ
をポーリングして、“レディフラグ”値を保有している
各メモリ中の予約された場所を読み出すことによって、
ローカル計算が終了したかどうかを決定する。こうし
て、CPUはCSDを低レベルに設定してローカルな計
算へ割り込み、その後通常の読み出しのように読み出し
動作を実行する。もし計算が割り込みを受けると、制御
論理回路206はCPUによる読み出しへ進む前にデー
タ経路の状態を保存しておき、CPUがCSDを高レベ
ルに、WEを低レベルに設定した時に再開する。
【0021】ローカルな計算をベクトルに対する行列演
算の例によって説明する:要素Vj(1≦j≦N)のベ
クトルVに、要素Tij(1≦i≦M、1≦j≦N)の
行列を作用させて、要素Wi=Σj TijVjのM個の
要素を含むベクトルWを得る。要素TijとVjは8ビ
ットで、結果の要素Wiは16ビットであると仮定す
る。結果の要素は16ビット以上でもよいが、多くのデ
ジタル信号処理応用において合計は多くの負の項を含
む。行列Tijは行ブロックに分割され、1つのブロッ
クがデータRAMの1つへ書き込まれる;これにより行
列乗算を並列的に行うことができる。行列の大きさはチ
ップメモリの配列のサイズで決まるのではなく、並列計
算のために行列をブロックに区分化することで、複数メ
モリ110、111…を用いて非常に大きい問題をも解
くことが可能であることは明かであろう。
算の例によって説明する:要素Vj(1≦j≦N)のベ
クトルVに、要素Tij(1≦i≦M、1≦j≦N)の
行列を作用させて、要素Wi=Σj TijVjのM個の
要素を含むベクトルWを得る。要素TijとVjは8ビ
ットで、結果の要素Wiは16ビットであると仮定す
る。結果の要素は16ビット以上でもよいが、多くのデ
ジタル信号処理応用において合計は多くの負の項を含
む。行列Tijは行ブロックに分割され、1つのブロッ
クがデータRAMの1つへ書き込まれる;これにより行
列乗算を並列的に行うことができる。行列の大きさはチ
ップメモリの配列のサイズで決まるのではなく、並列計
算のために行列をブロックに区分化することで、複数メ
モリ110、111…を用いて非常に大きい問題をも解
くことが可能であることは明かであろう。
【0022】最初に、CPU102は、まずCSD信号
で特定のメモリ(例えばメモリ110)を選び、11ビ
ットアドレスバス106上へアドレス(2K×8のRA
M202中にある)を与え、8ビットデータバス104
上へ行列要素を与え、WEを高レベルとすることによっ
て、連続的にメモリ110、111…のデータRAM2
04中へ行列要素Tijを書き込む。メモリ110に対
しての低レベルのCSDと高レベルのWEの組み合せは
論理回路206によって解釈されて、マルチプレクサ2
12にローカルバス218上へ与えるべきアドレスをア
ドレスバス106から(論理回路206からではなく)
選ばせ、データRAM202の行および列のデコーダを
アクティブにし、同報通信RAM204の行および列の
デコーダを非アクティブにする。こうしてデータバス1
04上の8ビット行列要素はデータRAM202のアド
レス指定された8ビットへ書き込まれる。このことは、
要求されたすべての行列要素がデータRAM202へ書
き込まれるまで繰り返される。更に、選ばれないメモリ
111、112…は高レベルCSDを有するが、それら
の論理回路は事象カウンタを満たすアドレスの変化が発
生しないので、高レベルへのWEの移行を同報通信RA
Mへの書き込み命令とは解釈せず、従って、データRA
Mへも同報通信RAMへも何も書き込まれない。CPU
102がメモリ110のデータRAM202中へ行列要
素を書き込んでしまった後、CPU102はメモリ11
1のデータRAM中への行列要素の書き込みを行い、こ
のことを行列がメモリ110、111、112…のデー
タRAM中へロードされてしまうまで行う。
で特定のメモリ(例えばメモリ110)を選び、11ビ
ットアドレスバス106上へアドレス(2K×8のRA
M202中にある)を与え、8ビットデータバス104
上へ行列要素を与え、WEを高レベルとすることによっ
て、連続的にメモリ110、111…のデータRAM2
04中へ行列要素Tijを書き込む。メモリ110に対
しての低レベルのCSDと高レベルのWEの組み合せは
論理回路206によって解釈されて、マルチプレクサ2
12にローカルバス218上へ与えるべきアドレスをア
ドレスバス106から(論理回路206からではなく)
選ばせ、データRAM202の行および列のデコーダを
アクティブにし、同報通信RAM204の行および列の
デコーダを非アクティブにする。こうしてデータバス1
04上の8ビット行列要素はデータRAM202のアド
レス指定された8ビットへ書き込まれる。このことは、
要求されたすべての行列要素がデータRAM202へ書
き込まれるまで繰り返される。更に、選ばれないメモリ
111、112…は高レベルCSDを有するが、それら
の論理回路は事象カウンタを満たすアドレスの変化が発
生しないので、高レベルへのWEの移行を同報通信RA
Mへの書き込み命令とは解釈せず、従って、データRA
Mへも同報通信RAMへも何も書き込まれない。CPU
102がメモリ110のデータRAM202中へ行列要
素を書き込んでしまった後、CPU102はメモリ11
1のデータRAM中への行列要素の書き込みを行い、こ
のことを行列がメモリ110、111、112…のデー
タRAM中へロードされてしまうまで行う。
【0023】第2に、CPU102は、まず、各チップ
の事象カウンタを満足するように使用され、また同報通
信RAMへの書き込みサイクルのための同報通信メモリ
チップ選択(CSB)をアクティブにするように同一チ
ップ上の論理回路に知らせるために使用される、2つの
アドレスを変化させることによって、メモリ110、1
11…の同報通信RAMのすべてへベクトル成分Vjと
ローカル計算命令とを同時に書き込む。この計算に関し
てはCSBレジスタによるチップのグループ分けは行わ
れないことに注意すべきである。CPU102は次にす
べての同報通信RAM中へ同時に通常の書き込みを行
う。論理回路206はマルチプレクサ212に対し、ア
ドレスバス106からのアドレスを通過させ、データR
AM202用のデコーダを非アクティブにさせ、同報通
信RAM204用のデコーダをアクティブさせて、ベク
トル成分とローカル計算命令とを同報通信RAM204
中へ書き込ませる。アドレスを変化させる方法は、既に
述べたように同報通信メモリ書き込みを終了させるため
に使用される。
の事象カウンタを満足するように使用され、また同報通
信RAMへの書き込みサイクルのための同報通信メモリ
チップ選択(CSB)をアクティブにするように同一チ
ップ上の論理回路に知らせるために使用される、2つの
アドレスを変化させることによって、メモリ110、1
11…の同報通信RAMのすべてへベクトル成分Vjと
ローカル計算命令とを同時に書き込む。この計算に関し
てはCSBレジスタによるチップのグループ分けは行わ
れないことに注意すべきである。CPU102は次にす
べての同報通信RAM中へ同時に通常の書き込みを行
う。論理回路206はマルチプレクサ212に対し、ア
ドレスバス106からのアドレスを通過させ、データR
AM202用のデコーダを非アクティブにさせ、同報通
信RAM204用のデコーダをアクティブさせて、ベク
トル成分とローカル計算命令とを同報通信RAM204
中へ書き込ませる。アドレスを変化させる方法は、既に
述べたように同報通信メモリ書き込みを終了させるため
に使用される。
【0024】第3に、ローカル計算の準備として、CP
Uは、まず命令情報を同報通信RAM中へ記憶し、それ
を制御論理回路206が使用して、各メモリに割り当て
られた行列ブロックの大きさを決定し、それによって要
求される内部読み出し動作のためのアドレスループ回数
を設定する。このことは更に一般化できて、論理回路2
06が従来のマイクロプロセッサの制御論理回路と全く
同じであることが分かるであろう。すなわち、アプリケ
ーション専用のデータ経路が設計でき、チップ面積と標
準的なピン出力形式に合致すべきという要求とによって
のみ制限される複雑な機能を実行できる。CPU102
がWEを低レベルに設定した時には、すべてのチップ1
10、111…に対してCSDが高レベルであれば、各
メモリの論理回路206はローカルな計算手順を開始す
る。論理回路206はまず任意の計算命令を含む同報通
信RAM204中の記憶場所に対するアドレスを生成
し、マルチプレクサ212をしてこのアドレスを通過さ
せるように設定し、レディフラグ(またはピン)をノッ
トレディに設定し、データRAM202用のデコーダを
非アクティブにさせ、同報通信RAM204用のデコー
ダをアクティブにさせ、そのアドレスの内容を読み出
す。もしそのアドレスがローカル計算命令を保有してい
れば、各メモリの論理回路206は同時に以下のループ
に入る。
Uは、まず命令情報を同報通信RAM中へ記憶し、それ
を制御論理回路206が使用して、各メモリに割り当て
られた行列ブロックの大きさを決定し、それによって要
求される内部読み出し動作のためのアドレスループ回数
を設定する。このことは更に一般化できて、論理回路2
06が従来のマイクロプロセッサの制御論理回路と全く
同じであることが分かるであろう。すなわち、アプリケ
ーション専用のデータ経路が設計でき、チップ面積と標
準的なピン出力形式に合致すべきという要求とによって
のみ制限される複雑な機能を実行できる。CPU102
がWEを低レベルに設定した時には、すべてのチップ1
10、111…に対してCSDが高レベルであれば、各
メモリの論理回路206はローカルな計算手順を開始す
る。論理回路206はまず任意の計算命令を含む同報通
信RAM204中の記憶場所に対するアドレスを生成
し、マルチプレクサ212をしてこのアドレスを通過さ
せるように設定し、レディフラグ(またはピン)をノッ
トレディに設定し、データRAM202用のデコーダを
非アクティブにさせ、同報通信RAM204用のデコー
ダをアクティブにさせ、そのアドレスの内容を読み出
す。もしそのアドレスがローカル計算命令を保有してい
れば、各メモリの論理回路206は同時に以下のループ
に入る。
【0025】(I) 論理回路206はまずベクトルV
の4つの成分(V1、V2、V3、V4)を含む同報通
信RAM中の行のアドレスを生成し、それによってそれ
らの成分が並列的に32ビット内部バス209上に現れ
る。 (II) 論理回路206は次に、行列の1つの行の最初
の4要素、すなわちTk1、Tk2、Tk3、Tk4を
含むデータRAM202中の行アドレスを生成し、それ
によってそれら行列要素が32ビット内部バス208上
へ並列的に現れる。もちろんkはメモリ110、111
…139毎に異なる。 (III )論理回路206は次にバス208上の各行列要
素に、バス209上の対応するベクトル成分を乗算する
(各j(1≦j≦4)に対して積TkjVjを作る)。 (IV) 論理回路206は上のステップ(III )で得ら
れた積を加え合わせてΣ 1 ≦j ≦4 TkjVjを得る。
この合計は成分Wkに関する最初の部分和に等しくなっ
ている。ここでも、このことは各kについてすべてのメ
モリ110、111…139中で同時に起こっている。 (V) 行アドレスを変更せずに、同報通信RAM20
4に対する列アドレスを増分させ(すなわち、列の4:
1多重化を利用する)、同報通信RAM204の次の内
部読み出しを実行し、バス209上にベクトルの次の4
成分(V5、V6、V7、V8)を得る。 (VI)行アドレスを変更せずに、データRAM202の
列アドレスを増分させ(ここでも4:1のマルチプレク
サによって)、データRAM202の次の内部読出しを
実行し、バス208上へ行列のk番目の行の次の4個の
行列要素(Tk5、Tk6、Tk7、Tk8)を得る。 (VII )ステップ(III )と(IV)を繰り返してΣ5 ≦
j ≦8 TkjVjを得る。これを既に得られているΣ1
≦j ≦4 TkjVjに加えてΣ1 ≦j ≦8 TkjVjを
得る。 (VIII)4:1マルチプレクサによる増分によってステ
ップ(V)と(VI)と(VII )をもう2回繰り返すこと
により、累算された部分和はΣ1 ≦j ≦16TkjVjと
なる (IX)ベクトルVの残りの成分と行列Tのk番目の行の
残りの要素に対応する同報通信RAM204の行とデー
タRAM202の行についてステップ(I)から(IX)
を繰り返す。その度に得られた部分和をその前のステッ
プで得られた部分和に加えることを行って、最終的に成
分Wkが得られる。論理回路206は次に内部書き込み
命令を発し、Wkを、行列のk番目の要素を保持するデ
ータRAM202の行の未使用の列中へ記憶させる。こ
のことはメモリ110、111…139の各々で同時に
起こる。
の4つの成分(V1、V2、V3、V4)を含む同報通
信RAM中の行のアドレスを生成し、それによってそれ
らの成分が並列的に32ビット内部バス209上に現れ
る。 (II) 論理回路206は次に、行列の1つの行の最初
の4要素、すなわちTk1、Tk2、Tk3、Tk4を
含むデータRAM202中の行アドレスを生成し、それ
によってそれら行列要素が32ビット内部バス208上
へ並列的に現れる。もちろんkはメモリ110、111
…139毎に異なる。 (III )論理回路206は次にバス208上の各行列要
素に、バス209上の対応するベクトル成分を乗算する
(各j(1≦j≦4)に対して積TkjVjを作る)。 (IV) 論理回路206は上のステップ(III )で得ら
れた積を加え合わせてΣ 1 ≦j ≦4 TkjVjを得る。
この合計は成分Wkに関する最初の部分和に等しくなっ
ている。ここでも、このことは各kについてすべてのメ
モリ110、111…139中で同時に起こっている。 (V) 行アドレスを変更せずに、同報通信RAM20
4に対する列アドレスを増分させ(すなわち、列の4:
1多重化を利用する)、同報通信RAM204の次の内
部読み出しを実行し、バス209上にベクトルの次の4
成分(V5、V6、V7、V8)を得る。 (VI)行アドレスを変更せずに、データRAM202の
列アドレスを増分させ(ここでも4:1のマルチプレク
サによって)、データRAM202の次の内部読出しを
実行し、バス208上へ行列のk番目の行の次の4個の
行列要素(Tk5、Tk6、Tk7、Tk8)を得る。 (VII )ステップ(III )と(IV)を繰り返してΣ5 ≦
j ≦8 TkjVjを得る。これを既に得られているΣ1
≦j ≦4 TkjVjに加えてΣ1 ≦j ≦8 TkjVjを
得る。 (VIII)4:1マルチプレクサによる増分によってステ
ップ(V)と(VI)と(VII )をもう2回繰り返すこと
により、累算された部分和はΣ1 ≦j ≦16TkjVjと
なる (IX)ベクトルVの残りの成分と行列Tのk番目の行の
残りの要素に対応する同報通信RAM204の行とデー
タRAM202の行についてステップ(I)から(IX)
を繰り返す。その度に得られた部分和をその前のステッ
プで得られた部分和に加えることを行って、最終的に成
分Wkが得られる。論理回路206は次に内部書き込み
命令を発し、Wkを、行列のk番目の要素を保持するデ
ータRAM202の行の未使用の列中へ記憶させる。こ
のことはメモリ110、111…139の各々で同時に
起こる。
【0026】データRAM202が行列Tの行kからk
+nのブロックを記憶してしまうと、次にデータRAM
202中の行列要素の残りのものと同報通信RAM20
4からの同じベクトル成分Vjとでステップ(I)から
(IX)をn回繰り返して成分Wk+1、Wk+2…Wk
+nを作り、記憶させる。例えば、もしVが100個の
成分を含んでいれば同報通信RAM204の7行(合計
の16行の内)がそれら成分を記憶するために必要とさ
れ、7番目の行は4/16だけ使用されることになる。
同様に、データRAM202が同じように行列要素を記
憶すれば(RAMの7番目の行は4分の1しか使用され
ないものの、行列の各行に対してRAMの7行を使用す
る)、行列の18行が記憶でき(従ってn=17とな
り、Tは540×100の大きさの行列でもかまわな
い)、7番目毎の行には対応するWk+jを記憶するの
に十分な空間があることになる。更に、データRAM2
02にはレディフラグとその他の項目を保持できる未使
用の行が2つ残る。
+nのブロックを記憶してしまうと、次にデータRAM
202中の行列要素の残りのものと同報通信RAM20
4からの同じベクトル成分Vjとでステップ(I)から
(IX)をn回繰り返して成分Wk+1、Wk+2…Wk
+nを作り、記憶させる。例えば、もしVが100個の
成分を含んでいれば同報通信RAM204の7行(合計
の16行の内)がそれら成分を記憶するために必要とさ
れ、7番目の行は4/16だけ使用されることになる。
同様に、データRAM202が同じように行列要素を記
憶すれば(RAMの7番目の行は4分の1しか使用され
ないものの、行列の各行に対してRAMの7行を使用す
る)、行列の18行が記憶でき(従ってn=17とな
り、Tは540×100の大きさの行列でもかまわな
い)、7番目毎の行には対応するWk+jを記憶するの
に十分な空間があることになる。更に、データRAM2
02にはレディフラグとその他の項目を保持できる未使
用の行が2つ残る。
【0027】このループは、行列の行ブロックを記憶す
るために使用されるデータRAM202のすべての行が
処理された後に終了する。同時に、メモリ111、11
2…も他の成分W1、W2…WM のすべてを計算し、記
憶する。次に論理回路206はレディフラグ(またはピ
ン220)を高レベルに設定し、CPU202は、WE
を低レベルに保ちながらCSDを低レベルにすることで
論理回路206がマルチプレクサ212をしてバス10
6上のアドレスを通過させ、データRAM202用のデ
コーダをアクティブにさせるようにすることによって、
データRAM202から結果を読み出すことができる。
このローカル計算は、計算のための、CPU102によ
る各行列要素の取り込みを行わないため、バス104と
106上のトラヒック混雑が回避される。実際、メモリ
110、111…によるローカル計算の間、CPU10
2は他のタスクに関わることができる。
るために使用されるデータRAM202のすべての行が
処理された後に終了する。同時に、メモリ111、11
2…も他の成分W1、W2…WM のすべてを計算し、記
憶する。次に論理回路206はレディフラグ(またはピ
ン220)を高レベルに設定し、CPU202は、WE
を低レベルに保ちながらCSDを低レベルにすることで
論理回路206がマルチプレクサ212をしてバス10
6上のアドレスを通過させ、データRAM202用のデ
コーダをアクティブにさせるようにすることによって、
データRAM202から結果を読み出すことができる。
このローカル計算は、計算のための、CPU102によ
る各行列要素の取り込みを行わないため、バス104と
106上のトラヒック混雑が回避される。実際、メモリ
110、111…によるローカル計算の間、CPU10
2は他のタスクに関わることができる。
【0028】ローカル計算の第2の例もベクトルによる
行列乗算に関するものである。行列Tijは252×2
52である。ベクトルVjは252個の要素を含んでい
る従って、結果は252個の要素を持つベクトルWjで
ある。各々の要素が8ビット幅であると仮定する。2K
×8のデータRAMは行列Tij全体を納めることがで
きないので、Tは各行に252個の要素を含む行8個か
らなる32個のブロックに分割される。各ブロックは1
6,128ビットを占め、それは128×128ビット
のデータRAMの126列に相当する。データRAMの
残りの4バイトは結果を納めるために使用される。必要
とされるチップの数は32である。
行列乗算に関するものである。行列Tijは252×2
52である。ベクトルVjは252個の要素を含んでい
る従って、結果は252個の要素を持つベクトルWjで
ある。各々の要素が8ビット幅であると仮定する。2K
×8のデータRAMは行列Tij全体を納めることがで
きないので、Tは各行に252個の要素を含む行8個か
らなる32個のブロックに分割される。各ブロックは1
6,128ビットを占め、それは128×128ビット
のデータRAMの126列に相当する。データRAMの
残りの4バイトは結果を納めるために使用される。必要
とされるチップの数は32である。
【0029】問題は行列Tijの32ブロックを連続的
にデータRAM32個すべての中へ普通のように(上記
の例のように)書き込むことから始まる。次にベクトル
Vjがすべての同報通信RAM中へ同時に書き込まれ
る。同報通信RAMは256バイト(16行で128
列)であり、ベクトルVjは252バイト(16行で2
52列)を占めることを思い出してほしい。メモリ内部
では演算はすべて32ビット幅で行われ、計算の制御は
この幅に計算を揃えることで非常に容易なものとなって
いる。このことはシステムに対する行列ブロック分割規
則を設けることで実現される。ここでの32要素の例で
は、原理的な説明ということからこのステップを省略し
ている。論理回路206中に要求されるデータ経路回路
は、8ビットのブース(Booth)乗算器が4個と、
結果を加算する加算器を含むものである。別のデータ経
路構成では、8ビット乗算器が1個と加算器を含むもの
である。これは更にオペランドのためのレジスタと、4
組のオペランドから1個を選ぶためのマルチプレクサを
必要とするであろう。明らかに、これによって並列処理
要素(PE)の数が減り、データ経路のシリコンの面積
も減る。
にデータRAM32個すべての中へ普通のように(上記
の例のように)書き込むことから始まる。次にベクトル
Vjがすべての同報通信RAM中へ同時に書き込まれ
る。同報通信RAMは256バイト(16行で128
列)であり、ベクトルVjは252バイト(16行で2
52列)を占めることを思い出してほしい。メモリ内部
では演算はすべて32ビット幅で行われ、計算の制御は
この幅に計算を揃えることで非常に容易なものとなって
いる。このことはシステムに対する行列ブロック分割規
則を設けることで実現される。ここでの32要素の例で
は、原理的な説明ということからこのステップを省略し
ている。論理回路206中に要求されるデータ経路回路
は、8ビットのブース(Booth)乗算器が4個と、
結果を加算する加算器を含むものである。別のデータ経
路構成では、8ビット乗算器が1個と加算器を含むもの
である。これは更にオペランドのためのレジスタと、4
組のオペランドから1個を選ぶためのマルチプレクサを
必要とするであろう。明らかに、これによって並列処理
要素(PE)の数が減り、データ経路のシリコンの面積
も減る。
【0030】次にすべての32チップ中でローカル計算
が開始され、それによってレディフラグがノットレディ
に設定される。この時点でCPUは自由となり、他のタ
スクを実行することができる。計算の手順では、データ
RAMからの行列Tijの最初の4要素(32ビット)
と、同報通信RAMからのベクトルVjの最初の4要素
がデータ経路回路へ与えられる。乗算と加算が行われた
後、TijとVjの対応する次の4要素がそれぞれデー
タRAMと同報通信RAMから与えられ、このことが行
列Tijの最初の行中の252要素すべてについて行わ
れる。そして、その行に対して16ビットの結果が1個
だけ、使用可能なデータRAM空間中へ記憶される。こ
の手順はそのブロックの8行すべてに対して操作が行わ
れるまで繰り返される。これが終了すると、すべてのチ
ップでレディ信号が設定され、CPUは32チップの各
々から8ビットの結果要素8個を読み出す。
が開始され、それによってレディフラグがノットレディ
に設定される。この時点でCPUは自由となり、他のタ
スクを実行することができる。計算の手順では、データ
RAMからの行列Tijの最初の4要素(32ビット)
と、同報通信RAMからのベクトルVjの最初の4要素
がデータ経路回路へ与えられる。乗算と加算が行われた
後、TijとVjの対応する次の4要素がそれぞれデー
タRAMと同報通信RAMから与えられ、このことが行
列Tijの最初の行中の252要素すべてについて行わ
れる。そして、その行に対して16ビットの結果が1個
だけ、使用可能なデータRAM空間中へ記憶される。こ
の手順はそのブロックの8行すべてに対して操作が行わ
れるまで繰り返される。これが終了すると、すべてのチ
ップでレディ信号が設定され、CPUは32チップの各
々から8ビットの結果要素8個を読み出す。
【0031】ここで、上に述べたシステム動作を分析し
てみる。メモリへのロードに関しては、CPUは、32
個(実際は31.5個)のデータRAMすべての初期メ
モリロードのために252×8=63,504回の書き
込み操作の命令を出す必要がある。次にCPUはすべて
の同報通信RAMへのベクトルの同時書き込みをほんの
252回の書き込み操作で迅速に行うことができる。各
要素の計算には複数回の内部読み出し操作が必要であ
る。252個の8ビット要素については、各メモリの3
2ビットデータ経路は8ビット乗算器が4個あるので、
同時に4要素を処理することができる。従って、データ
RAMと同報通信RAMの両方の252/4=63回の
読み出しが実行される。もし各計算がブース乗算器に関
する4読み出しサイクルとほぼ同じ時間を要するとすれ
ば、1行に対するローカルな読み出しおよび計算時間の
合計は63×5=315サイクルとなる。このループ
は、最後のベクトルの8個の結果要素を得るために、各
メモリ中で8回繰り返される。16ビットの結果要素2
52個をデータRAM中へ書き戻すために、各要素につ
いて2サイクルを要するために、付加的に504サイク
ルが必要となる。こうして、各メモリはローカル計算に
3024サイクルを要することになる。
てみる。メモリへのロードに関しては、CPUは、32
個(実際は31.5個)のデータRAMすべての初期メ
モリロードのために252×8=63,504回の書き
込み操作の命令を出す必要がある。次にCPUはすべて
の同報通信RAMへのベクトルの同時書き込みをほんの
252回の書き込み操作で迅速に行うことができる。各
要素の計算には複数回の内部読み出し操作が必要であ
る。252個の8ビット要素については、各メモリの3
2ビットデータ経路は8ビット乗算器が4個あるので、
同時に4要素を処理することができる。従って、データ
RAMと同報通信RAMの両方の252/4=63回の
読み出しが実行される。もし各計算がブース乗算器に関
する4読み出しサイクルとほぼ同じ時間を要するとすれ
ば、1行に対するローカルな読み出しおよび計算時間の
合計は63×5=315サイクルとなる。このループ
は、最後のベクトルの8個の結果要素を得るために、各
メモリ中で8回繰り返される。16ビットの結果要素2
52個をデータRAM中へ書き戻すために、各要素につ
いて2サイクルを要するために、付加的に504サイク
ルが必要となる。こうして、各メモリはローカル計算に
3024サイクルを要することになる。
【0032】CPUは最初の31個のチップに対して2
×8=16回の読み出し操作を行ない、32番目のメモ
リに対して2×4=8回の読み出しを行うため、16ビ
ットの結果ベクトル要素を252個取り出すために合計
で504回の読み出し操作が必要になる。従って、もし
63,504サイクルのメモリロード時間を含めるとす
ると、合計の動作時間は:
×8=16回の読み出し操作を行ない、32番目のメモ
リに対して2×4=8回の読み出しを行うため、16ビ
ットの結果ベクトル要素を252個取り出すために合計
で504回の読み出し操作が必要になる。従って、もし
63,504サイクルのメモリロード時間を含めるとす
ると、合計の動作時間は:
【数2】 データRAM 同報通信 ローカル 結果 ロード 書き込み 計算 読み出し 63,504+ 252 + 3024 + 504=66,780サイクル
【0033】いくつかの応用においてはメモリへのI/
Oは重要ではないので、その場合にはロードサイクルを
無視することができる。その時の合計サイクルは、ロー
カル計算と結果の取り出し時間だけで、3780サイク
ルだけになる。 従来のシステム:メモリロードは一定で63,756サ
イクルである。従来のシステムの内でも最も優れた場合
を想定して、計算および読み出しがCPUの中でパイプ
ライン処理されており、読み出し中のデータミスを起こ
すサイクル損失がないとする。CPUは同じブース乗算
器/累算器回路を採用しているとし、操作当たりのクロ
ックサイクル数が上記の実施例のデータ経路の場合と同
じと仮定する。CPUは行列とベクトルの要素のために
252×252+252回の基板レベルでの読み出しを
行わなければならず、付加的に63,756サイクルが
必要である。読み出しと計算が完全なパイプライン方式
で行われることを仮定して、252×252(n2 )の
計算の各々について4サイクルが必要であり、従って合
計259,016サイクルが必要になる。従って、もし
メモリロードを含めるとすれば従来のシステムでは31
7,772サイクルが、また含めないとしても254,
016サイクルが必要となる。
Oは重要ではないので、その場合にはロードサイクルを
無視することができる。その時の合計サイクルは、ロー
カル計算と結果の取り出し時間だけで、3780サイク
ルだけになる。 従来のシステム:メモリロードは一定で63,756サ
イクルである。従来のシステムの内でも最も優れた場合
を想定して、計算および読み出しがCPUの中でパイプ
ライン処理されており、読み出し中のデータミスを起こ
すサイクル損失がないとする。CPUは同じブース乗算
器/累算器回路を採用しているとし、操作当たりのクロ
ックサイクル数が上記の実施例のデータ経路の場合と同
じと仮定する。CPUは行列とベクトルの要素のために
252×252+252回の基板レベルでの読み出しを
行わなければならず、付加的に63,756サイクルが
必要である。読み出しと計算が完全なパイプライン方式
で行われることを仮定して、252×252(n2 )の
計算の各々について4サイクルが必要であり、従って合
計259,016サイクルが必要になる。従って、もし
メモリロードを含めるとすれば従来のシステムでは31
7,772サイクルが、また含めないとしても254,
016サイクルが必要となる。
【0034】このように、メモリロードを含めた場合、
特性改善度は4となる。もしメモリロードが与えられて
いると仮定すれば、本実施例システムは速度で69倍高
速化できることが分かる。既に述べた電力コスト関数に
ついて考えると、本実施例システムでは生データをCP
Uへ送る前に生データと情報の比を減らすことにより、
CPU対メモリ基板レベルのI/Oの比を63,756
/252≒253倍減らすことができる。もし基板レベ
ル容量とチップレベル容量の比に関する付加的な倍率を
考慮すれば、システム電力要求は大幅に改善されている
ことが明かであろう。
特性改善度は4となる。もしメモリロードが与えられて
いると仮定すれば、本実施例システムは速度で69倍高
速化できることが分かる。既に述べた電力コスト関数に
ついて考えると、本実施例システムでは生データをCP
Uへ送る前に生データと情報の比を減らすことにより、
CPU対メモリ基板レベルのI/Oの比を63,756
/252≒253倍減らすことができる。もし基板レベ
ル容量とチップレベル容量の比に関する付加的な倍率を
考慮すれば、システム電力要求は大幅に改善されている
ことが明かであろう。
【0035】ローカル計算の第3の例は、行列と行列の
乗算である。行列Tijは252×252である。行列
Uijもまた252×252の要素を有している。演算
操作はベクトルの乗算と全く同じである。ここでは簡単
のために行列Uijの各列をベクトルVjで行ったやり
方で処理することにする。ここでも行列Tijはブロッ
クに分割される;この場合にも最初の31個のメモリは
8行を受け取り、32番目のメモリは最後の4行を受け
取る。従って、行列Tijのメモリロードにはやはり6
3,504サイクルを必要とする。行列Uijは1つの
区分を同時にすべての同報通信RAMへ通信される。1
6行128列の同報通信RAMは行列Uijの1つの列
を保有する(第1および第2の例におけるベクトルVj
と同様)。こうして各列はCPUから同報通信RAMへ
252回の書き込みサイクルを必要とすることになる。
従って、行列Uijを同報通信RAMへロードするのに
合計で252×252=63,504サイクルが必要と
なる。これらの例では大量記憶装置からRAMへは1語
(行列要素)当たり1サイクルが必要であると仮定され
ていることを指摘しておく。次にCPUによってローカ
ル計算が開始される。データ経路へオペランドを供給す
るためには、ここでもデータRAMと同報通信RAMの
両方について252/4=63サイクルの内部読み出し
が必要である。63のオペランド供給の計算のために更
に4サイクルが加わり、個々のメモリにおける行列Ti
jの8行の各々について315サイクルとなる。従って
再び行列Uijの1つの列のローカル計算に合計302
4サイクルが必要とされる。これが行列Uijの252
個の列の各々について繰り返され、合計のローカル計算
時間は762,048サイクルとなる。32個のメモリ
はすべてこの操作を並列的に実行することを注意してお
く。次にCPUはメモリのポーリングを行ない、すべて
のチップ上でローカル計算が終了したことを確認する。
終了していれば、CPUはデータRAMから16ビット
の結果の行列要素を読み出し、これに252×252×
2=127,008の読み出しサイクルがかかる。従っ
て、第1の実施例システムはTijのメモリロードを含
めると192,024サイクルを必要とする。もしTi
jのロードを無視すると16ビットの252要素の結果
のベクトルを取り出すために128,520サイクルを
必要とする。従って、もしメモリロード時間の63,5
04サイクルを含めると、合計の動作時間は:
乗算である。行列Tijは252×252である。行列
Uijもまた252×252の要素を有している。演算
操作はベクトルの乗算と全く同じである。ここでは簡単
のために行列Uijの各列をベクトルVjで行ったやり
方で処理することにする。ここでも行列Tijはブロッ
クに分割される;この場合にも最初の31個のメモリは
8行を受け取り、32番目のメモリは最後の4行を受け
取る。従って、行列Tijのメモリロードにはやはり6
3,504サイクルを必要とする。行列Uijは1つの
区分を同時にすべての同報通信RAMへ通信される。1
6行128列の同報通信RAMは行列Uijの1つの列
を保有する(第1および第2の例におけるベクトルVj
と同様)。こうして各列はCPUから同報通信RAMへ
252回の書き込みサイクルを必要とすることになる。
従って、行列Uijを同報通信RAMへロードするのに
合計で252×252=63,504サイクルが必要と
なる。これらの例では大量記憶装置からRAMへは1語
(行列要素)当たり1サイクルが必要であると仮定され
ていることを指摘しておく。次にCPUによってローカ
ル計算が開始される。データ経路へオペランドを供給す
るためには、ここでもデータRAMと同報通信RAMの
両方について252/4=63サイクルの内部読み出し
が必要である。63のオペランド供給の計算のために更
に4サイクルが加わり、個々のメモリにおける行列Ti
jの8行の各々について315サイクルとなる。従って
再び行列Uijの1つの列のローカル計算に合計302
4サイクルが必要とされる。これが行列Uijの252
個の列の各々について繰り返され、合計のローカル計算
時間は762,048サイクルとなる。32個のメモリ
はすべてこの操作を並列的に実行することを注意してお
く。次にCPUはメモリのポーリングを行ない、すべて
のチップ上でローカル計算が終了したことを確認する。
終了していれば、CPUはデータRAMから16ビット
の結果の行列要素を読み出し、これに252×252×
2=127,008の読み出しサイクルがかかる。従っ
て、第1の実施例システムはTijのメモリロードを含
めると192,024サイクルを必要とする。もしTi
jのロードを無視すると16ビットの252要素の結果
のベクトルを取り出すために128,520サイクルを
必要とする。従って、もしメモリロード時間の63,5
04サイクルを含めると、合計の動作時間は:
【0036】
【数3】 データRAM 同報通信 ローカル 結果 ロード 書き込み 計算 読み出し 63,504 + 63,504 + 1,270,008+127,008 =1,524,096サイクル 従来のシステムでは2つの行列TijとUijのメモリ
ロードに2n2 =127,008サイクルを必要とす
る。メモリからCPUへのデータ読み出しのために更に
別に2n2 =127,008サイクルを必要とする。こ
こでも計算とメモリ読み出し操作がパイプライン方式で
行われ、読み出し操作に時間が不要と仮定しており、計
算のために8×252×252×252=128,02
4,064サイクルが必要となる。すなわち従来のシス
テムでは128,151,072サイクルが必要であ
る。明かなようにこの行列を内部メモリに保有できるC
PUはない。従って、ここでは従来のシステムに対して
は最も優れた場合を想定しており、計算された結果をメ
モリへ書き戻すことは考えていない。もちろん実施例の
システムは結果を記憶している。比較のために、行列T
ijとUijのメモリロードを含めると、実施例システ
ムは91倍の改善度を持っている。すべてのメモリロー
ドサイクルを含めるとこのシステムによって得られる改
善度は84倍となる。
ロードに2n2 =127,008サイクルを必要とす
る。メモリからCPUへのデータ読み出しのために更に
別に2n2 =127,008サイクルを必要とする。こ
こでも計算とメモリ読み出し操作がパイプライン方式で
行われ、読み出し操作に時間が不要と仮定しており、計
算のために8×252×252×252=128,02
4,064サイクルが必要となる。すなわち従来のシス
テムでは128,151,072サイクルが必要であ
る。明かなようにこの行列を内部メモリに保有できるC
PUはない。従って、ここでは従来のシステムに対して
は最も優れた場合を想定しており、計算された結果をメ
モリへ書き戻すことは考えていない。もちろん実施例の
システムは結果を記憶している。比較のために、行列T
ijとUijのメモリロードを含めると、実施例システ
ムは91倍の改善度を持っている。すべてのメモリロー
ドサイクルを含めるとこのシステムによって得られる改
善度は84倍となる。
【0037】ローカル計算の第4の例はベクトルへの疎
行列(sparse matrix)の演算である。各
チップのデータメモリは疎行列の要素で埋められる。行
列要素には64ビットのワードが使用され、行列要素の
行タグおよび列タグには16ビットのワードが使用され
ると仮定する。更に部分的な内積結果にも64ビットの
ワードが使用されるとする。従って3つの32ビットワ
ードがタグと行列要素を保有することになる。データ経
路206は、現在のワードが同報通信メモリ中に乗算す
べき相手のワードを有しているかを調べるための64ビ
ット乗算器と累算器および論理回路を含んでいる。ここ
でも操作されるベクトルは同時にすべてのチップへ通信
され、制御論理回路206は第1の例と同様にデータメ
モリを通して一連の操作を実行させる。データメモリに
はCPU102によって任意の順序に疎行列のタグを付
けられたワードが埋められるが、同じ行列行からのワー
ドを同じチップのデータメモリへグループ分けすること
によってCPU102によって読まれるべき結果のデー
タ量は減る。
行列(sparse matrix)の演算である。各
チップのデータメモリは疎行列の要素で埋められる。行
列要素には64ビットのワードが使用され、行列要素の
行タグおよび列タグには16ビットのワードが使用され
ると仮定する。更に部分的な内積結果にも64ビットの
ワードが使用されるとする。従って3つの32ビットワ
ードがタグと行列要素を保有することになる。データ経
路206は、現在のワードが同報通信メモリ中に乗算す
べき相手のワードを有しているかを調べるための64ビ
ット乗算器と累算器および論理回路を含んでいる。ここ
でも操作されるベクトルは同時にすべてのチップへ通信
され、制御論理回路206は第1の例と同様にデータメ
モリを通して一連の操作を実行させる。データメモリに
はCPU102によって任意の順序に疎行列のタグを付
けられたワードが埋められるが、同じ行列行からのワー
ドを同じチップのデータメモリへグループ分けすること
によってCPU102によって読まれるべき結果のデー
タ量は減る。
【0038】行列要素は既に述べたようにサイクル処理
され、そのワードが乗算されるべきかについてタグが調
べられ、もしそうであればその結果をどこへ記憶すべき
かを調べられる。すべてのベクトルが同報通信メモリ中
に納まるとは限らず、疎でない行列乗算例の場合でのよ
うに、個々のピース毎に同報通信されるべき場合もある
ことを注意しておく。ベクトルの1ピースが同報通信さ
れる度に、各チップはどのワードが乗算すべきものかを
調べるために行列要素のすべてをサイクル処理しなけれ
ばならない;行列要素のすべてをサイクル処理しなけれ
ばならないというこの要求は、疎でない場合のように同
報通信されたベクトルのそのピースに対応するデータメ
モリ部分のみをサイクル処理すればよい場合よりも1秒
間の乗算回数を減少させる。内積はデータメモリ中に記
憶され、それらに対して確保しておくべき記憶場所の数
はそのチップ上にある異なる行の数に等しい。ベクトル
全体が同報通信され、ローカル計算が終了した後、CP
U102は結果のベクトルを読み出すことができる。そ
れには各々のチップに逐次的にアクセスして、データR
AM中に記憶された行に対する内積を読み出す必要があ
る。
され、そのワードが乗算されるべきかについてタグが調
べられ、もしそうであればその結果をどこへ記憶すべき
かを調べられる。すべてのベクトルが同報通信メモリ中
に納まるとは限らず、疎でない行列乗算例の場合でのよ
うに、個々のピース毎に同報通信されるべき場合もある
ことを注意しておく。ベクトルの1ピースが同報通信さ
れる度に、各チップはどのワードが乗算すべきものかを
調べるために行列要素のすべてをサイクル処理しなけれ
ばならない;行列要素のすべてをサイクル処理しなけれ
ばならないというこの要求は、疎でない場合のように同
報通信されたベクトルのそのピースに対応するデータメ
モリ部分のみをサイクル処理すればよい場合よりも1秒
間の乗算回数を減少させる。内積はデータメモリ中に記
憶され、それらに対して確保しておくべき記憶場所の数
はそのチップ上にある異なる行の数に等しい。ベクトル
全体が同報通信され、ローカル計算が終了した後、CP
U102は結果のベクトルを読み出すことができる。そ
れには各々のチップに逐次的にアクセスして、データR
AM中に記憶された行に対する内積を読み出す必要があ
る。
【0039】ベクトルに疎行列を作用させる場合に関す
るシステム特性は次のようにして見積もられる。各メモ
リは、2Kの同報通信メモリを備え、20nsの内部サ
イクルタイムをもち、40nsの外部サイクルタイムを
持ち、CPU102からのデータを調整しバッファとな
るPLDを備え、パイプライン方式の読みだし/乗算/
累算を行うようになった16Kのデータメモリを含む、
と仮定する。そうすると行当たり平均10個の零でない
要素を有する256×256の疎行列に対して、各デー
タメモリは行列の約18行を保有することになる:行列
の行当たり64ビットワードを10個と、その行とベク
トルとの内積に対して1個の64ビットワードと、行当
たりのそれら11個の64ビットワードの各々に対する
行および列タグ(各16ビット)の合計で行列の行当た
り33個の32ビットワードとなる。このように16K
のデータメモリ1個で15行を保有し、行列全体を保有
するためには18チップが必要となる。同報通信メモリ
はベクトルの8分の1を保有する。
るシステム特性は次のようにして見積もられる。各メモ
リは、2Kの同報通信メモリを備え、20nsの内部サ
イクルタイムをもち、40nsの外部サイクルタイムを
持ち、CPU102からのデータを調整しバッファとな
るPLDを備え、パイプライン方式の読みだし/乗算/
累算を行うようになった16Kのデータメモリを含む、
と仮定する。そうすると行当たり平均10個の零でない
要素を有する256×256の疎行列に対して、各デー
タメモリは行列の約18行を保有することになる:行列
の行当たり64ビットワードを10個と、その行とベク
トルとの内積に対して1個の64ビットワードと、行当
たりのそれら11個の64ビットワードの各々に対する
行および列タグ(各16ビット)の合計で行列の行当た
り33個の32ビットワードとなる。このように16K
のデータメモリ1個で15行を保有し、行列全体を保有
するためには18チップが必要となる。同報通信メモリ
はベクトルの8分の1を保有する。
【0040】時間決算: 1. 同報通信書き込み:(32ワード/同報通信×64
ビット/ワード×40ns/サイクル)/8ビット/サ
イクル=各同報通信当たり10.24μs 2. ローカル計算:150ワード×600ns/64ビ
ット浮動小数点乗算積算=各同報通信当たり90μs 3. ベクトルが終わるまでステップ1と2を8回繰り返
す;合計の同報通信および計算時間は約800μs 4. CPUによる結果の収集:32ビット当たり100
nsで64ビットの内積を256個=51μs 5. 合計の計算時間は約850μs 行列のサイズが増大すると共に、非零の行列要素の数は
直線的に増大し、ベクトルを同報通信する時間も直線的
に増大し、ローカル計算時間も直線的に増大し、結果を
収集する時間も直線的に増大する。
ビット/ワード×40ns/サイクル)/8ビット/サ
イクル=各同報通信当たり10.24μs 2. ローカル計算:150ワード×600ns/64ビ
ット浮動小数点乗算積算=各同報通信当たり90μs 3. ベクトルが終わるまでステップ1と2を8回繰り返
す;合計の同報通信および計算時間は約800μs 4. CPUによる結果の収集:32ビット当たり100
nsで64ビットの内積を256個=51μs 5. 合計の計算時間は約850μs 行列のサイズが増大すると共に、非零の行列要素の数は
直線的に増大し、ベクトルを同報通信する時間も直線的
に増大し、ローカル計算時間も直線的に増大し、結果を
収集する時間も直線的に増大する。
【0041】別の例は、米国特許第4,326,259
号に述べられた神経回路網アルゴリズムをシステム10
0で実現することである。具体的は、100入力を備え
た回路網に対して、各々がすべての入力へつながれた内
部節が1,000個;各内部節は設定可能なしきい値λ
を有している;50個の出力ノードは入力ノードのすべ
てまたは任意のものへつながれることができ、各出力ノ
ードはしきい値1を有している;そして各出力ノードに
対応して50個の出力(第15図参照);データメモリ
は1,000ワードで、その各々が128ビット幅を持
っている。ワードの数は内部節の数に等しい。各ワード
中の128ビットは4つのことを記憶する:最初の10
0ビットは入力に対応する入力ベクトルWを表すベクト
ルであり、次の8ビットはしきい値λを記憶し、次の6
ビットはこの内部節が出力する1つの出力ノードを定義
し(アルゴリズムの一部)、次のビットはこの内部節が
コミットされているかを示す(アルゴリズムの一部);
第16図を参照。データメモリ中の最後のワードはその
チップの50ビット出力ベクトルを記憶するために使用
される。
号に述べられた神経回路網アルゴリズムをシステム10
0で実現することである。具体的は、100入力を備え
た回路網に対して、各々がすべての入力へつながれた内
部節が1,000個;各内部節は設定可能なしきい値λ
を有している;50個の出力ノードは入力ノードのすべ
てまたは任意のものへつながれることができ、各出力ノ
ードはしきい値1を有している;そして各出力ノードに
対応して50個の出力(第15図参照);データメモリ
は1,000ワードで、その各々が128ビット幅を持
っている。ワードの数は内部節の数に等しい。各ワード
中の128ビットは4つのことを記憶する:最初の10
0ビットは入力に対応する入力ベクトルWを表すベクト
ルであり、次の8ビットはしきい値λを記憶し、次の6
ビットはこの内部節が出力する1つの出力ノードを定義
し(アルゴリズムの一部)、次のビットはこの内部節が
コミットされているかを示す(アルゴリズムの一部);
第16図を参照。データメモリ中の最後のワードはその
チップの50ビット出力ベクトルを記憶するために使用
される。
【0042】データ経路は、100ビットのハミング
(Hamming)距離計算器、結果のハミング距離を
要求されるしきい値と比較するための比較器、アルゴリ
ズムとアルゴリズム学習フェーズに特有な付加的な制御
論理回路、データメモリを通して一連の操作を実行し命
令を検出するための通常の制御論理回路、を含んでい
る。同報通信メモリは、アルゴリズムにおいて入力層と
して知られたチップへの100ビットの入力ベクトルを
記憶する。通常の動作(訓練期間ではなく)においてチ
ップは次のように動作する。出力ベクトルはすべて零に
設定され、入力ベクトルは同報通信メモリ中へ書き込ま
れ、チップは128ビットのデータメモリ記憶場所1,
000個を通してサイクル処理を実行して出力ベクトル
を計算し、CPUは出力ベクトルを含む記憶場所から読
み出しを行う。j番目の128ビットデータメモリ記憶
場所が読み出される時には、もしベクトルがコミットさ
れていれば(115番目のビット)、Wjを表す最初の
100ビットと入力ベクトルとの間のハミング距離が計
算され、この内部節における8ビットのしきい値λjと
比べられる。もしハミング距離がしきい値よりも大きけ
れば、128ビット記憶場所の次の6ビットで指定され
る出力ベクトル中のビットがセットされる。
(Hamming)距離計算器、結果のハミング距離を
要求されるしきい値と比較するための比較器、アルゴリ
ズムとアルゴリズム学習フェーズに特有な付加的な制御
論理回路、データメモリを通して一連の操作を実行し命
令を検出するための通常の制御論理回路、を含んでい
る。同報通信メモリは、アルゴリズムにおいて入力層と
して知られたチップへの100ビットの入力ベクトルを
記憶する。通常の動作(訓練期間ではなく)においてチ
ップは次のように動作する。出力ベクトルはすべて零に
設定され、入力ベクトルは同報通信メモリ中へ書き込ま
れ、チップは128ビットのデータメモリ記憶場所1,
000個を通してサイクル処理を実行して出力ベクトル
を計算し、CPUは出力ベクトルを含む記憶場所から読
み出しを行う。j番目の128ビットデータメモリ記憶
場所が読み出される時には、もしベクトルがコミットさ
れていれば(115番目のビット)、Wjを表す最初の
100ビットと入力ベクトルとの間のハミング距離が計
算され、この内部節における8ビットのしきい値λjと
比べられる。もしハミング距離がしきい値よりも大きけ
れば、128ビット記憶場所の次の6ビットで指定され
る出力ベクトル中のビットがセットされる。
【0043】学習モードにおいては、“コミットされ
た”ビットをセットし、ベクトルW、しきい値、および
出力ノードを必要な値に設定することによって、内部セ
ルがコミットされる;これは簡単なメモリ書き込み操作
である。新しい出力セルをコミットすることは易しい:
それのビット番号をそれがつながれるべき内部セル中へ
書き込むだけである。内部節のすべてにおいてそれらの
何れもが発火しないようにしきい値を増大させるために
は、内部節を通してサイクル処理を行ない、入力までの
ハミング距離を計算し、各々に対するしきい値をその節
が発火しないように設定することが行わなければならな
い。このチップが通常のモードで動作する時は、そのチ
ップが内部節すべてを通してサイクル処理を行う時であ
る。学習モードに関しては、内部節および出力ノードの
コミットはメモリ書き込みの時であり、各アクセスがハ
ミング距離を計算するだけでなく新しいしきい値を書き
戻すことも行わなければならないため、特定の入力に対
して内部節をスイッチオフすることは通常モードの2倍
である。16Kデータメモリを用いることはこのシステ
ムに対して8チップを必要とすることを意味する。
た”ビットをセットし、ベクトルW、しきい値、および
出力ノードを必要な値に設定することによって、内部セ
ルがコミットされる;これは簡単なメモリ書き込み操作
である。新しい出力セルをコミットすることは易しい:
それのビット番号をそれがつながれるべき内部セル中へ
書き込むだけである。内部節のすべてにおいてそれらの
何れもが発火しないようにしきい値を増大させるために
は、内部節を通してサイクル処理を行ない、入力までの
ハミング距離を計算し、各々に対するしきい値をその節
が発火しないように設定することが行わなければならな
い。このチップが通常のモードで動作する時は、そのチ
ップが内部節すべてを通してサイクル処理を行う時であ
る。学習モードに関しては、内部節および出力ノードの
コミットはメモリ書き込みの時であり、各アクセスがハ
ミング距離を計算するだけでなく新しいしきい値を書き
戻すことも行わなければならないため、特定の入力に対
して内部節をスイッチオフすることは通常モードの2倍
である。16Kデータメモリを用いることはこのシステ
ムに対して8チップを必要とすることを意味する。
【0044】メモリ110等のスマートRAMに適した
組み込み自己試験(BIST)および自動故障許容方式
は、メモリ110等に第3の動作モードをつけ加え、既
にチップ選択の議論のところで示したように自己試験モ
ードを実行させることで達成される。実際には、CPU
102が自己試験モード開始コマンドを書き込み、それ
によってデータ経路制御論理回路が設計者の決定した値
にメモリを初期化し、すべてのアドレスのデータを通し
てサイクル処理を行い、結果を設計者の決定した結果の
期待値と比較する。失敗は特別なRAM記憶場所にフラ
グとして示される。更にデータ経路制御論理回路の試験
も含まれ得る;実際には行列乗算用のメモリを試験する
ためにはすべて零の行列を乗算し、零でない結果で失敗
フラグを設定すればよい。すべてのチップは並列的にB
ISTを実行する。これが完了すると、CPUは各チッ
プをポーリングし、失敗したチップのアドレスを記録
し、それらをアドレス空間からはずし、基板に冗長チッ
プを供給する。典型的にはBISTはデータRAM中へ
のデータのロードに先だって行われる。
組み込み自己試験(BIST)および自動故障許容方式
は、メモリ110等に第3の動作モードをつけ加え、既
にチップ選択の議論のところで示したように自己試験モ
ードを実行させることで達成される。実際には、CPU
102が自己試験モード開始コマンドを書き込み、それ
によってデータ経路制御論理回路が設計者の決定した値
にメモリを初期化し、すべてのアドレスのデータを通し
てサイクル処理を行い、結果を設計者の決定した結果の
期待値と比較する。失敗は特別なRAM記憶場所にフラ
グとして示される。更にデータ経路制御論理回路の試験
も含まれ得る;実際には行列乗算用のメモリを試験する
ためにはすべて零の行列を乗算し、零でない結果で失敗
フラグを設定すればよい。すべてのチップは並列的にB
ISTを実行する。これが完了すると、CPUは各チッ
プをポーリングし、失敗したチップのアドレスを記録
し、それらをアドレス空間からはずし、基板に冗長チッ
プを供給する。典型的にはBISTはデータRAM中へ
のデータのロードに先だって行われる。
【0045】第4図は第2の実施例のメモリ400の模
式的ブロック図であり、それはローカル計算回路を含ん
でいるが、メモリ実装ピン出力は標準的なものとなって
いる。メモリ400はRAM402中のベクトルの結合
されたリストを通して検索できるように構成されてい
る。各ベクトルは1つまたは2つのフィールドとリスト
中の次のベクトルへのポインタとを含んでいる;リスト
を通しての検索は典型的には次の手順を踏む:RAM4
02中にベクトルのアドレスを設定する。RAM402
からそのベクトルの対象となるフィールドを取り出す。
取り出されたフィールド中の値を特定の条件と比較し、
その条件が満たされているかを調べる(その条件はレジ
スタ404中に記憶されている)。もし条件が満たされ
ていれば検索を終了する。そうでなければ取り出すフィ
ールドを変更し(RAM402へ書き込む)、現在のベ
クトルからつぎのベクトルへのポインタを取り出す。ポ
インタを調べて検索を終了すべきかを決める;そうでな
ければ次のベクトルに対してステップを繰り返す。レジ
スタ404は第1の実施例での同報通信RAM204に
類似しており、RAM402はデータRAM202に類
似している。検索プログラムのためにはほんし小さな命
令セットが必要である。例えば、LOADAC(累算器
をロード)、STOREAC(累算器へ記憶)、AND
(累算器へ加算)、SUB(累算器から減算)、BRA
NCH<0、BRANCH>0、BRANCH=0、B
RANCH≠0、BRANCH≦0、BRANCH≧0
(6個の累算器試験条件)、IDLE、MAX(現在の
累算器と入力の最大値を累算器中へ置く)である。
式的ブロック図であり、それはローカル計算回路を含ん
でいるが、メモリ実装ピン出力は標準的なものとなって
いる。メモリ400はRAM402中のベクトルの結合
されたリストを通して検索できるように構成されてい
る。各ベクトルは1つまたは2つのフィールドとリスト
中の次のベクトルへのポインタとを含んでいる;リスト
を通しての検索は典型的には次の手順を踏む:RAM4
02中にベクトルのアドレスを設定する。RAM402
からそのベクトルの対象となるフィールドを取り出す。
取り出されたフィールド中の値を特定の条件と比較し、
その条件が満たされているかを調べる(その条件はレジ
スタ404中に記憶されている)。もし条件が満たされ
ていれば検索を終了する。そうでなければ取り出すフィ
ールドを変更し(RAM402へ書き込む)、現在のベ
クトルからつぎのベクトルへのポインタを取り出す。ポ
インタを調べて検索を終了すべきかを決める;そうでな
ければ次のベクトルに対してステップを繰り返す。レジ
スタ404は第1の実施例での同報通信RAM204に
類似しており、RAM402はデータRAM202に類
似している。検索プログラムのためにはほんし小さな命
令セットが必要である。例えば、LOADAC(累算器
をロード)、STOREAC(累算器へ記憶)、AND
(累算器へ加算)、SUB(累算器から減算)、BRA
NCH<0、BRANCH>0、BRANCH=0、B
RANCH≠0、BRANCH≦0、BRANCH≧0
(6個の累算器試験条件)、IDLE、MAX(現在の
累算器と入力の最大値を累算器中へ置く)である。
【0046】ベクトルのl1 とl2 ノルム(norm)
の計算のような、他の型のローカル計算もメモリ11
0、111、112…で実行することができる。特に、
デジタル信号処理においては、テストベクトルVと複数
個の基準ベクトルWr (1≦r≦R)の1つとの“距
離”を見いだすことがしばしば必要となり、一般的に使
用される距離の測度は、差V−Wr のl1 とl2 のノル
ムである例えば差のl1 ノルムは
の計算のような、他の型のローカル計算もメモリ11
0、111、112…で実行することができる。特に、
デジタル信号処理においては、テストベクトルVと複数
個の基準ベクトルWr (1≦r≦R)の1つとの“距
離”を見いだすことがしばしば必要となり、一般的に使
用される距離の測度は、差V−Wr のl1 とl2 のノル
ムである例えば差のl1 ノルムは
【数4】 であり、成分Wr j をデータRAM202中へ、成分V
jを同報通信RAM204中へ既に述べたようにロード
し、次に各基準ベクトルについて論理回路206中で並
列的に減算を行い、絶対値を求めることによって計算さ
れる。
jを同報通信RAM204中へ既に述べたようにロード
し、次に各基準ベクトルについて論理回路206中で並
列的に減算を行い、絶対値を求めることによって計算さ
れる。
【0047】第5a図は第3の実施例のメモリ500の
模式的ブロック図であり、それは第1の実施例のメモリ
110と同じようにローカル計算回路を含んでいるが、
メモリ実装ピン出力は標準的なものである。メモリ50
0は、ベクトルおよびベクトルのドット積(内積)のl
1 とl2 のノルムの計算において行われるような乗算と
累算に適したものとなっている。メモリ500は、32
K×8ビット(512×512配列のメモリセルであ
り、それらはバス508へ16対1に多重化される)と
して構成された256KデータRAM502、4K×8
ビット(64×512配列)として構成された32Kの
同報通信RAM504、32ビットデータバス508、
15ビットアドレスバス506、乗算−累算パイプライ
ン(16ビット×16ビット乗算器510、32ビット
乗算器512、32ビット桁移動回路514、32ビッ
トマルチプレクサ516、1つのエントリ入力を有する
32ビットALU(算術論理演算装置)518、32ビ
ット累算器520、32ビットシフト回路522)、R
AMから読み出されたばかりのデータを保持し、示され
たように、その内容の1、2、3、4個のいずれかのバ
イトがアクセスできるようにアンパックするための32
ビットレジスタ524と526、レジスタ524または
526のアンロードによって自動的に増分または減分す
るアドレスレジスタ528−530、外部のCPUによ
ってプログラムできる制御ワード532を含んでいる。
レジスタ524と526とをアンパックする機能は、デ
ータバスが固定された幅(この例では32ビット)であ
るにも拘らず、1、2、3、4バイト(8ビットが1バ
イト)のいずれかのデータビット幅の選択を許容するた
めのものである。アンパックレジスタ524の構成例
は、データバス508によって並列的に書き込まれる4
個の8ビットレジスタである。“データ幅”制御ワード
は4つの制御信号を発生し、それらは次にクロック信号
と論理的に組み合わされて、望みのデータをマルチプレ
クサ512の入力へ与えるパスゲートの4個のバンクを
制御する。簡単な模式図は第5b図に示されている。ア
ンパックレジスタ524と526はまた、必要とされる
データワードをシフトすることによって付加的なメモリ
読み出しなしにマルチプレクサ512へのパイプライン
式データロードを許容する。これはクロック信号と組み
合わされた“シフト回路”制御ワードによって制御され
る。同様に、クロック信号と組み合わされた“動作(オ
ペレーション)”制御ワードは、アンパックレジスタ5
24から乗算器510への16ビットのデータロードを
行う。メモリ110でそうであったように、メモリ50
0は典型的には、CPUと、メモリ500と同様な複数
のメモリとを備えたシステムの一部である。第2図のバ
ス104と、ポート210と同様な外部データバスとマ
ルチプレクサは第5a図には示されていない。第5a図
に示され、また第2図のマルチプレクサ212と同じよ
うに、外部アドレスバスはアドレスレジスタ528−5
30によって多重化されている。
模式的ブロック図であり、それは第1の実施例のメモリ
110と同じようにローカル計算回路を含んでいるが、
メモリ実装ピン出力は標準的なものである。メモリ50
0は、ベクトルおよびベクトルのドット積(内積)のl
1 とl2 のノルムの計算において行われるような乗算と
累算に適したものとなっている。メモリ500は、32
K×8ビット(512×512配列のメモリセルであ
り、それらはバス508へ16対1に多重化される)と
して構成された256KデータRAM502、4K×8
ビット(64×512配列)として構成された32Kの
同報通信RAM504、32ビットデータバス508、
15ビットアドレスバス506、乗算−累算パイプライ
ン(16ビット×16ビット乗算器510、32ビット
乗算器512、32ビット桁移動回路514、32ビッ
トマルチプレクサ516、1つのエントリ入力を有する
32ビットALU(算術論理演算装置)518、32ビ
ット累算器520、32ビットシフト回路522)、R
AMから読み出されたばかりのデータを保持し、示され
たように、その内容の1、2、3、4個のいずれかのバ
イトがアクセスできるようにアンパックするための32
ビットレジスタ524と526、レジスタ524または
526のアンロードによって自動的に増分または減分す
るアドレスレジスタ528−530、外部のCPUによ
ってプログラムできる制御ワード532を含んでいる。
レジスタ524と526とをアンパックする機能は、デ
ータバスが固定された幅(この例では32ビット)であ
るにも拘らず、1、2、3、4バイト(8ビットが1バ
イト)のいずれかのデータビット幅の選択を許容するた
めのものである。アンパックレジスタ524の構成例
は、データバス508によって並列的に書き込まれる4
個の8ビットレジスタである。“データ幅”制御ワード
は4つの制御信号を発生し、それらは次にクロック信号
と論理的に組み合わされて、望みのデータをマルチプレ
クサ512の入力へ与えるパスゲートの4個のバンクを
制御する。簡単な模式図は第5b図に示されている。ア
ンパックレジスタ524と526はまた、必要とされる
データワードをシフトすることによって付加的なメモリ
読み出しなしにマルチプレクサ512へのパイプライン
式データロードを許容する。これはクロック信号と組み
合わされた“シフト回路”制御ワードによって制御され
る。同様に、クロック信号と組み合わされた“動作(オ
ペレーション)”制御ワードは、アンパックレジスタ5
24から乗算器510への16ビットのデータロードを
行う。メモリ110でそうであったように、メモリ50
0は典型的には、CPUと、メモリ500と同様な複数
のメモリとを備えたシステムの一部である。第2図のバ
ス104と、ポート210と同様な外部データバスとマ
ルチプレクサは第5a図には示されていない。第5a図
に示され、また第2図のマルチプレクサ212と同じよ
うに、外部アドレスバスはアドレスレジスタ528−5
30によって多重化されている。
【0048】別の構成では、データRAM502から3
2ビットバス508への512ビットラインの16対1
の多重化が、512ビットラインから4個の32ビット
バスへの4個の4対1の多重化で置き換えられ、4個の
乗算−累算パイプラインと対になった32ビットアンパ
ックレジスタが含まれている。更に、16ビット×16
ビットの乗算器510は24ビット×24ビットあるい
は32ビット×32ビットの乗算器で置き換えられる。
行列はn行m列で構成されているとみることができるた
め、10個の制御ワード532の最初の3ワードは行列
の開始アドレス、行列中の行数、および列数を定める。
第4および第5の制御ワードはデータの幅を定め、第6
の制御ワードは計算された結果を記憶するアドレスを指
定し、第7の制御ワードはシフト回路をセットアップ
し、第8の制御ワードは構成(マルチプレクサ512お
よび516、自動増分または減分、等)を定め、第9の
制御ワードはGOワードであり、それは書き込まれた場
合メモリ500中での計算を開始させる。また第10の
制御ワードは同報通信RAM504中のベクトルの開始
アドレスを指定する。すなわちGOワードが書き込まれ
ると、メモリアドレスレジスタ528−530がロード
され、シフト回路がセットアップされ、RAM502と
504からレジスタ524と526へ読み出しを行い、
パイプライン結果をRAM中へ書き戻すことによって計
算が始まる。メモリ110でそうであったように、メモ
リ500は、データRAM502中へロードされた基準
データと、すべての同報通信RAM504中へ同時に書
き込まれた入力データとを有するシステムの一部であ
る。
2ビットバス508への512ビットラインの16対1
の多重化が、512ビットラインから4個の32ビット
バスへの4個の4対1の多重化で置き換えられ、4個の
乗算−累算パイプラインと対になった32ビットアンパ
ックレジスタが含まれている。更に、16ビット×16
ビットの乗算器510は24ビット×24ビットあるい
は32ビット×32ビットの乗算器で置き換えられる。
行列はn行m列で構成されているとみることができるた
め、10個の制御ワード532の最初の3ワードは行列
の開始アドレス、行列中の行数、および列数を定める。
第4および第5の制御ワードはデータの幅を定め、第6
の制御ワードは計算された結果を記憶するアドレスを指
定し、第7の制御ワードはシフト回路をセットアップ
し、第8の制御ワードは構成(マルチプレクサ512お
よび516、自動増分または減分、等)を定め、第9の
制御ワードはGOワードであり、それは書き込まれた場
合メモリ500中での計算を開始させる。また第10の
制御ワードは同報通信RAM504中のベクトルの開始
アドレスを指定する。すなわちGOワードが書き込まれ
ると、メモリアドレスレジスタ528−530がロード
され、シフト回路がセットアップされ、RAM502と
504からレジスタ524と526へ読み出しを行い、
パイプライン結果をRAM中へ書き戻すことによって計
算が始まる。メモリ110でそうであったように、メモ
リ500は、データRAM502中へロードされた基準
データと、すべての同報通信RAM504中へ同時に書
き込まれた入力データとを有するシステムの一部であ
る。
【0049】応用例は、記憶されていた基準フレームか
らの入力ベクトルのユークリッド距離を計算する実時間
言語理解であろう。基準フレームはデータRAM中のメ
モリ間に均等に分散しており、入力ベクトルが入ってく
るとそれは、各チップ中で計算を同時に開始させるよう
に書き込まれた同報通信RAMとGOワード中へ同時に
書き込まれる。ローカル計算の終了によって、GOワー
ドはメモリによって変更され、外部CPUが結果を読み
出す。特に、次の計算を考える。
らの入力ベクトルのユークリッド距離を計算する実時間
言語理解であろう。基準フレームはデータRAM中のメ
モリ間に均等に分散しており、入力ベクトルが入ってく
るとそれは、各チップ中で計算を同時に開始させるよう
に書き込まれた同報通信RAMとGOワード中へ同時に
書き込まれる。ローカル計算の終了によって、GOワー
ドはメモリによって変更され、外部CPUが結果を読み
出す。特に、次の計算を考える。
【数5】 ここでX=〔x(1),x(2),x(3),x
(4)〕であり、またR(1)=〔r(1,1),r
(1,2),r(1,3),r(1,4)〕で、n=8
で、d(n)は記憶のために2バイトを要するスカラー
である。r(i,j)はデータRAM502中に記憶さ
れる。x(i)とr(i)はそれぞれ1バイト幅である
と仮定する。以下の手順で計算が行われる。
(4)〕であり、またR(1)=〔r(1,1),r
(1,2),r(1,3),r(1,4)〕で、n=8
で、d(n)は記憶のために2バイトを要するスカラー
である。r(i,j)はデータRAM502中に記憶さ
れる。x(i)とr(i)はそれぞれ1バイト幅である
と仮定する。以下の手順で計算が行われる。
【0050】1. 外部CPUが10個の制御ワードを書
き込む。それらはこの例では次のものである: 開始アドレス1=100(Rの開始アドレス) N列=4 N行=8 データ幅=1 結果幅=2 結果アドレス=300(結果が順に記憶されるアドレ
ス) シフト回路=0 動作=乗算−累算、自動増分 GO=書き込み 開始アドレス2=Xの開始アドレス 2. GOフラグが主CPUへ書き込まれた時には、r
(i,j)の開始アドレスがMAR0 528へロード
され、結果アドレスがMAR1 529中へロードさ
れ、Xの開始アドレスがMAR2 530中へロードさ
れる。 3. 累算器520が零に設定される。MAR0を用い
て、32ビットワード(r(1,1),r(1,2),
r(1,3),r(1,4))がアンパックレジスタ5
24(第5a図ではPIPE0と書かれている)中へ読
み込まれ、MAR2を用いて32ビットワード(x
(1),x(2),x(3),x(4))がアンパック
レジスタ526(第5a図ではPIPE1と書かれてい
る)中へロードされる。 4. “データ幅”制御ワードが乗算器510へ送られる
オペランドのサイズを定める。 5. この例では、x(1)とr(1,1)(PIPE0
とPIPE1の内容の1バイト)が乗算器510中へ送
られ、その積が累算器520中に累算される。 6. 次に、PIPE0とPIPE1の内容が1バイトシ
フトされ、乗算器510への次の送り時にx(2)とr
(1,2)はオペランドとなるはずの位置にあり、内容
のシフトと共にアドレスレジスタMAR0とMAR1は
自動的に増分される;すなわち最初のパスでMAR0は
増分の後101となる。 7. ステップ5と6が制御ワード“N列”で決まる回数
繰り返される。それはこの場合4である。(もし“N
列”が4より大きければPIPE0とPIPE1はそれ
らが空になるとすぐに別のメモリ読み出しによって満た
される。) 8. ステップ7が完了した後、結果は累算器中にあり、
これは書き込みの後自動的に増分されるアドレスレジス
タMAR1を用いてRAM502へ書き戻される。この
例では、もしMAR1が書き込みの前に300に等しけ
れば、制御ワード“結果幅”が2(バイト)に等しいの
で、増分の後MAR1は302に等しくなる。またこの
時点でMAR0は既に次のR(j)を指していることを
指摘しておく。 9. ステップ3から8が制御ワード“N行”で決まる回
数繰り返される。これはこの例では8に等しい。 10. ステップ9の完了後、GOフラグは計算が完了した
ことを示す別のパターンへ変更される。
き込む。それらはこの例では次のものである: 開始アドレス1=100(Rの開始アドレス) N列=4 N行=8 データ幅=1 結果幅=2 結果アドレス=300(結果が順に記憶されるアドレ
ス) シフト回路=0 動作=乗算−累算、自動増分 GO=書き込み 開始アドレス2=Xの開始アドレス 2. GOフラグが主CPUへ書き込まれた時には、r
(i,j)の開始アドレスがMAR0 528へロード
され、結果アドレスがMAR1 529中へロードさ
れ、Xの開始アドレスがMAR2 530中へロードさ
れる。 3. 累算器520が零に設定される。MAR0を用い
て、32ビットワード(r(1,1),r(1,2),
r(1,3),r(1,4))がアンパックレジスタ5
24(第5a図ではPIPE0と書かれている)中へ読
み込まれ、MAR2を用いて32ビットワード(x
(1),x(2),x(3),x(4))がアンパック
レジスタ526(第5a図ではPIPE1と書かれてい
る)中へロードされる。 4. “データ幅”制御ワードが乗算器510へ送られる
オペランドのサイズを定める。 5. この例では、x(1)とr(1,1)(PIPE0
とPIPE1の内容の1バイト)が乗算器510中へ送
られ、その積が累算器520中に累算される。 6. 次に、PIPE0とPIPE1の内容が1バイトシ
フトされ、乗算器510への次の送り時にx(2)とr
(1,2)はオペランドとなるはずの位置にあり、内容
のシフトと共にアドレスレジスタMAR0とMAR1は
自動的に増分される;すなわち最初のパスでMAR0は
増分の後101となる。 7. ステップ5と6が制御ワード“N列”で決まる回数
繰り返される。それはこの場合4である。(もし“N
列”が4より大きければPIPE0とPIPE1はそれ
らが空になるとすぐに別のメモリ読み出しによって満た
される。) 8. ステップ7が完了した後、結果は累算器中にあり、
これは書き込みの後自動的に増分されるアドレスレジス
タMAR1を用いてRAM502へ書き戻される。この
例では、もしMAR1が書き込みの前に300に等しけ
れば、制御ワード“結果幅”が2(バイト)に等しいの
で、増分の後MAR1は302に等しくなる。またこの
時点でMAR0は既に次のR(j)を指していることを
指摘しておく。 9. ステップ3から8が制御ワード“N行”で決まる回
数繰り返される。これはこの例では8に等しい。 10. ステップ9の完了後、GOフラグは計算が完了した
ことを示す別のパターンへ変更される。
【0051】別の例はXとRとの間の差の大きさを累算
することである。この場合には、制御ワード“動作”が
この差の大きさを累算する操作を実行することをフラグ
で示す。この計算の実行は既に述べたのと同様である;
差が現れるのはステップ5のみであり、そこにおいては
“動作”制御ワードが論理回路に対してx(i)とr
(j,i)との差を取らせ、これの絶対値が累算され
る。第3の実施例のより一般的な例は、特別な乗算−累
算パイプラインを、プログラム可能な処理装置と同報通
信RAM中への書き込みプログラムで置き換えるもので
あろう。第5c図はメモリチップ568を示しており、
このメモリの下位部分570はプログラムメモリとし
て、また上位部分572はデータメモリとみなされる。
プログラムメモリ570は、既に述べたようにデータメ
モリ572と同じI/Oピンを用いて外部の世界(CP
U)からアクセス可能である。同一チップ上のデコーダ
574、メモリ制御器576、および論理回路578は
プログラム可能な処理装置を提供する。命令はプログラ
ムメモリ570から取り出され、デコーダ574で解読
され、デコーダ574は適切な制御信号を発して論理回
路578を動作させる。外部世界がチップ568にアク
セスする時は、メモリ制御器576が論理回路578を
保留状態にし、外部世界のアクセスが終了した時には、
メモリ制御器576は論理回路578を解放し、論理回
路578はもとの動作を回復する。
することである。この場合には、制御ワード“動作”が
この差の大きさを累算する操作を実行することをフラグ
で示す。この計算の実行は既に述べたのと同様である;
差が現れるのはステップ5のみであり、そこにおいては
“動作”制御ワードが論理回路に対してx(i)とr
(j,i)との差を取らせ、これの絶対値が累算され
る。第3の実施例のより一般的な例は、特別な乗算−累
算パイプラインを、プログラム可能な処理装置と同報通
信RAM中への書き込みプログラムで置き換えるもので
あろう。第5c図はメモリチップ568を示しており、
このメモリの下位部分570はプログラムメモリとし
て、また上位部分572はデータメモリとみなされる。
プログラムメモリ570は、既に述べたようにデータメ
モリ572と同じI/Oピンを用いて外部の世界(CP
U)からアクセス可能である。同一チップ上のデコーダ
574、メモリ制御器576、および論理回路578は
プログラム可能な処理装置を提供する。命令はプログラ
ムメモリ570から取り出され、デコーダ574で解読
され、デコーダ574は適切な制御信号を発して論理回
路578を動作させる。外部世界がチップ568にアク
セスする時は、メモリ制御器576が論理回路578を
保留状態にし、外部世界のアクセスが終了した時には、
メモリ制御器576は論理回路578を解放し、論理回
路578はもとの動作を回復する。
【0052】第4の実施例のメモリとシステムはアドレ
ス連想メモリ(あるいは疎分散メモリまたはカネルバ
(Kanerva)メモリとも呼ばれる)として使用さ
れる。第6図は、一般的に600で示され、第4の実施
例メモリシステムの模式的ブロック図であり、それはア
ドレスメモリ610、611、612…とデータメモリ
650、651、652…を含んでいる。第7図は第5
の実施例メモリ610の模式的ブロック図であり、それ
は、アドレスRAM702(これはメモリ110のデー
タRAM202に相当する)、同報通信RAM704、
論理回路706、を含む。メモリ610は他の同様なメ
モリ611、612…と共に、アドレス連想メモリシス
テム600を構成する。アドレス連想メモリは通常のメ
モリとは異なり、1つのアドレスに記憶されたデータ
を、近隣のアドレスを読み出すことによって取り出すこ
とを許容する;すなわち一種の故障許容がその固有の特
性である。例えば、1つの入力アドレスと1個の入力デ
ータを備えたアドレス連想メモリは、入力データから特
定のハミング距離内にあるアドレスを持つすべてのメモ
リ記憶場所へそのデータを書き込むことができ、その書
き込まれたデータはそれらの記憶場所のいずれにおける
既存のデータも置き換えることなしにそれらに加えられ
る(メモリの各ビットはアップ−ダウン計数器によって
効果的に置き換えられる)。読み出しデータの入力アド
レスは入力アドレスから特定のハミング距離内にあるす
べてのアドレスをアクティブにし、これらアクティブに
されたすべてのアドレスにあるデータのしきい値を用い
たビット単位の加算によって、出力データ読み出しが得
られる。
ス連想メモリ(あるいは疎分散メモリまたはカネルバ
(Kanerva)メモリとも呼ばれる)として使用さ
れる。第6図は、一般的に600で示され、第4の実施
例メモリシステムの模式的ブロック図であり、それはア
ドレスメモリ610、611、612…とデータメモリ
650、651、652…を含んでいる。第7図は第5
の実施例メモリ610の模式的ブロック図であり、それ
は、アドレスRAM702(これはメモリ110のデー
タRAM202に相当する)、同報通信RAM704、
論理回路706、を含む。メモリ610は他の同様なメ
モリ611、612…と共に、アドレス連想メモリシス
テム600を構成する。アドレス連想メモリは通常のメ
モリとは異なり、1つのアドレスに記憶されたデータ
を、近隣のアドレスを読み出すことによって取り出すこ
とを許容する;すなわち一種の故障許容がその固有の特
性である。例えば、1つの入力アドレスと1個の入力デ
ータを備えたアドレス連想メモリは、入力データから特
定のハミング距離内にあるアドレスを持つすべてのメモ
リ記憶場所へそのデータを書き込むことができ、その書
き込まれたデータはそれらの記憶場所のいずれにおける
既存のデータも置き換えることなしにそれらに加えられ
る(メモリの各ビットはアップ−ダウン計数器によって
効果的に置き換えられる)。読み出しデータの入力アド
レスは入力アドレスから特定のハミング距離内にあるす
べてのアドレスをアクティブにし、これらアクティブに
されたすべてのアドレスにあるデータのしきい値を用い
たビット単位の加算によって、出力データ読み出しが得
られる。
【0053】動作時には、アドレスRAM702中にキ
ーアドレスが記憶されており、第1の実施例に関連して
説明したのと同じように、読み書きすべきテストアドレ
スが各メモリ610、611…の同報通信RAMへ同時
に書き込まれる。一旦、テストアドレスが同報通信RA
M中へ書き込まれると、論理回路706はレディ720
出力を低レベルにし、テストアドレスとアドレスRAM
702中に記憶されたキーアドレスの各々との間のハミ
ング距離を計算し始める;ハミング距離計算はすべての
メモリ610、611…中で同時に進行する。テストア
ドレスから要求される距離内にキーアドレスが見いださ
れると、論理回路706は後でCPU602によってポ
ーリングするためにこれをアドレスRAMの一部に記憶
させるか、または見いだす度にCPU602へ割り込み
をかける。次にCPU602は各々の見いだされたキー
アドレスに対応するデータをデータメモリ650、65
1…から読み出し、ビット単位で加算し、データ読み出
しでしきい値を与え、出力データを得る。
ーアドレスが記憶されており、第1の実施例に関連して
説明したのと同じように、読み書きすべきテストアドレ
スが各メモリ610、611…の同報通信RAMへ同時
に書き込まれる。一旦、テストアドレスが同報通信RA
M中へ書き込まれると、論理回路706はレディ720
出力を低レベルにし、テストアドレスとアドレスRAM
702中に記憶されたキーアドレスの各々との間のハミ
ング距離を計算し始める;ハミング距離計算はすべての
メモリ610、611…中で同時に進行する。テストア
ドレスから要求される距離内にキーアドレスが見いださ
れると、論理回路706は後でCPU602によってポ
ーリングするためにこれをアドレスRAMの一部に記憶
させるか、または見いだす度にCPU602へ割り込み
をかける。次にCPU602は各々の見いだされたキー
アドレスに対応するデータをデータメモリ650、65
1…から読み出し、ビット単位で加算し、データ読み出
しでしきい値を与え、出力データを得る。
【0054】例えば、アドレスが32ビット長で(その
場合約4.3×109 個の可能なアドレスがある)、キ
ーアドレスとして10,000個の32ビットワードA
1、A2…A10,000がランダムに選ばれるとする
と、A1と最も近い他のキーアドレスとのハミング距離
はおよそ4であると期待され、またA1と百番目に最も
近い他のキーアドレスとの間のハミング距離はおよそ8
−10であると期待される。このおよその見積は以下の
近似的な分析から導くことができる:キーアドレスはそ
れらのビットの内約半分が1で半分が0であると仮定す
る;次に組み合わせ解析によって一対のキーアドレス間
のハミング距離の累積確率分布を決定する:
場合約4.3×109 個の可能なアドレスがある)、キ
ーアドレスとして10,000個の32ビットワードA
1、A2…A10,000がランダムに選ばれるとする
と、A1と最も近い他のキーアドレスとのハミング距離
はおよそ4であると期待され、またA1と百番目に最も
近い他のキーアドレスとの間のハミング距離はおよそ8
−10であると期待される。このおよその見積は以下の
近似的な分析から導くことができる:キーアドレスはそ
れらのビットの内約半分が1で半分が0であると仮定す
る;次に組み合わせ解析によって一対のキーアドレス間
のハミング距離の累積確率分布を決定する:
【数6】 そしてこの確率分布に対して順序統計量の分布を近似
し、適切な順序統計量の累積分布を約2分の1にするハ
ミング距離を見つける。
し、適切な順序統計量の累積分布を約2分の1にするハ
ミング距離を見つける。
【0055】別の近似解析は次のようなものである:与
えられた(キー)アドレスに対してハミング距離にある
アドレスの数nは与えられたアドレス中のnビットを変
化させるやり方の数である、すなわち:
えられた(キー)アドレスに対してハミング距離にある
アドレスの数nは与えられたアドレス中のnビットを変
化させるやり方の数である、すなわち:
【数7】 従って与えられたアドレスからハミング距離10内にあ
るアドレスの数は次の和:
るアドレスの数は次の和:
【数8】 これは約108,000,000に等しい。このように
すべてのアドレスの約2.5%が与えられたアドレスか
ら10の距離内にある;そしてキーアドレスがランダム
に分布している;従って250個のキーアドレス(1
0,000の2.5%)が与えられたアドレスの10内
にあると期待される。こうして10,000個の32ビ
ットキーアドレスについてのハミング距離10を用い
て、各入力アドレスに対して約250個のキーアドレス
が得られる(入力アドレスが10,000の1つである
かそうでないかによらない)。システム600中へのデ
ータのロードは次のように進む:まず最初に10,00
0個のキーアドレスが生成され(乱数発生器)、メモリ
610、611…のアドレスRAM中へ記憶される。各
アドレスRAMは512個のアドレスのためのスペース
を有しており、従ってメモリ610、611…629は
十分なスペースを提供できる。CPU602は各キーア
ドレスをデータメモリ650中のアドレスと対応づける
検索表を作成する。そしてデータメモリ650中では各
データワードは、32×8で構成される256ビットを
占める;従ってデータメモリ650は少なくとも25.
6メガビットを有していなければならない。次に、まず
250個のキーアドレス、あるいは10,000個の内
の入力アドレスの10のハミング距離内にあるキーアド
レスを見いだすことによって、32ビットのデータが入
力アドレス(さらにはランダム入力32ビットアドレ
ス)へ記憶される。次にCPU602は32ビットデー
タを、データメモリ650中の見いだされた活動的アド
レスに対応する記憶場所の各々へ書き込む。これらの3
2ビットデータの書き込みはそのデータワードに既に記
憶されていたデータを置き換えることはせずにそれに加
えられる:このことは32×8のデータワード構成の8
ビットを用いて行われる。この8ビットは範囲128の
アップ−ダウン計数器として働き、32ビットデータワ
ードの各ビットは計数器を、増分(もしビットが“1”
であれば)、または減分(もしビットが“0”であれ
ば)させる。もしデータ記憶が大幅なオーバーヘッド時
間となるようであれば、データメモリ650はこの計算
のために32個の並列加算器を備えることができる。
すべてのアドレスの約2.5%が与えられたアドレスか
ら10の距離内にある;そしてキーアドレスがランダム
に分布している;従って250個のキーアドレス(1
0,000の2.5%)が与えられたアドレスの10内
にあると期待される。こうして10,000個の32ビ
ットキーアドレスについてのハミング距離10を用い
て、各入力アドレスに対して約250個のキーアドレス
が得られる(入力アドレスが10,000の1つである
かそうでないかによらない)。システム600中へのデ
ータのロードは次のように進む:まず最初に10,00
0個のキーアドレスが生成され(乱数発生器)、メモリ
610、611…のアドレスRAM中へ記憶される。各
アドレスRAMは512個のアドレスのためのスペース
を有しており、従ってメモリ610、611…629は
十分なスペースを提供できる。CPU602は各キーア
ドレスをデータメモリ650中のアドレスと対応づける
検索表を作成する。そしてデータメモリ650中では各
データワードは、32×8で構成される256ビットを
占める;従ってデータメモリ650は少なくとも25.
6メガビットを有していなければならない。次に、まず
250個のキーアドレス、あるいは10,000個の内
の入力アドレスの10のハミング距離内にあるキーアド
レスを見いだすことによって、32ビットのデータが入
力アドレス(さらにはランダム入力32ビットアドレ
ス)へ記憶される。次にCPU602は32ビットデー
タを、データメモリ650中の見いだされた活動的アド
レスに対応する記憶場所の各々へ書き込む。これらの3
2ビットデータの書き込みはそのデータワードに既に記
憶されていたデータを置き換えることはせずにそれに加
えられる:このことは32×8のデータワード構成の8
ビットを用いて行われる。この8ビットは範囲128の
アップ−ダウン計数器として働き、32ビットデータワ
ードの各ビットは計数器を、増分(もしビットが“1”
であれば)、または減分(もしビットが“0”であれ
ば)させる。もしデータ記憶が大幅なオーバーヘッド時
間となるようであれば、データメモリ650はこの計算
のために32個の並列加算器を備えることができる。
【0056】データが記憶された後、データは、入力ア
ドレスを同報通信RAM中へ書き込み、100個または
その程度の活動的アドレスを入力アドレスのハミング距
離10内に局所的に見いだし、データメモリ650から
100個またはその程度の対応するデータワードを読み
出し、これらの100個またはその程度のデータワード
について計数器毎に8ビットアップ−ダウン計数器を平
均化し、しきい値処理を行って平均値を32ビットの2
進数出力へ変換することによって、読み出される。
ドレスを同報通信RAM中へ書き込み、100個または
その程度の活動的アドレスを入力アドレスのハミング距
離10内に局所的に見いだし、データメモリ650から
100個またはその程度の対応するデータワードを読み
出し、これらの100個またはその程度のデータワード
について計数器毎に8ビットアップ−ダウン計数器を平
均化し、しきい値処理を行って平均値を32ビットの2
進数出力へ変換することによって、読み出される。
【0057】第5の実施例は異なるメモリ構成をとった
別のアドレス連想メモリシステムである。第8図は第5
図の実施例メモリ800の模式的ブロック図である。メ
モリ800はRAM802を含み、それはキーアドレス
へのデータ書き込みのための論理回路806中の累算器
と共にキーアドレスとそれらのデータを含んでいる。メ
モリ800は標準的な2K×8のSRAMと同じピン出
力を有しており、これも2K×8として構成されCPU
に対しても2K×8として見えるRAM802を含んで
いる。RAM802は6個の256ビットアドレスと付
随する256項目のデータとを含んでおり、各データ項
目は範囲128のアップ−ダウン計数器として働く8ビ
ットである。これによってRAM802中には後にCP
Uによって読み出される結果を記憶して置くための2K
ビットより少し大きいスペースが残る。アドレス連想メ
モリ動作に関しては、CPUは1個のキーアドレスをR
AM802中の32バイト分の引き続く8ビット領域へ
書き込むことができ、付随するデータを次に続く256
バイト分の領域へ書き込むことができる。このようにメ
モリ800はキーアドレスをそれが記憶しているデータ
と関連づけるために検索表を必要としない。替わりに、
入力アドレスが与えられると、CPUはローカル検索命
令と共に、システム中の各メモリ800の同報通信RA
M804へ、入力アドレス(32バイト)を同時に書き
込む。論理回路806はこれによって、ローカル検索命
令を読み、レディ信号を低レベルに設定し、入力アドレ
スとRAM802中に記憶されている6個のキーアドレ
スの各々との間のハミング距離を計算し始める。もし1
つのキーアドレスが入力アドレスの10のハミング距離
内にあることが見いだされると、論理回路806は活動
的アドレスを通してのそれのサイクル処理を中断して、
見いだされた活動的アドレスに付随するデータを読みだ
し、それを累算器812へ加算し、キーアドレス・デー
タのために未使用のRAM802中の適当な2K領域へ
結果を記憶する。6個のキーアドレスのすべてが入力デ
ータと比較され、もしあればすべての対応するデータが
加算されRAM802中に記憶された後、レディ信号が
高レベルに設定される。次にCPUは各メモリ800の
結果を読み出し、加算し、しきい値処理して、データ読
み出しを回復することができる。
別のアドレス連想メモリシステムである。第8図は第5
図の実施例メモリ800の模式的ブロック図である。メ
モリ800はRAM802を含み、それはキーアドレス
へのデータ書き込みのための論理回路806中の累算器
と共にキーアドレスとそれらのデータを含んでいる。メ
モリ800は標準的な2K×8のSRAMと同じピン出
力を有しており、これも2K×8として構成されCPU
に対しても2K×8として見えるRAM802を含んで
いる。RAM802は6個の256ビットアドレスと付
随する256項目のデータとを含んでおり、各データ項
目は範囲128のアップ−ダウン計数器として働く8ビ
ットである。これによってRAM802中には後にCP
Uによって読み出される結果を記憶して置くための2K
ビットより少し大きいスペースが残る。アドレス連想メ
モリ動作に関しては、CPUは1個のキーアドレスをR
AM802中の32バイト分の引き続く8ビット領域へ
書き込むことができ、付随するデータを次に続く256
バイト分の領域へ書き込むことができる。このようにメ
モリ800はキーアドレスをそれが記憶しているデータ
と関連づけるために検索表を必要としない。替わりに、
入力アドレスが与えられると、CPUはローカル検索命
令と共に、システム中の各メモリ800の同報通信RA
M804へ、入力アドレス(32バイト)を同時に書き
込む。論理回路806はこれによって、ローカル検索命
令を読み、レディ信号を低レベルに設定し、入力アドレ
スとRAM802中に記憶されている6個のキーアドレ
スの各々との間のハミング距離を計算し始める。もし1
つのキーアドレスが入力アドレスの10のハミング距離
内にあることが見いだされると、論理回路806は活動
的アドレスを通してのそれのサイクル処理を中断して、
見いだされた活動的アドレスに付随するデータを読みだ
し、それを累算器812へ加算し、キーアドレス・デー
タのために未使用のRAM802中の適当な2K領域へ
結果を記憶する。6個のキーアドレスのすべてが入力デ
ータと比較され、もしあればすべての対応するデータが
加算されRAM802中に記憶された後、レディ信号が
高レベルに設定される。次にCPUは各メモリ800の
結果を読み出し、加算し、しきい値処理して、データ読
み出しを回復することができる。
【0058】メモリ800へのデータの書き込みは、デ
ータが入力アドレスに近接した各キーアドレスにおいて
既存のデータへ加算されなければならないために、読み
出しの場合よりも複雑である。CPUは、入力アドレス
のハミング距離10内にあることが見いだされた各キー
アドレスに記憶されているデータを読み出し、新しいデ
ータを加えて再記憶するか、またはデータを入力アドレ
スと共に単に同報通信RAM804へ送り、論理回路8
06が累算器812中で加算を行うかのいずれかを選ぶ
ことができる。もちろん、キーアドレスを指定するため
にハミング距離以外の別の距離測度を用いてもよい。
ータが入力アドレスに近接した各キーアドレスにおいて
既存のデータへ加算されなければならないために、読み
出しの場合よりも複雑である。CPUは、入力アドレス
のハミング距離10内にあることが見いだされた各キー
アドレスに記憶されているデータを読み出し、新しいデ
ータを加えて再記憶するか、またはデータを入力アドレ
スと共に単に同報通信RAM804へ送り、論理回路8
06が累算器812中で加算を行うかのいずれかを選ぶ
ことができる。もちろん、キーアドレスを指定するため
にハミング距離以外の別の距離測度を用いてもよい。
【0059】第6の実施例システムは、メモリ800の
ようなメモリを複数個用いた疎分散メモリ(SDM)マ
シン900であって、第10a図から第10c図に模式
的に示されている。SDMマシンのための構築ブロック
は16Kビットメモリと32ビットカスタムデータ経路
を含むメモリ/処理装置チップである。各チップのメモ
リは6個の、256ビット幅の、SDMアドレス・デー
タ対を記憶するために使用される(第10a図参照)。
各チップのデータ経路はSDM読み出しおよび書き込み
を制御および実行し、またハミング距離を計算し、SD
M形式の累算を実行するための特殊なチップを含んでい
る(第10a図)。SDMマシンは主としてメモリ/処
理装置チップの512個で満たされた1枚または2枚
(要求される容量に依存する)の基板を含んでいる。基
板は、この実施例の目的のために、TI(テキサスイン
スツルメンツ)のエクスプローラ(Explorer)
LISPマシンに差し込まれる(第10c図)。それら
はLISPのCPUにとってメモリ基板として見える。
LISPのCPUは、疎分散メモリ(SDM)アドレス
(および書き込みに関するデータ)を予め定められたメ
モリ記憶場所へ書き込むことでそれらとのインターフェ
ースを取り、メモリ/処理装置チップがSDM計算を実
行する。SDM書き込みにはそれ以上の操作は不要であ
り、SDM読み出しにおいては、処理装置が待機(約1
00μs)し、その後各基板の予め定められた記憶場所
から順にSDMデータ(しきい値処理されていない)を
読み出す。LISPのCPUは各基板からのデータを累
算し、結果をしきい値処理する。
ようなメモリを複数個用いた疎分散メモリ(SDM)マ
シン900であって、第10a図から第10c図に模式
的に示されている。SDMマシンのための構築ブロック
は16Kビットメモリと32ビットカスタムデータ経路
を含むメモリ/処理装置チップである。各チップのメモ
リは6個の、256ビット幅の、SDMアドレス・デー
タ対を記憶するために使用される(第10a図参照)。
各チップのデータ経路はSDM読み出しおよび書き込み
を制御および実行し、またハミング距離を計算し、SD
M形式の累算を実行するための特殊なチップを含んでい
る(第10a図)。SDMマシンは主としてメモリ/処
理装置チップの512個で満たされた1枚または2枚
(要求される容量に依存する)の基板を含んでいる。基
板は、この実施例の目的のために、TI(テキサスイン
スツルメンツ)のエクスプローラ(Explorer)
LISPマシンに差し込まれる(第10c図)。それら
はLISPのCPUにとってメモリ基板として見える。
LISPのCPUは、疎分散メモリ(SDM)アドレス
(および書き込みに関するデータ)を予め定められたメ
モリ記憶場所へ書き込むことでそれらとのインターフェ
ースを取り、メモリ/処理装置チップがSDM計算を実
行する。SDM書き込みにはそれ以上の操作は不要であ
り、SDM読み出しにおいては、処理装置が待機(約1
00μs)し、その後各基板の予め定められた記憶場所
から順にSDMデータ(しきい値処理されていない)を
読み出す。LISPのCPUは各基板からのデータを累
算し、結果をしきい値処理する。
【0060】各基板は512個のメモリ/処理装置チッ
プを保有し、8ビットデータ計数器を用いて、各記憶場
所が256ビット長のSDM記憶場所を3072個の記
憶できる。CPUは、次のように、SDMに対して1秒
間に10,000回読み書きのためにアクセスすること
ができる: ・LISP CPUから基板へのデータ転送:1μs ・処理装置/メモリチップへのデータ転送:2μs ・チップ計算時間:3.6μs ・読み出し時のデータ累算時間:84μs ・1つの基板をオフする時間:6.8μs 容量は複数基板を用いて増やすことができる。SDMメ
モリ基板は標準的なメモリと大量並列方式とを混成した
ものである。それらは標準的なメモリ技術を用いて、S
DM計算のために最適化された処理装置を埋め込むこと
によって構築される。各16Kメモリチップ中に32ビ
ットのデータ経路が埋め込まれる。基板当たり512チ
ップであることから、これにより基板当たり16K×5
12=8Mビットのメモリと、32×512=16Kビ
ットのデータ経路が得られる。
プを保有し、8ビットデータ計数器を用いて、各記憶場
所が256ビット長のSDM記憶場所を3072個の記
憶できる。CPUは、次のように、SDMに対して1秒
間に10,000回読み書きのためにアクセスすること
ができる: ・LISP CPUから基板へのデータ転送:1μs ・処理装置/メモリチップへのデータ転送:2μs ・チップ計算時間:3.6μs ・読み出し時のデータ累算時間:84μs ・1つの基板をオフする時間:6.8μs 容量は複数基板を用いて増やすことができる。SDMメ
モリ基板は標準的なメモリと大量並列方式とを混成した
ものである。それらは標準的なメモリ技術を用いて、S
DM計算のために最適化された処理装置を埋め込むこと
によって構築される。各16Kメモリチップ中に32ビ
ットのデータ経路が埋め込まれる。基板当たり512チ
ップであることから、これにより基板当たり16K×5
12=8Mビットのメモリと、32×512=16Kビ
ットのデータ経路が得られる。
【0061】LISP CPUにとっては基板はメモリ
基板であるように見えるため、それらをシステムへ追加
するのは容易である。TIエクスプローラマシンの場合
には、それらはNubus(ニューバス)裏面へ差し込
まれ、メモリ基板として使用される。それらによってS
DM計算を行わせるために、エクスプローラシステムは
基板をページング空間として使用することを禁止されな
ければならない。SDMに読み出しと書き込みを行わせ
るソフトウエアは基板上の予め定められたメモリ記憶場
所へ書き込まれ、それは特別な基板ハードウエアによっ
て復号化されて、そのSDM計算のためのメモリ/処理
装置チップがアクティブにされる。各メモリ/処理装置
チップは内部的に512×32として見える16Kメモ
リと、内部的に64×32と見える2K同報通信メモリ
と、両メモリへの完全な32ビットのアクセスを有する
データ経路を含んでいる。メモリは論理的には、6個の
アドレス・データ対と、読み出しデータを累積すべき領
域とに分割されている。第9図はメモリの論理構造を示
す。
基板であるように見えるため、それらをシステムへ追加
するのは容易である。TIエクスプローラマシンの場合
には、それらはNubus(ニューバス)裏面へ差し込
まれ、メモリ基板として使用される。それらによってS
DM計算を行わせるために、エクスプローラシステムは
基板をページング空間として使用することを禁止されな
ければならない。SDMに読み出しと書き込みを行わせ
るソフトウエアは基板上の予め定められたメモリ記憶場
所へ書き込まれ、それは特別な基板ハードウエアによっ
て復号化されて、そのSDM計算のためのメモリ/処理
装置チップがアクティブにされる。各メモリ/処理装置
チップは内部的に512×32として見える16Kメモ
リと、内部的に64×32と見える2K同報通信メモリ
と、両メモリへの完全な32ビットのアクセスを有する
データ経路を含んでいる。メモリは論理的には、6個の
アドレス・データ対と、読み出しデータを累積すべき領
域とに分割されている。第9図はメモリの論理構造を示
す。
【0062】16KメモリはSDMアドレスとデータと
を記憶するために使用され、同報通信メモリは各SDM
読み書きのために必要なデータを記憶するために使用さ
れ、データ経路はSDM計算を実行する。データ経路
は、1クロックサイクルの間に32ビットワードのハミ
ング距離を計算する特別な論理回路と、各ワード中に記
憶された4個のデータ“ビット”に対して並列的に作用
する4個のSDM式の累算器を有している。データ経路
は最大の速度を達成するために高度にパイプライン化さ
れている。各チップ上の固定されたSDMアドレスの初
期化と、SDM読み書きに必要なアドレスおよびデータ
情報の同報通信の技術については以下に述べる。本説明
はSDMメモリ/処理装置チップの内部の動作に関する
ものである。読み書き情報の同報通信を受信すると、デ
ータ経路はSDMアドレスの各々を一時に1ワードずつ
サイクル処理して、標的SDMアドレスへのハミング距
離を計算し、同報通信メモリをサイクル処理してしまう
と、部分的ハミング距離を合計ハミング距離に累算す
る。
を記憶するために使用され、同報通信メモリは各SDM
読み書きのために必要なデータを記憶するために使用さ
れ、データ経路はSDM計算を実行する。データ経路
は、1クロックサイクルの間に32ビットワードのハミ
ング距離を計算する特別な論理回路と、各ワード中に記
憶された4個のデータ“ビット”に対して並列的に作用
する4個のSDM式の累算器を有している。データ経路
は最大の速度を達成するために高度にパイプライン化さ
れている。各チップ上の固定されたSDMアドレスの初
期化と、SDM読み書きに必要なアドレスおよびデータ
情報の同報通信の技術については以下に述べる。本説明
はSDMメモリ/処理装置チップの内部の動作に関する
ものである。読み書き情報の同報通信を受信すると、デ
ータ経路はSDMアドレスの各々を一時に1ワードずつ
サイクル処理して、標的SDMアドレスへのハミング距
離を計算し、同報通信メモリをサイクル処理してしまう
と、部分的ハミング距離を合計ハミング距離に累算す
る。
【0063】合計ハミング距離はしきい値と比較され
て、そのアドレスが活動的かが決定される。もし活動的
でなければ、データ経路は次のSDMアドレスへ進み、
またもし活動的であれば、書き込み時にはデータ更新
が、また読み出し時にはデータ累算が行われる。データ
更新では、SDM“ビット”が、1の書き込み時には増
分され、また0の書き込み時には減分される。データ累
算では、主メモリからデータが読まれ、それまでの結果
が主メモリから読まれ、それらを加算したものが主メモ
リへ書き戻される。データ経路および累算領域はまたS
DM読み出しにおいて階層構造の基板レベルでのデータ
累算においても使用され、それについては以下に述べ
る。ここで、ビットx−1に対するデータが階層の入力
ピンを通して循環入力、累算され、他方ビットxに対す
るデータが階層の出力ピンを通して循環出力される。し
かし、タグを付すことや一定数の応答器のような、標準
的SDMアルゴリズムの拡張が絶えず求められている。
従って、データ経路をSDMでサポートされた処理装置
とし、プログラムを同報通信メモリに記憶された形が望
ましい。
て、そのアドレスが活動的かが決定される。もし活動的
でなければ、データ経路は次のSDMアドレスへ進み、
またもし活動的であれば、書き込み時にはデータ更新
が、また読み出し時にはデータ累算が行われる。データ
更新では、SDM“ビット”が、1の書き込み時には増
分され、また0の書き込み時には減分される。データ累
算では、主メモリからデータが読まれ、それまでの結果
が主メモリから読まれ、それらを加算したものが主メモ
リへ書き戻される。データ経路および累算領域はまたS
DM読み出しにおいて階層構造の基板レベルでのデータ
累算においても使用され、それについては以下に述べ
る。ここで、ビットx−1に対するデータが階層の入力
ピンを通して循環入力、累算され、他方ビットxに対す
るデータが階層の出力ピンを通して循環出力される。し
かし、タグを付すことや一定数の応答器のような、標準
的SDMアルゴリズムの拡張が絶えず求められている。
従って、データ経路をSDMでサポートされた処理装置
とし、プログラムを同報通信メモリに記憶された形が望
ましい。
【0064】各基板は512個のメモリ/処理装置チッ
プを含み、各チップは6個の256ビット幅のSDMア
ドレスと付随するデータとを含んでいる。更に、各基板
上にはNubusアクセス、信号駆動、予め定められた
メモリ記憶場所検出を行うためのオフザシェルフ(of
f−the−shelf)部品が取り付けられている。
512個のメモリ/処理装置チップは次のような3つの
方法で構成される: 1. 256K×32ビットの通常メモリ 2. 8レベルの深さを持つ2分岐ツリー 3. 同報通信メモリ 通常メモリは非SDM的使用と、SDM的初期化とをサ
ポートし、2分岐ツリーはSDM読み出し中のデータの
基板レベルでの累算をサポートし、同時メモリ(すべて
のチップが同時にメモリ書き込みを受け取る)はSDM
アドレス、データ、しきい値の書き込みをサポートす
る。
プを含み、各チップは6個の256ビット幅のSDMア
ドレスと付随するデータとを含んでいる。更に、各基板
上にはNubusアクセス、信号駆動、予め定められた
メモリ記憶場所検出を行うためのオフザシェルフ(of
f−the−shelf)部品が取り付けられている。
512個のメモリ/処理装置チップは次のような3つの
方法で構成される: 1. 256K×32ビットの通常メモリ 2. 8レベルの深さを持つ2分岐ツリー 3. 同報通信メモリ 通常メモリは非SDM的使用と、SDM的初期化とをサ
ポートし、2分岐ツリーはSDM読み出し中のデータの
基板レベルでの累算をサポートし、同時メモリ(すべて
のチップが同時にメモリ書き込みを受け取る)はSDM
アドレス、データ、しきい値の書き込みをサポートす
る。
【0065】SDM読み書きにおいて、アドレスおよび
データは予め定められたメモリ記憶場所へ書き込まれ
る。特別な論理回路がこれを検出し、すべてのメモリ/
処理装置への書き込みを許可する。次に、SDMアドレ
スとデータ、しきい値、読み書きフラグがすべてのメモ
リ/処理装置チップへ書き込まれる。SDM読み出しで
は、各チップは局所的にデータ更新を行い、チップ間の
通信は不要であり、これは3.6μsで完了する。SD
M読み出しでは、各チップはそれの活動的なSDM記憶
場所からのデータを局所的に累算し、次に512個のチ
ップの各々中に累算されているデータの基板レベルでの
累算が行われる。チップはこの動作を容易にするために
階層構造状つながれている。この階層構造は8の深さを
持ち、分岐因子は2であり、追加の512番目のチップ
が最上部に特別に加えられている(第11図)。この階
層構造は、レベル8のすべてのチップを励起して、デー
タをそれらの親であるレベル7のチップへいっしょに通
過させるようにする。各メモリ/処理装置チップ上の6
個の付加的ピン(第12図参照)が階層構造の接続のた
めに設けられている:2つは上方へ(HO0とHO
1)、4つは下方へ(左側の子へのHL0とHL1、右
側の子へのHR0とHR1)である。階層構造を上方へ
向かうデータの通路もまた8の深さのパイプライン構造
になっている:バイトxがレベル2からレベル1へ通過
し、バイトx+1がレベル3からレベル2へ通過するこ
とを許容されている、等である。これらの特徴から、基
板全体でのデータ送信は84μsかかる。
データは予め定められたメモリ記憶場所へ書き込まれ
る。特別な論理回路がこれを検出し、すべてのメモリ/
処理装置への書き込みを許可する。次に、SDMアドレ
スとデータ、しきい値、読み書きフラグがすべてのメモ
リ/処理装置チップへ書き込まれる。SDM読み出しで
は、各チップは局所的にデータ更新を行い、チップ間の
通信は不要であり、これは3.6μsで完了する。SD
M読み出しでは、各チップはそれの活動的なSDM記憶
場所からのデータを局所的に累算し、次に512個のチ
ップの各々中に累算されているデータの基板レベルでの
累算が行われる。チップはこの動作を容易にするために
階層構造状つながれている。この階層構造は8の深さを
持ち、分岐因子は2であり、追加の512番目のチップ
が最上部に特別に加えられている(第11図)。この階
層構造は、レベル8のすべてのチップを励起して、デー
タをそれらの親であるレベル7のチップへいっしょに通
過させるようにする。各メモリ/処理装置チップ上の6
個の付加的ピン(第12図参照)が階層構造の接続のた
めに設けられている:2つは上方へ(HO0とHO
1)、4つは下方へ(左側の子へのHL0とHL1、右
側の子へのHR0とHR1)である。階層構造を上方へ
向かうデータの通路もまた8の深さのパイプライン構造
になっている:バイトxがレベル2からレベル1へ通過
し、バイトx+1がレベル3からレベル2へ通過するこ
とを許容されている、等である。これらの特徴から、基
板全体でのデータ送信は84μsかかる。
【0066】この階層構造の最上部にあるオフザシェル
フ論理回路は64個の32ビットワードへのデータバッ
ファとして用いられている。このバッファ論理回路はN
ubus裏面への32ビットの出力を有している。32
ビットのデータ幅と、バッファ作用とを備えたNubu
sの爆発的転送機構を完全に利用して、SDM読み出し
データを6.8μsでCPUへ転送することができる。
メモリ/処理装置チップはまた、それらが2K×8のメ
モリとして接続できるように23個のピンを有している
(第13図)。これらの接続を用いて、512個のメモ
リ/処理装置チップは通常のメモリ構造状に接続され、
基板はCPUに対して256K×32ビットのメモリ基
板として見える。通常のメモリ構造はSDMアドレスの
初期の書き込みを容易にし、基板を通常のメモリ基板と
して使用することを許容し、システムの試験およびデバ
ッグのための観察可能性と制御可能性を付与する。
フ論理回路は64個の32ビットワードへのデータバッ
ファとして用いられている。このバッファ論理回路はN
ubus裏面への32ビットの出力を有している。32
ビットのデータ幅と、バッファ作用とを備えたNubu
sの爆発的転送機構を完全に利用して、SDM読み出し
データを6.8μsでCPUへ転送することができる。
メモリ/処理装置チップはまた、それらが2K×8のメ
モリとして接続できるように23個のピンを有している
(第13図)。これらの接続を用いて、512個のメモ
リ/処理装置チップは通常のメモリ構造状に接続され、
基板はCPUに対して256K×32ビットのメモリ基
板として見える。通常のメモリ構造はSDMアドレスの
初期の書き込みを容易にし、基板を通常のメモリ基板と
して使用することを許容し、システムの試験およびデバ
ッグのための観察可能性と制御可能性を付与する。
【0067】チップ/基板アーキテクチャの最後の特徴
は同報通信モードである。各チップは、一時にすべての
チップへ同時送信されるデータを受信するために使用さ
れる付加的な2K×8同報通信メモリを有している。オ
フザシェルフ部品は特別な記憶場所へのメモリ書き込み
を検出するために使用される。これが発生すると、各メ
モリ/処理装置チップ上の同報通信モードピンは高レベ
ルになる。これはすべてのチップを選択し、2K×8同
報通信メモリへのメモリ書き込みが起こり得る。各チッ
プへSDMアドレス、データおよび活動性範囲、読み書
きフラグが同報通信される。第14図はメモリ/処理装
置チップのブロック構造を示す。
は同報通信モードである。各チップは、一時にすべての
チップへ同時送信されるデータを受信するために使用さ
れる付加的な2K×8同報通信メモリを有している。オ
フザシェルフ部品は特別な記憶場所へのメモリ書き込み
を検出するために使用される。これが発生すると、各メ
モリ/処理装置チップ上の同報通信モードピンは高レベ
ルになる。これはすべてのチップを選択し、2K×8同
報通信メモリへのメモリ書き込みが起こり得る。各チッ
プへSDMアドレス、データおよび活動性範囲、読み書
きフラグが同報通信される。第14図はメモリ/処理装
置チップのブロック構造を示す。
【0068】SDMマシンは次のような優れたアーキテ
クチャの特徴を有している: ・同一チップ(オンチップ)のメモリアクセス速度(オ
フチップの半分) ・同一チップのメモリ帯域幅(32ビット×8) ・簡単な同一チップ処理(割り込みなし、仮想メモリな
し) ・通常メモリとしての接続 ・階層構造接続 ・同報通信メモリとしての接続 ・プラグイン能力 従って、これはその他の応用にも適用できる。言語理解
(動的時間ワープおよび隠れたマルコフモデル方式)と
行列乗算は、このアーキテクチャへうまくマッピングで
きる応用例である。
クチャの特徴を有している: ・同一チップ(オンチップ)のメモリアクセス速度(オ
フチップの半分) ・同一チップのメモリ帯域幅(32ビット×8) ・簡単な同一チップ処理(割り込みなし、仮想メモリな
し) ・通常メモリとしての接続 ・階層構造接続 ・同報通信メモリとしての接続 ・プラグイン能力 従って、これはその他の応用にも適用できる。言語理解
(動的時間ワープおよび隠れたマルコフモデル方式)と
行列乗算は、このアーキテクチャへうまくマッピングで
きる応用例である。
【0069】このシステム設計は複数の方法で拡張でき
る。 −16K SRAMの替わりに256K SRAMを用
いることで容量が16倍になる。 −16K SRAMの替わりに4M DRAMチップを
用いることで容量が256倍になる。 −多分階層構造に接続された基板を増やすことで容量を
増やすことができる。 −マッキントッシュサイズの基板で、容量は3分の1、
同じ速度、同じNubus。 SDMマシンは単一の基板でここに提案された応用に適
用できるであろう。この装置の主たる特徴は、それの速
度、それの容易な使い方、同じアーキテクチャより大き
なSDMマシンが可能であること、である。
る。 −16K SRAMの替わりに256K SRAMを用
いることで容量が16倍になる。 −16K SRAMの替わりに4M DRAMチップを
用いることで容量が256倍になる。 −多分階層構造に接続された基板を増やすことで容量を
増やすことができる。 −マッキントッシュサイズの基板で、容量は3分の1、
同じ速度、同じNubus。 SDMマシンは単一の基板でここに提案された応用に適
用できるであろう。この装置の主たる特徴は、それの速
度、それの容易な使い方、同じアーキテクチャより大き
なSDMマシンが可能であること、である。
【0070】
【発明の修正および特長】実施例の装置と方法につい
て、同報通信RAMや低レベルの同一チップ論理回路等
の特長を保ちつつ、各種の修正が可能である。例えば、
RAM、論理回路、バス等の寸法、形状、サイズを変え
ることができる。データが常に同じであるような応用で
はデータRAMはROMやPROMでよい;あるいは、
まれにしか変わらないデータに対してはデータRAMは
EPROMまたはEEPROMでよい。この場合にはシ
ステムは不揮発性となる。更に、同報通信メモリをプロ
グラムメモリとし、データRAMをデータメモリとみな
してロード−記憶処理装置をスマートメモリ中へ集積す
ることができ、その場合にはハーバードアーキテクチャ
が実現する。更に、データ集中カーネルでの計算をプロ
グラムメモリへダウンロードすることができる。より大
きいメモリ配列チップはより幅広い内部データ経路を許
容し、従って相応の内部読み出し回数をなくし、チップ
当たりの並列処理要素数を増大させる。複数チップシス
テムの必要な基板面積を最小化するために、簡便なピン
出力要求のチップから始める高密度多重チップモジュー
ルへの要望がある。スマートメモリに基づくMPPシス
テムはこれから大いに利益を得るであろう。
て、同報通信RAMや低レベルの同一チップ論理回路等
の特長を保ちつつ、各種の修正が可能である。例えば、
RAM、論理回路、バス等の寸法、形状、サイズを変え
ることができる。データが常に同じであるような応用で
はデータRAMはROMやPROMでよい;あるいは、
まれにしか変わらないデータに対してはデータRAMは
EPROMまたはEEPROMでよい。この場合にはシ
ステムは不揮発性となる。更に、同報通信メモリをプロ
グラムメモリとし、データRAMをデータメモリとみな
してロード−記憶処理装置をスマートメモリ中へ集積す
ることができ、その場合にはハーバードアーキテクチャ
が実現する。更に、データ集中カーネルでの計算をプロ
グラムメモリへダウンロードすることができる。より大
きいメモリ配列チップはより幅広い内部データ経路を許
容し、従って相応の内部読み出し回数をなくし、チップ
当たりの並列処理要素数を増大させる。複数チップシス
テムの必要な基板面積を最小化するために、簡便なピン
出力要求のチップから始める高密度多重チップモジュー
ルへの要望がある。スマートメモリに基づくMPPシス
テムはこれから大いに利益を得るであろう。
【0071】以上の説明に関して更に以下の項を開示す
る。 (1) 集積回路であって、(a) データメモリであって、デ
ータバス端子へつながれたデータメモリ、(b) 前記デー
タメモリへつながれたチップ選択端子、(c) 同報通信メ
モリであって、前記データバス端子へつながれ、前記チ
ップ選択端子へはつながれていない、同報通信メモリ、
(d) 前記データメモリと前記同報通信メモリの両方へつ
ながれたデータ経路、を含む、集積回路。
る。 (1) 集積回路であって、(a) データメモリであって、デ
ータバス端子へつながれたデータメモリ、(b) 前記デー
タメモリへつながれたチップ選択端子、(c) 同報通信メ
モリであって、前記データバス端子へつながれ、前記チ
ップ選択端子へはつながれていない、同報通信メモリ、
(d) 前記データメモリと前記同報通信メモリの両方へつ
ながれたデータ経路、を含む、集積回路。
【0072】(2) 第1項の集積回路であって、(a) 前記
データ経路が、前記データメモリからのデータで計算を
行うための回路と、前記計算を開始させ、終了させるた
めの検出器とを含む、ような、集積回路。
データ経路が、前記データメモリからのデータで計算を
行うための回路と、前記計算を開始させ、終了させるた
めの検出器とを含む、ような、集積回路。
【0073】(3) 第1項の集積回路であって、更に、
(a) 前記データメモリと前記同報通信メモリの両方へつ
ながれたアドレスバス端子、(b) 前記アドレスバス端子
と前記同報通信メモリへつながれた検出器、を含む、集
積回路。
(a) 前記データメモリと前記同報通信メモリの両方へつ
ながれたアドレスバス端子、(b) 前記アドレスバス端子
と前記同報通信メモリへつながれた検出器、を含む、集
積回路。
【0074】(4) コンピュータシステムであって、 (a) 少なくとも1つの中央処理装置、 (b) 入出力、 (c) メモリシステムであって、複数個のメモリを含み、
前記メモリの各々が、 I. データメモリであって、データバス端子へつなが
れたデータメモリ、 II. 前記データメモリへつながれたチップ選択端子、 III .同報通信メモリであって、前記データバス端子へ
つながれ、前記チップ選択端子へはつながれていない、
同報通信メモリ、 IV. 前記データメモリと前記同報通信メモリの両方へ
つながれたデータ経路、を含む、メモリシステム、 を含む、コンピュータシステム。
前記メモリの各々が、 I. データメモリであって、データバス端子へつなが
れたデータメモリ、 II. 前記データメモリへつながれたチップ選択端子、 III .同報通信メモリであって、前記データバス端子へ
つながれ、前記チップ選択端子へはつながれていない、
同報通信メモリ、 IV. 前記データメモリと前記同報通信メモリの両方へ
つながれたデータ経路、を含む、メモリシステム、 を含む、コンピュータシステム。
【0075】(5) 第4項のシステムであって、更に、
(a) 前記メモリの各々の中にあって、前記データメモリ
と前記同報通信メモリの両方へつながれた、アドレスバ
ス端子、(b) 前記メモリの各々の中にあって、前記アド
レスバス端子と前記同報通信メモリへつながれた、検出
器、を含む、コンピュータシステム。
(a) 前記メモリの各々の中にあって、前記データメモリ
と前記同報通信メモリの両方へつながれた、アドレスバ
ス端子、(b) 前記メモリの各々の中にあって、前記アド
レスバス端子と前記同報通信メモリへつながれた、検出
器、を含む、コンピュータシステム。
【0076】(6) 第4項のシステムであって、(a) 前記
複数個のメモリが階層構造に配置されている、ような、
コンピュータシステム。
複数個のメモリが階層構造に配置されている、ような、
コンピュータシステム。
【0077】(7) 第4項のシステムであって、(a) 前記
複数個のメモリの各々が疎分散メモリアドレスとデータ
回路を含んでいる、ような、コンピュータシステム。
複数個のメモリの各々が疎分散メモリアドレスとデータ
回路を含んでいる、ような、コンピュータシステム。
【0078】(8) コンピュータであって、(a) メモリ、
(b) 前記メモリへつながれたレジスタ、(c) 第1と第2
の入力を有する処理要素であって、前記第1の入力は前
記第2の入力と異なるデータ幅を有し、前記第1と第2
の入力が互いに重なりあいながら前記レジスタへつなが
れている、処理要素、を含む、コンピュータ。
(b) 前記メモリへつながれたレジスタ、(c) 第1と第2
の入力を有する処理要素であって、前記第1の入力は前
記第2の入力と異なるデータ幅を有し、前記第1と第2
の入力が互いに重なりあいながら前記レジスタへつなが
れている、処理要素、を含む、コンピュータ。
【0079】(9) モノリシックメモリであって、(a) デ
ータメモリであって、データバス端子へつながれたデー
タメモリ、(b) 前記データメモリへつながれたプログラ
ム可能な処理要素、を含む、モノリシックメモリ。
ータメモリであって、データバス端子へつながれたデー
タメモリ、(b) 前記データメモリへつながれたプログラ
ム可能な処理要素、を含む、モノリシックメモリ。
【0080】(10)データメモリ202、埋め込まれた論
理回路206、そして通常のメモリモードとローカル計
算モードとの2つの動作モードを持つ同報通信メモリ2
04、を備えたメモリチップ。そのようなチップとアド
レス連想メモリシステムとの階層構造システム。
理回路206、そして通常のメモリモードとローカル計
算モードとの2つの動作モードを持つ同報通信メモリ2
04、を備えたメモリチップ。そのようなチップとアド
レス連想メモリシステムとの階層構造システム。
【図1】第1a図は第1の実施例のメモリのブロック
図。
図。
【図2】第1b図は第1の実施例のシステムのブロック
図。
図。
【図3】第1c図は第1の実施例のアドレス指定の仕組
みのブロック図。
みのブロック図。
【図4】第2図は第1の実施例のメモリのブロック図。
【図5】第3図は第1の実施例のメモリの一部分の回路
図。
図。
【図6】第4図は第2の実施例のメモリのブロック図。
【図7】第5a図は第3の実施例のメモリの模式図。
【図8】第5b図は第3の実施例のメモリの模式図。
【図9】第5c図は第3の実施例のメモリの模式図。
【図10】第6図は第4の実施例のシステムの回路図。
【図11】第7図は第4の実施例のメモリのブロック
図。
図。
【図12】第8図は第5の実施例のメモリのブロック
図。
図。
【図13】第9図は第5の実施例のメモリのブロック
図。
図。
【図14】第10a図から第10c図は第6の実施例の
システムの図。
システムの図。
【図15】第11図は第6の実施例のシステムの階層構
造を示す図。
造を示す図。
【図16】第12図は第6の実施例のシステムの階層構
造におけるデータ経路を示す図。
造におけるデータ経路を示す図。
【図17】第13図は第6の実施例のメモリのピン出力
を示す図。
を示す図。
【図18】第14図は第6の実施例のメモリの内部ブロ
ック構造と外部ブロック構造を示す図。
ック構造と外部ブロック構造を示す図。
【図19】第15図は応用例を示す図。
【図20】第16図は応用例を示す図。
100 第1の実施例システム 102 CPU(中央処理装置) 104 データバス 106 アドレスバス 108 チップ選択デコーダ 109 I/O 110,111,112,…139 メモリ 202 データメモリ(データRAM) 204 同報通信メモリ(同報通信RAM) 206 データ経路論理回路 208 ローカルバス 209 ローカルバス 210 入出力ポート 212 アドレスマルチプレクサ 214 CSD(データメモリ用チップ選択)入力 216 WE(書き込み許可)入力 218 ローカルアドレスバス 219 処理要素 220 OE(出力許可)入力 400 第2の実施例メモリ 402 RAM 404 レジスタ 500 第3の実施例メモリ 502 RAM 504 同報通信RAM 506 アドレスバス 508 データバス 510 乗算器 512 マルチプレクサ 514 シフト回路 516 マルチプレクサ 518 ALU 520 累算器 522 シフト回路 524 レジスタ 526 レジスタ 528−530 アドレスレジスタ 532 制御ワード 568 メモリチップ 570 下位部分 572 上位部分 574 同一チップデコーダ 576 メモリ制御器 578 論理回路 600 第4の実施例メモリシステム 602 CPU 610、611、612、…629 アドレスメモリ 650、651、652、… データメモリ 702 アドレスRAM 704 同報通信RAM 706 論理回路 720 レディ 800 第5の実施例メモリ 802 RAM 804 同報通信RAM 806 論理回路 812 累算器 900 SDMマシン
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成5年4月6日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】図面の簡単な説明
【補正方法】変更
【補正内容】
【図面の簡単な説明】
【図1a】第1の実施例のメモリのブロック図。
【図1b】第1の実施例のシステムのブロック図。
【図1c】第1の実施例のアドレス指定の仕組みのブロ
ック図。
ック図。
【図2】第1の実施例のメモリのブロック図。
【図3】第1の実施例のメモリの一部分の回路図。
【図4】第2の実施例のメモリのブロック図。
【図5a】第3の実施例のメモリの模式図。
【図5b】第3の実施例のメモリの模式図。
【図5c】第3の実施例のメモリの模式図。
【図6】第4の実施例のシステムの回路図。
【図7】第4の実施例のメモリのブロック図。
【図8】第5の実施例のメモリのブロック図。
【図9】第5の実施例のメモリのブロック図。
【図10】aからcは第6の実施例のシステムの図。
【図11】第6の実施例のシステムの階層構造を示す
図。
図。
【図12】第6の実施例のシステムの階層構造における
データ経路を示す図。
データ経路を示す図。
【図13】第6の実施例のメモリのピン出力を示す図。
【図14】第6の実施例のメモリの内部ブロック構造と
外部ブロック構造を示す図。
外部ブロック構造を示す図。
【図15】応用例を示す図。
【図16】応用例を示す図。
【符号の説明】 100 第1の実施例システム 102 CPU(中央処理装置) 104 データバス 106 アドレスバス 108 チップ選択デコーダ 109 I/O 110,111,112,…139 メモリ 202 データメモリ(データRAM) 204 同報通信メモリ(同報通信RAM) 206 データ経路論理回路 208 ローカルバス 209 ローカルバス 210 入出力ポート 212 アドレスマルチプレクサ 214 CSD(データメモリ用チップ選択)入力 216 WE(書き込み許可)入力 218 ローカルアドレスバス 219 処理要素 220 OE(出力許可)入力 400 第2の実施例メモリ 402 RAM 404 レジスタ 500 第3の実施例メモリ 502 RAM 504 同報通信RAM 506 アドレスバス 508 データバス 510 乗算器 512 マルチプレクサ 514 シフト回路 516 マルチプレクサ 518 ALU 520 累算器 522 シフト回路 524 レジスタ 526 レジスタ 528−530 アドレスレジスタ 532 制御ワード 568 メモリチップ 570 下位部分 572 上位部分 574 同一チップデコーダ 576 メモリ制御器 578 論理回路 600 第4の実施例メモリシステム 602 CPU 610、611、612、…629 アドレスメモリ 650、651、652、… データメモリ 702 アドレスRAM 704 同報通信RAM 706 論理回路 720 レディ 800 第5の実施例メモリ 802 RAM 804 同報通信RAM 806 論理回路 812 累算器 900 SDMマシン
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バサバラジ アイ.パリテ アメリカ合衆国 テキサス州,ダラス,ブ レントリッジ コート 10108 (72)発明者 ジョージ アール.ドディントン アメリカ合衆国 テキサス州,リチャード ソン,セント ルークス ドライブ 910 (72)発明者 ウォレン エル.ビーン アメリカ合衆国 テキサス州,ダラス,ウ ィンチェスター 7031 (72)発明者 マーク ジー.ハーワード アメリカ合衆国 テキサス州,ウィリー, ダグラス 100 (72)発明者 トーマス ジェイ.アトン アメリカ合衆国 テキサス州,ダラス,デ ールコート サークル 15735
Claims (1)
- 【請求項1】 集積回路であって、 (a) データメモリであって、データバス端子に接続され
たデータメモリ、 (b) 前記データメモリに接続されたチップ選択端子、 (c) 前記データバス端子に接続され、前記チップ選択端
子には接続されていない同報通信メモリ、 (d) 前記データメモリと前記同報通信メモリの両方へつ
ながれたデータ経路、を含む、集積回路。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US49823590A | 1990-03-16 | 1990-03-16 | |
| US498235 | 1990-03-16 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06208501A true JPH06208501A (ja) | 1994-07-26 |
Family
ID=23980166
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3051143A Pending JPH06208501A (ja) | 1990-03-16 | 1991-03-15 | 集積回路 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US5751987A (ja) |
| EP (1) | EP0446721B1 (ja) |
| JP (1) | JPH06208501A (ja) |
| KR (1) | KR100227988B1 (ja) |
| CN (1) | CN1027103C (ja) |
| DE (1) | DE69132495T2 (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011060279A (ja) * | 2009-09-11 | 2011-03-24 | Sean Eilert | 自律的メモリアーキテクチャー |
| US10003675B2 (en) | 2013-12-02 | 2018-06-19 | Micron Technology, Inc. | Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data |
| JP2020042479A (ja) * | 2018-09-10 | 2020-03-19 | 東京計器株式会社 | リコンフィギュラブルプロセッサ |
| US12367025B2 (en) | 2021-10-26 | 2025-07-22 | Preferred Networks, Inc. | Compiler, generation method, chip, and execution method |
Families Citing this family (241)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0584783A3 (en) * | 1992-08-25 | 1994-06-22 | Texas Instruments Inc | Method and apparatus for improved processing |
| EP0606653A1 (en) * | 1993-01-04 | 1994-07-20 | Texas Instruments Incorporated | Field programmable distributed processing memory |
| EP0626659A1 (en) * | 1993-05-28 | 1994-11-30 | Texas Instruments Incorporated | Apparatus, system and method for distributed processing |
| US5528549A (en) * | 1993-05-28 | 1996-06-18 | Texas Instruments Incorporated | Apparatus, systems and methods for distributed signal processing |
| US6353563B1 (en) * | 1996-04-30 | 2002-03-05 | Texas Instruments Incorporated | Built-in self-test arrangement for integrated circuit memory devices |
| JPH10232788A (ja) * | 1996-12-17 | 1998-09-02 | Fujitsu Ltd | 信号処理装置及びソフトウェア |
| US6178476B1 (en) | 1997-01-06 | 2001-01-23 | Texas Instruments Incorporated | Data communication interface including an integrated data processor and serial memory device |
| US6292886B1 (en) * | 1998-10-12 | 2001-09-18 | Intel Corporation | Scalar hardware for performing SIMD operations |
| US6502083B1 (en) * | 1998-12-29 | 2002-12-31 | International Business Machines Corporation | Neuron architecture having a dual structure and neural networks incorporating the same |
| US6523018B1 (en) * | 1998-12-29 | 2003-02-18 | International Business Machines Corporation | Neural chip architecture and neural networks incorporated therein |
| US6321327B1 (en) | 1998-12-30 | 2001-11-20 | Intel Corporation | Method for setting a bit associated with each component of packed floating-pint operand that is normalized in SIMD operations |
| US6374331B1 (en) * | 1998-12-30 | 2002-04-16 | Hewlett-Packard Company | Distributed directory cache coherence multi-processor computer architecture |
| US6578110B1 (en) * | 1999-01-21 | 2003-06-10 | Sony Computer Entertainment, Inc. | High-speed processor system and cache memories with processing capabilities |
| US6446029B1 (en) * | 1999-06-30 | 2002-09-03 | International Business Machines Corporation | Method and system for providing temporal threshold support during performance monitoring of a pipelined processor |
| US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
| US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
| US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
| US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
| CA2386558C (en) | 1999-09-01 | 2010-03-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
| US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
| US7191309B1 (en) | 1999-09-01 | 2007-03-13 | Intel Corporation | Double shift instruction for micro engine used in multithreaded parallel processor architecture |
| US6532509B1 (en) | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
| US6694380B1 (en) | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
| US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
| US7620702B1 (en) | 1999-12-28 | 2009-11-17 | Intel Corporation | Providing real-time control data for a network processor |
| US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
| US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
| US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
| US7480706B1 (en) | 1999-12-30 | 2009-01-20 | Intel Corporation | Multi-threaded round-robin receive for fast network port |
| US6584522B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
| US6976095B1 (en) | 1999-12-30 | 2005-12-13 | Intel Corporation | Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch |
| US6952824B1 (en) | 1999-12-30 | 2005-10-04 | Intel Corporation | Multi-threaded sequenced receive for fast network port stream of packets |
| US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
| JP2001216258A (ja) * | 2000-02-02 | 2001-08-10 | Toshiba Corp | データ処理装置およびバスサイクル制御方法 |
| US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
| US6732304B1 (en) * | 2000-09-21 | 2004-05-04 | Inapac Technology, Inc. | Chip testing within a multi-chip semiconductor package |
| US7444575B2 (en) * | 2000-09-21 | 2008-10-28 | Inapac Technology, Inc. | Architecture and method for testing of an integrated circuit device |
| US6754866B1 (en) | 2001-09-28 | 2004-06-22 | Inapac Technology, Inc. | Testing of integrated circuit devices |
| US7240254B2 (en) * | 2000-09-21 | 2007-07-03 | Inapac Technology, Inc | Multiple power levels for a chip within a multi-chip semiconductor package |
| US6812726B1 (en) * | 2002-11-27 | 2004-11-02 | Inapac Technology, Inc. | Entering test mode and accessing of a packaged semiconductor device |
| US7020871B2 (en) | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
| US6557090B2 (en) | 2001-03-09 | 2003-04-29 | Micron Technology, Inc. | Column address path circuit and method for memory devices having a burst access mode |
| US20030088757A1 (en) * | 2001-05-02 | 2003-05-08 | Joshua Lindner | Efficient high performance data operation element for use in a reconfigurable logic environment |
| JP2003177958A (ja) | 2001-06-11 | 2003-06-27 | Emblaze Semiconductor Ltd | 特殊メモリデバイス |
| US7487505B2 (en) | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
| US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
| US7225281B2 (en) | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
| US7216204B2 (en) | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
| US7126952B2 (en) * | 2001-09-28 | 2006-10-24 | Intel Corporation | Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method |
| US7313740B2 (en) * | 2002-07-25 | 2007-12-25 | Inapac Technology, Inc. | Internally generating patterns for testing in an integrated circuit device |
| US8001439B2 (en) * | 2001-09-28 | 2011-08-16 | Rambus Inc. | Integrated circuit testing module including signal shaping interface |
| US8166361B2 (en) * | 2001-09-28 | 2012-04-24 | Rambus Inc. | Integrated circuit testing module configured for set-up and hold time testing |
| US20040019841A1 (en) * | 2002-07-25 | 2004-01-29 | Ong Adrian E. | Internally generating patterns for testing in an integrated circuit device |
| US8286046B2 (en) | 2001-09-28 | 2012-10-09 | Rambus Inc. | Integrated circuit testing module including signal shaping interface |
| US7061263B1 (en) | 2001-11-15 | 2006-06-13 | Inapac Technology, Inc. | Layout and use of bond pads and probe pads for testing of integrated circuits devices |
| US7158964B2 (en) * | 2001-12-12 | 2007-01-02 | Intel Corporation | Queue management |
| US7107413B2 (en) | 2001-12-17 | 2006-09-12 | Intel Corporation | Write queue descriptor count instruction for high speed queuing |
| US7269179B2 (en) | 2001-12-18 | 2007-09-11 | Intel Corporation | Control mechanisms for enqueue and dequeue operations in a pipelined network processor |
| US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
| US7181573B2 (en) | 2002-01-07 | 2007-02-20 | Intel Corporation | Queue array caching in network devices |
| US6934951B2 (en) | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
| US7610451B2 (en) | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
| US7181594B2 (en) * | 2002-01-25 | 2007-02-20 | Intel Corporation | Context pipelines |
| US7149226B2 (en) | 2002-02-01 | 2006-12-12 | Intel Corporation | Processing data packets |
| US6877046B2 (en) * | 2002-03-29 | 2005-04-05 | International Business Machines Corporation | Method and apparatus for memory with embedded processor |
| US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
| US7471688B2 (en) | 2002-06-18 | 2008-12-30 | Intel Corporation | Scheduling system for transmission of cells to ATM virtual circuits and DSL ports |
| US7337275B2 (en) | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
| US7352769B2 (en) | 2002-09-12 | 2008-04-01 | Intel Corporation | Multiple calendar schedule reservation structure and method |
| US7433307B2 (en) | 2002-11-05 | 2008-10-07 | Intel Corporation | Flow control in a network environment |
| GB0226249D0 (en) * | 2002-11-11 | 2002-12-18 | Clearspeed Technology Ltd | Traffic handling system |
| US8063650B2 (en) | 2002-11-27 | 2011-11-22 | Rambus Inc. | Testing fuse configurations in semiconductor devices |
| US6941438B2 (en) * | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
| US7443836B2 (en) | 2003-06-16 | 2008-10-28 | Intel Corporation | Processing a data packet |
| US7213099B2 (en) * | 2003-12-30 | 2007-05-01 | Intel Corporation | Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches |
| US8300798B1 (en) | 2006-04-03 | 2012-10-30 | Wai Wu | Intelligent communication routing system and method |
| WO2008042403A2 (en) | 2006-10-03 | 2008-04-10 | Inapac Technologies, Inc. | Memory accessing circuit system |
| US8028124B2 (en) * | 2007-12-20 | 2011-09-27 | International Business Machines Corporation | Fast processing memory array |
| US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
| US7849294B2 (en) | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Sharing data in internal and memory representations with dynamic data-driven conversion |
| US8332580B2 (en) * | 2008-04-02 | 2012-12-11 | Zikbit Ltd. | System, method and apparatus for memory with embedded associative section for computations |
| IT1403375B1 (it) * | 2010-10-29 | 2013-10-17 | Strollo | Microcontrollore multiprocessore espandibile/parametrizzato |
| US9727336B2 (en) | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
| US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
| US9965208B1 (en) * | 2012-02-23 | 2018-05-08 | Micron Technology, Inc. | Memory device having a controller to enable and disable mode control circuitry of the controller |
| US9336112B2 (en) * | 2012-06-19 | 2016-05-10 | Apple Inc. | Parallel status polling of multiple memory devices |
| US9158667B2 (en) | 2013-03-04 | 2015-10-13 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
| US8964496B2 (en) | 2013-07-26 | 2015-02-24 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
| US8971124B1 (en) | 2013-08-08 | 2015-03-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
| US9153305B2 (en) | 2013-08-30 | 2015-10-06 | Micron Technology, Inc. | Independently addressable memory array address spaces |
| US9019785B2 (en) | 2013-09-19 | 2015-04-28 | Micron Technology, Inc. | Data shifting via a number of isolation devices |
| US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
| US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
| US9934856B2 (en) | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
| US9711207B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
| US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
| US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
| US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
| US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
| US9779019B2 (en) | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
| US9786335B2 (en) | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
| US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
| US9830999B2 (en) | 2014-06-05 | 2017-11-28 | Micron Technology, Inc. | Comparison operations in memory |
| US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
| US9711206B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
| KR20160006482A (ko) * | 2014-07-09 | 2016-01-19 | 에스케이하이닉스 주식회사 | 반도체 장치 |
| US9904515B2 (en) | 2014-09-03 | 2018-02-27 | Micron Technology, Inc. | Multiplication operations in memory |
| US9740607B2 (en) | 2014-09-03 | 2017-08-22 | Micron Technology, Inc. | Swap operations in memory |
| US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
| US10068652B2 (en) | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
| US9847110B2 (en) | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
| US9747961B2 (en) | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
| US9898252B2 (en) | 2014-09-03 | 2018-02-20 | Micron Technology, Inc. | Multiplication operations in memory |
| US9940026B2 (en) | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
| US9836218B2 (en) | 2014-10-03 | 2017-12-05 | Micron Technology, Inc. | Computing reduction and prefix sum operations in memory |
| US10163467B2 (en) | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
| US10147480B2 (en) | 2014-10-24 | 2018-12-04 | Micron Technology, Inc. | Sort operation in memory |
| US9779784B2 (en) | 2014-10-29 | 2017-10-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
| US9747960B2 (en) | 2014-12-01 | 2017-08-29 | Micron Technology, Inc. | Apparatuses and methods for converting a mask to an index |
| US10073635B2 (en) | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
| US10061590B2 (en) | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
| US10032493B2 (en) | 2015-01-07 | 2018-07-24 | Micron Technology, Inc. | Longest element length determination in memory |
| US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
| EP3254286B1 (en) | 2015-02-06 | 2019-09-11 | Micron Technology, INC. | Apparatuses and methods for parallel writing to multiple memory device locations |
| WO2016126472A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
| WO2016126478A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for memory device as a store for program instructions |
| WO2016144724A1 (en) | 2015-03-10 | 2016-09-15 | Micron Technology, Inc. | Apparatuses and methods for shift decisions |
| US9898253B2 (en) | 2015-03-11 | 2018-02-20 | Micron Technology, Inc. | Division operations on variable length elements in memory |
| US9741399B2 (en) | 2015-03-11 | 2017-08-22 | Micron Technology, Inc. | Data shift by elements of a vector in memory |
| WO2016144726A1 (en) | 2015-03-12 | 2016-09-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
| US10146537B2 (en) | 2015-03-13 | 2018-12-04 | Micron Technology, Inc. | Vector population count determination in memory |
| US10049054B2 (en) | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
| US10140104B2 (en) | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
| US9959923B2 (en) | 2015-04-16 | 2018-05-01 | Micron Technology, Inc. | Apparatuses and methods to reverse data stored in memory |
| US10073786B2 (en) | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
| US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
| US9921777B2 (en) | 2015-06-22 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for data transfer from sensing circuitry to a controller |
| US9996479B2 (en) | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
| US10282486B2 (en) | 2015-09-08 | 2019-05-07 | Micron Technology, Inc. | Methods and apparatuses for searching data stored in a memory array using a replicated data pattern |
| US9891842B2 (en) | 2015-09-08 | 2018-02-13 | Micron Technology, Inc. | Searching data in parallel using processor-in-memory devices |
| CN106598545B (zh) * | 2015-10-08 | 2020-04-14 | 上海兆芯集成电路有限公司 | 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体 |
| US9905276B2 (en) | 2015-12-21 | 2018-02-27 | Micron Technology, Inc. | Control of sensing components in association with performing operations |
| US9952925B2 (en) | 2016-01-06 | 2018-04-24 | Micron Technology, Inc. | Error code calculation on sensing circuitry |
| US11170294B2 (en) * | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
| US10048888B2 (en) | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
| US9892767B2 (en) | 2016-02-12 | 2018-02-13 | Micron Technology, Inc. | Data gathering in memory |
| US9971541B2 (en) | 2016-02-17 | 2018-05-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
| US9899070B2 (en) | 2016-02-19 | 2018-02-20 | Micron Technology, Inc. | Modified decode for corner turn |
| US10956439B2 (en) | 2016-02-19 | 2021-03-23 | Micron Technology, Inc. | Data transfer with a bit vector operation device |
| US9697876B1 (en) | 2016-03-01 | 2017-07-04 | Micron Technology, Inc. | Vertical bit vector shift in memory |
| US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
| US9997232B2 (en) | 2016-03-10 | 2018-06-12 | Micron Technology, Inc. | Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations |
| US10379772B2 (en) | 2016-03-16 | 2019-08-13 | Micron Technology, Inc. | Apparatuses and methods for operations using compressed and decompressed data |
| US9910637B2 (en) | 2016-03-17 | 2018-03-06 | Micron Technology, Inc. | Signed division in memory |
| US11074988B2 (en) | 2016-03-22 | 2021-07-27 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
| US10388393B2 (en) | 2016-03-22 | 2019-08-20 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
| US10120740B2 (en) | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
| US10977033B2 (en) | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
| US10474581B2 (en) | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
| US10430244B2 (en) | 2016-03-28 | 2019-10-01 | Micron Technology, Inc. | Apparatuses and methods to determine timing of operations |
| US10074416B2 (en) | 2016-03-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for data movement |
| US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
| US10607665B2 (en) | 2016-04-07 | 2020-03-31 | Micron Technology, Inc. | Span mask generation |
| US9818459B2 (en) | 2016-04-19 | 2017-11-14 | Micron Technology, Inc. | Invert operations using sensing circuitry |
| US10153008B2 (en) | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
| US9659605B1 (en) | 2016-04-20 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
| US10817802B2 (en) | 2016-05-07 | 2020-10-27 | Intel Corporation | Apparatus for hardware accelerated machine learning |
| US11120329B2 (en) | 2016-05-07 | 2021-09-14 | Intel Corporation | Multicast network and memory transfer optimizations for neural network hardware acceleration |
| US10042608B2 (en) | 2016-05-11 | 2018-08-07 | Micron Technology, Inc. | Signed division in memory |
| US9659610B1 (en) | 2016-05-18 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for shifting data |
| US10049707B2 (en) | 2016-06-03 | 2018-08-14 | Micron Technology, Inc. | Shifting data |
| US10387046B2 (en) | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
| US10037785B2 (en) | 2016-07-08 | 2018-07-31 | Micron Technology, Inc. | Scan chain operation in sensing circuitry |
| US10388360B2 (en) | 2016-07-19 | 2019-08-20 | Micron Technology, Inc. | Utilization of data stored in an edge section of an array |
| US10387299B2 (en) | 2016-07-20 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods for transferring data |
| US10733089B2 (en) | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
| US9767864B1 (en) | 2016-07-21 | 2017-09-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in a sensing circuitry element |
| US9972367B2 (en) | 2016-07-21 | 2018-05-15 | Micron Technology, Inc. | Shifting data in sensing circuitry |
| US10303632B2 (en) | 2016-07-26 | 2019-05-28 | Micron Technology, Inc. | Accessing status information |
| US10468087B2 (en) | 2016-07-28 | 2019-11-05 | Micron Technology, Inc. | Apparatuses and methods for operations in a self-refresh state |
| US9990181B2 (en) | 2016-08-03 | 2018-06-05 | Micron Technology, Inc. | Apparatuses and methods for random number generation |
| US11029951B2 (en) | 2016-08-15 | 2021-06-08 | Micron Technology, Inc. | Smallest or largest value element determination |
| US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
| US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
| US10387058B2 (en) | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
| US10014034B2 (en) | 2016-10-06 | 2018-07-03 | Micron Technology, Inc. | Shifting data in sensing circuitry |
| US10529409B2 (en) | 2016-10-13 | 2020-01-07 | Micron Technology, Inc. | Apparatuses and methods to perform logical operations using sensing circuitry |
| US9805772B1 (en) | 2016-10-20 | 2017-10-31 | Micron Technology, Inc. | Apparatuses and methods to selectively perform logical operations |
| US10373666B2 (en) | 2016-11-08 | 2019-08-06 | Micron Technology, Inc. | Apparatuses and methods for compute components formed over an array of memory cells |
| US10423353B2 (en) | 2016-11-11 | 2019-09-24 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
| US9761300B1 (en) | 2016-11-22 | 2017-09-12 | Micron Technology, Inc. | Data shift apparatuses and methods |
| US10586148B2 (en) * | 2016-12-31 | 2020-03-10 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with re-shapeable memory |
| US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
| US10268389B2 (en) | 2017-02-22 | 2019-04-23 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
| US10403352B2 (en) | 2017-02-22 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for compute in data path |
| US10838899B2 (en) | 2017-03-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for in-memory data switching networks |
| US10185674B2 (en) | 2017-03-22 | 2019-01-22 | Micron Technology, Inc. | Apparatus and methods for in data path compute operations |
| US11222260B2 (en) | 2017-03-22 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for operating neural networks |
| US10049721B1 (en) | 2017-03-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
| US10147467B2 (en) | 2017-04-17 | 2018-12-04 | Micron Technology, Inc. | Element value comparison in memory |
| US10043570B1 (en) | 2017-04-17 | 2018-08-07 | Micron Technology, Inc. | Signed element compare in memory |
| US9997212B1 (en) | 2017-04-24 | 2018-06-12 | Micron Technology, Inc. | Accessing data in memory |
| US10942843B2 (en) | 2017-04-25 | 2021-03-09 | Micron Technology, Inc. | Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes |
| US10236038B2 (en) | 2017-05-15 | 2019-03-19 | Micron Technology, Inc. | Bank to bank data transfer |
| US10068664B1 (en) | 2017-05-19 | 2018-09-04 | Micron Technology, Inc. | Column repair in memory |
| US10013197B1 (en) | 2017-06-01 | 2018-07-03 | Micron Technology, Inc. | Shift skip |
| US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
| US10152271B1 (en) | 2017-06-07 | 2018-12-11 | Micron Technology, Inc. | Data replication |
| US10318168B2 (en) | 2017-06-19 | 2019-06-11 | Micron Technology, Inc. | Apparatuses and methods for simultaneous in data path compute operations |
| TW202301125A (zh) | 2017-07-30 | 2023-01-01 | 埃拉德 希提 | 具有以記憶體為基礎的分散式處理器架構的記憶體晶片 |
| US10162005B1 (en) | 2017-08-09 | 2018-12-25 | Micron Technology, Inc. | Scan chain operations |
| US10534553B2 (en) | 2017-08-30 | 2020-01-14 | Micron Technology, Inc. | Memory array accessibility |
| US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
| US10741239B2 (en) | 2017-08-31 | 2020-08-11 | Micron Technology, Inc. | Processing in memory device including a row address strobe manager |
| US10346092B2 (en) | 2017-08-31 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations using timing circuitry |
| KR102395463B1 (ko) | 2017-09-27 | 2022-05-09 | 삼성전자주식회사 | 적층형 메모리 장치, 이를 포함하는 시스템 및 그 동작 방법 |
| US10409739B2 (en) | 2017-10-24 | 2019-09-10 | Micron Technology, Inc. | Command selection policy |
| US10522210B2 (en) | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
| US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
| US10614875B2 (en) | 2018-01-30 | 2020-04-07 | Micron Technology, Inc. | Logical operations using memory cells |
| US10437557B2 (en) | 2018-01-31 | 2019-10-08 | Micron Technology, Inc. | Determination of a match between data values stored by several arrays |
| US11194477B2 (en) | 2018-01-31 | 2021-12-07 | Micron Technology, Inc. | Determination of a match between data values stored by three or more arrays |
| CN108388446A (zh) | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
| US10725696B2 (en) | 2018-04-12 | 2020-07-28 | Micron Technology, Inc. | Command selection policy with read priority |
| US10440341B1 (en) | 2018-06-07 | 2019-10-08 | Micron Technology, Inc. | Image processor formed in an array of memory cells |
| CN108960418A (zh) * | 2018-08-08 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
| CN109147839B (zh) * | 2018-08-17 | 2020-07-07 | 湖南毂梁微电子有限公司 | 一种兼具伊辛计算和随机存储访问功能的装置及系统 |
| US10769071B2 (en) | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
| US11175915B2 (en) | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
| US10483978B1 (en) | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
| US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
| US12118056B2 (en) | 2019-05-03 | 2024-10-15 | Micron Technology, Inc. | Methods and apparatus for performing matrix transformations within a memory array |
| US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
| US11360768B2 (en) | 2019-08-14 | 2022-06-14 | Micron Technolgy, Inc. | Bit string operations in memory |
| US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
| US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
| US11054998B1 (en) * | 2019-12-12 | 2021-07-06 | Facebook, Inc. | High bandwidth memory system with distributed request broadcasting masters |
| US12136470B2 (en) * | 2020-01-07 | 2024-11-05 | SK Hynix Inc. | Processing-in-memory (PIM) system that changes between multiplication/accumulation (MAC) and memory modes and operating methods of the PIM system |
| US12386777B2 (en) | 2020-01-07 | 2025-08-12 | SK Hynix Inc. | Processing-in-memory (PIM) device to perform a memory access operation and an arithmetic operation in response to a command from a PIM controller and a high speed interface, respectively |
| US11908541B2 (en) | 2020-01-07 | 2024-02-20 | SK Hynix Inc. | Processing-in-memory (PIM) systems |
| US11227641B1 (en) | 2020-07-21 | 2022-01-18 | Micron Technology, Inc. | Arithmetic operations in memory |
Family Cites Families (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4122519A (en) * | 1976-12-14 | 1978-10-24 | Allen-Bradley Company | Data handling module for programmable controller |
| EP0136218A3 (en) * | 1983-08-29 | 1988-04-20 | FAIRCHILD CAMERA & INSTRUMENT CORPORATION | Multiple port pipelined processor |
| KR950000341B1 (ko) * | 1984-11-26 | 1995-01-13 | 가부시기가이샤 히다찌세이사꾸쇼 | 메모리를 내장한 반도체 집적회로 장치 |
| US5081573A (en) * | 1984-12-03 | 1992-01-14 | Floating Point Systems, Inc. | Parallel processing system |
| US4761733A (en) * | 1985-03-11 | 1988-08-02 | Celerity Computing | Direct-execution microprogrammable microprocessor system |
| JPH06103460B2 (ja) * | 1985-11-19 | 1994-12-14 | ソニー株式会社 | プログラム転送方式 |
| US4783732A (en) * | 1985-12-12 | 1988-11-08 | Itt Corporation | Two-wire/three-port RAM for cellular array processor |
| GB8606695D0 (en) * | 1986-03-18 | 1986-04-23 | Sinclair Res Ltd | Random chip addressing algorithm for wsi |
| US4809169A (en) * | 1986-04-23 | 1989-02-28 | Advanced Micro Devices, Inc. | Parallel, multiple coprocessor computer architecture having plural execution modes |
| CA1293819C (en) * | 1986-08-29 | 1991-12-31 | Thinking Machines Corporation | Very large scale computer |
| US4843540A (en) * | 1986-09-02 | 1989-06-27 | The Trustees Of Columbia University In The City Of New York | Parallel processing method |
| US5230079A (en) * | 1986-09-18 | 1993-07-20 | Digital Equipment Corporation | Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register |
| US4980850A (en) * | 1987-05-14 | 1990-12-25 | Digital Equipment Corporation | Automatic sizing memory system with multiplexed configuration signals at memory modules |
| US5081575A (en) * | 1987-11-06 | 1992-01-14 | Oryx Corporation | Highly parallel computer architecture employing crossbar switch with selectable pipeline delay |
| US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
| US5136691A (en) * | 1988-01-20 | 1992-08-04 | Advanced Micro Devices, Inc. | Methods and apparatus for caching interlock variables in an integrated cache memory |
| US4896265A (en) * | 1988-03-28 | 1990-01-23 | General Electric Company | Parallel broadcasting method and apparatus |
| WO1990000287A1 (en) * | 1988-07-01 | 1990-01-11 | Morton Steven G | Intelligent floating-point memory |
| US5113507A (en) * | 1988-10-20 | 1992-05-12 | Universities Space Research Association | Method and apparatus for a sparse distributed memory system |
| US5063521A (en) * | 1989-11-03 | 1991-11-05 | Motorola, Inc. | Neuram: neural network with ram |
-
1991
- 1991-03-01 EP EP91103080A patent/EP0446721B1/en not_active Expired - Lifetime
- 1991-03-01 DE DE69132495T patent/DE69132495T2/de not_active Expired - Fee Related
- 1991-03-15 JP JP3051143A patent/JPH06208501A/ja active Pending
- 1991-03-15 KR KR1019910004262A patent/KR100227988B1/ko not_active Expired - Fee Related
- 1991-03-16 CN CN91101759A patent/CN1027103C/zh not_active Expired - Fee Related
-
1995
- 1995-05-04 US US08/434,885 patent/US5751987A/en not_active Expired - Lifetime
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011060279A (ja) * | 2009-09-11 | 2011-03-24 | Sean Eilert | 自律的メモリアーキテクチャー |
| US9779057B2 (en) | 2009-09-11 | 2017-10-03 | Micron Technology, Inc. | Autonomous memory architecture |
| US10769097B2 (en) | 2009-09-11 | 2020-09-08 | Micron Technologies, Inc. | Autonomous memory architecture |
| US11586577B2 (en) | 2009-09-11 | 2023-02-21 | Micron Technology, Inc. | Autonomous memory architecture |
| US10003675B2 (en) | 2013-12-02 | 2018-06-19 | Micron Technology, Inc. | Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data |
| US10778815B2 (en) | 2013-12-02 | 2020-09-15 | Micron Technology, Inc. | Methods and systems for parsing and executing instructions to retrieve data using autonomous memory |
| JP2020042479A (ja) * | 2018-09-10 | 2020-03-19 | 東京計器株式会社 | リコンフィギュラブルプロセッサ |
| US12367025B2 (en) | 2021-10-26 | 2025-07-22 | Preferred Networks, Inc. | Compiler, generation method, chip, and execution method |
Also Published As
| Publication number | Publication date |
|---|---|
| DE69132495D1 (de) | 2001-01-25 |
| EP0446721B1 (en) | 2000-12-20 |
| EP0446721A3 (en) | 1992-05-06 |
| EP0446721A2 (en) | 1991-09-18 |
| US5751987A (en) | 1998-05-12 |
| CN1027103C (zh) | 1994-12-21 |
| KR100227988B1 (ko) | 1999-11-01 |
| CN1056356A (zh) | 1991-11-20 |
| DE69132495T2 (de) | 2001-06-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH06208501A (ja) | 集積回路 | |
| KR100415417B1 (ko) | 이미지-처리프로세서 | |
| US4823259A (en) | High speed buffer store arrangement for quick wide transfer of data | |
| US4654781A (en) | Byte addressable memory for variable length instructions and data | |
| US4467409A (en) | Flexible computer architecture using arrays of standardized microprocessors customized for pipeline and parallel operations | |
| US4835729A (en) | Single instruction multiple data (SIMD) cellular array processing apparatus with on-board RAM and address generator apparatus | |
| US5581777A (en) | Parallel processor memory transfer system using parallel transfers between processors and staging registers and sequential transfers between staging registers and memory | |
| US4622632A (en) | Data processing system having a pyramidal array of processors | |
| US7155581B2 (en) | Method and apparatus for an energy efficient operation of multiple processors in a memory | |
| US6088783A (en) | DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word | |
| US5872987A (en) | Massively parallel computer including auxiliary vector processor | |
| US7793038B2 (en) | System and method for programmable bank selection for banked memory subsystems | |
| US4831519A (en) | Cellular array processor with variable nesting depth vector control by selective enabling of left and right neighboring processor cells | |
| US7793075B2 (en) | Active memory command engine and method | |
| US4783782A (en) | Manufacturing test data storage apparatus for dynamically reconfigurable cellular array processor chip | |
| US4916657A (en) | Single instruction multiple data (SIMD) cellular array processing apparatus employing multiple state logic for coupling to data buses | |
| EP0234146A2 (en) | Cellular array processing apparatus employing dynamically reconfigurable vector bit slices | |
| US3943494A (en) | Distributed execution processor | |
| US4783732A (en) | Two-wire/three-port RAM for cellular array processor | |
| JPH05502125A (ja) | 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法 | |
| JPH06103599B2 (ja) | 半導体集積回路装置 | |
| JPH0622034B2 (ja) | マルチポートベクトルレジスタファイル | |
| JPH076080A (ja) | フィールド・プログラマブル分散処理メモリ | |
| US5940625A (en) | Density dependent vector mask operation control apparatus and method | |
| EP0166192B1 (en) | High-speed buffer store arrangement for fast transfer of data |