JPH06266748A - ベクトルロードストア回路 - Google Patents

ベクトルロードストア回路

Info

Publication number
JPH06266748A
JPH06266748A JP5255893A JP5255893A JPH06266748A JP H06266748 A JPH06266748 A JP H06266748A JP 5255893 A JP5255893 A JP 5255893A JP 5255893 A JP5255893 A JP 5255893A JP H06266748 A JPH06266748 A JP H06266748A
Authority
JP
Japan
Prior art keywords
vector
access
memory
length
access request
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
Application number
JP5255893A
Other languages
English (en)
Inventor
Noboru Tanabe
昇 田邊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP5255893A priority Critical patent/JPH06266748A/ja
Publication of JPH06266748A publication Critical patent/JPH06266748A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 高性能で安価な主記憶を実現可能とするベク
トルロードストア回路を提供する。 【構成】 メモリへのアクセスの際のブロック長を保持
するアクセスブロック長設定部25と、ベクトルロード
命令またはベクトルストア命令起動時に先頭アドレスを
現在のメモリアクセス要求アドレスとして記憶するアド
レス記憶部29と、その命令起動時にベクトル長を記憶
する残りベクトル長記憶部31と、この記憶部31と設
定部25とに記憶されるベクトル長を比較し小さい方を
アクセス要求ブロック長とし、これに対応するバイト数
をアドレス記憶部に記憶される値に加算したものを次の
メモリアクセス要求アドレスとして記憶部29に記憶
し、記憶部31の値からアクセス要求ブロック長に対応
する語数を減算したものを記憶部31に記憶し、主記憶
に対して連続ブロックアクセス要求を発生する制御部3
5とを具備する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、主にDRAMにより構
成される主記憶を持つ超並列型スーパーコンピュータの
要素プロセッサや低価格な科学技術計算アクセラレータ
等に用いられるベクトルプロセッサのベクトルロードス
トア回路に関する。
【0002】
【従来の技術】スーパーコンピュータに代表される従来
のベクトルプロセッサは、ベクトル演算器の能力に見合
ったメモリバンド幅を維持するために、ビット単価が高
く、集積度が低い高速SRAMをインタリーブ構成にし
て主記憶を構成する等していた。
【0003】すなわち、小数のプロセッサにより構成さ
れる従来のスーパーコンピュータでは、このような高価
となる構成を主記憶に用いることは可能である。しかし
ながら、プロセッサ数を数千、数万のオーダーで接続す
る超並列型スーパーコンピュータでは、プロセッサの台
数を増加させることによって比較的、容易に演算能力を
高めることができるものの、この演算能力に見合ったメ
モリバンド幅を維持するために従来のような高速SRA
Mによる主記憶を採用することは価格面から困難であ
る。従って、超並列計算機のように価格性能比の高さが
要求されるシステムでは、主記憶はDRAMを主体にせ
ざるを得ない。
【0004】一方、近年のマイクロプロセッサの急速な
性能向上により、マイクロプロセッサの演算能力は、現
時点でも初期のスーパーコンピュータ並みの100〜2
00MFLOPS程度の演算能力を1チップのCMOS
のVLSIで構成することが実現可能になってきてい
る。この性能をアクセスの局所性の薄い科学技術計算に
おいてキャッシュメモリの容量に関わらずに継続的に維
持するために、1〜2GB/s程度のメモリバンド幅が
必要である。
【0005】しかし、従来型の汎用DRAMは、200
ns程度のサイクルタイムを有しており、そのため従来
型の汎用DRAMを用いたのでは、64bit幅で5〜
10nsサイクルのバスを持つ主記憶にインタリーブ構
成を導入しても、ウェイ数が20〜40となってしま
う。また、チップ数が8bit幅のDRAMを用いても
160〜320チップが必要となり、超並列計算機の要
素プロセッサの主記憶に採用するためには大きさと価格
での実現が困難であった。
【0006】
【発明が解決しようとする課題】上述したように、超並
列計算機の要素プロセッサに採用しうる大きさで且つ低
価格で提供され、高性能な演算器に適合するメモリバン
ド幅を持つ主記憶を構成することが困難であった。
【0007】本発明は、上記課題に鑑みてなされたもの
で、高性能にして安価な主記憶を実現可能とするベクト
ルロードストア回路を提供することを目的とする。
【0008】
【課題を解決するための手段】第1の発明では、連続ブ
ロックアクセスの際に高速にアクセスが可能なRAMに
より構成される主記憶に接続されるベクトルプロセッサ
のベクトルロードストア回路であって、メモリへのアク
セスの際のブロック長を保持するアクセスブロック長設
定部と、ベクトルロード命令またはベクトルストア命令
起動時に先頭アドレスを現在のメモリアクセス要求アド
レスとして記憶するアドレス記憶部と、ベクトルロード
命令またはベクトルストア命令起動時にベクトル長を記
憶する残りベクトル長記憶部と、この残りベクトル長記
憶部に記憶されるベクルト長とアクセスブロック長設定
部に記憶されるベクトル長とを比較して値の小さいブロ
ック長をアクセス要求ブロック長とすると共に、このア
クセス要求ブロック長に対応するバイト数をアドレス記
憶部に記憶される値に加算したものを次のメモリアクセ
ス要求アドレスとしてアドレス記憶部に記憶し、残りベ
クトル長記憶部の値からアクセス要求ブロック長に対応
する語数を減算したものを残りベクトル長記憶部に記憶
し、前記主記憶に対して連続ブロックアクセス要求を発
生する制御部とを具備することを要旨とする。
【0009】第2の発明では、FIFOに保持されるデ
ータ数またはFIFOの空きデータ数を保持するアップ
ダウンカウンタをFIFO型ベクトルレジスタに具備す
ることを要旨とする。
【0010】第3の発明では、FIFO型ベクトルレジ
スタを具備するベクトルプロセッサのベクトルロードス
トア回路において、逆順ロードストア動作時に使用され
るラストインファーストアウト(LIFO)バッファを
具備することを要旨とする。
【0011】第4の発明は、同期型DRAMにより構成
される主記憶に接続されるベクトルプロセッサのベクト
ルロードストア回路であって、所定のベクトルロードス
トア命令を実行する際に、現在のメモリアクセス要求ア
ドレスが前回のメモリアクセス要求アドレスと前記主記
憶のページが同一か否かを判定する判定手段と、この判
定手段で同一ページであると判定されたときにはページ
モードによるアクセスを実行するページモード実行手段
とを具備することを特徴とすることを要旨とする。
【0012】また、望ましくは前記ベクトルロードスト
ア回路は、Rambus型DRAMインターフェースを
具備するものである。
【0013】また、望ましくは前記ベクトルロードスト
ア回路は、同期型DRAMインターフェースを具備する
ものである。
【0014】また、望ましくは、連続ブロックアクセス
時に高速なアクセスが可能なRAMによる構成される主
記憶に接続されるベクトルプロセッサのベクトルロード
ストア回路は、複数のアクセスブロック長設定部と、複
数のアドレス記憶部と、複数の残りベクトル長記憶部を
具備し、複数のベクトルロードストア命令を同時に起動
状態にさせ、加算や減算や比較を行う資源をこれらの複
数の命令の実行のために時分割的に利用する制御部を具
備するものである。
【0015】また、望ましくは、ベクトルプロセッサが
FIFO型のベクトルレジスタを具備し、ベクトルスト
ア命令を実行する時には、ストアすべきFIFO型ベク
トルレジスタに保持されているデータ数とアクセスブロ
ック長設定部の値の小さいほうをアクセス要求ブロック
長とする制御部を具備するものである。
【0016】また、望ましくは前記ベクトルロードスト
ア回路は、アクセスブロック長記憶部の値がストアすべ
きFIFO型ベクトルレジスタに保持されているデータ
数より大きく、残りベクトル長より小さい場合に、所定
時間経過まで、この状態が続いたならばストアすべきF
IFO型ベクトルレジスタに保持されているデータ数を
アクセス要求ブロック長とする制御部を具備するもので
ある。
【0017】さらに、望ましくは、ベクトルプロセッサ
がFIFO型のベクトルレジスタを具備し、ベクトルロ
ード命令を実行する時には、ロードすべきFIFO型ベ
クトルレジスタの空きデータ数と残りベクトル長とアク
セスブロック長記憶部の値の小さいほうをアクセス要求
ブロック長とする制御部を具備するものである。
【0018】
【作用】第1の発明では、連続ブロックアクセス時に高
速なアクセスが可能なDRAMにより主記憶を構成す
る。またRambus型DRAMインターフェースを用
いる場合には、このDRAMはRambus型DRAM
とし、この場合はアクセス遅延時間に比べてかなり高い
転送周波数のピン数の少ないパスを用いて全てのアクセ
スをパケット形式で行うために、アクセスブロック長が
長いほど実質メモリバンド幅が向上し、ワード単位での
ランダムアクセスは実質メモリバンド幅を大きく落と
す。
【0019】第1の発明に同期型DRAMインターフェ
ースを用いる場合には、使用するDRAMは同期型DR
AMとし、この場合はRambusに比較すると遅いが
比較的高い周波数のクロック信号に同期したピン数の多
いバスを用い、メモリチップ内に2つのバンクを持ち、
連続ブロックをアクセスする場合はバンクコンフリクト
がなければクロック周波数に比例したメモリバンド幅が
得られる。
【0020】つまり2つのバンクを交互にアクセスして
いれば高いメモリバンド幅が得られるが、間断無くバス
を利用するためには別バンクのプリチャージ期間のほう
が連続アクセスブロック長(ラップ長)×転送サイクル
時間より短くなければならず、転送クロック周波数が高
く、プリチャージ時間が長いほど、連続アクセスブロッ
ク長が長くなければ効率が悪くなる。
【0021】またバンクコンフリクトが起こるようなア
クセスパターンだった場合ブロックアクセス毎にプリチ
ャージ時間に相当する待ちサイクルが挿入されるため
に、連続アクセスブロック長が長いほど実質メモリバン
ド幅に対するバンクコンフリクトの影響を薄めることが
できる。
【0022】Rambus型DRAMや同期型DRAM
のいずれの新型DRAMを用いる場合であっても、連続
アクセスブロック長を長くすることが実質メモリバンド
幅を向上させるためには有効で、第1の発明はこれらの
デバイスの性質を利用する。
【0023】ベクトルプロセッサ内部にはベクトルレジ
スタがベクトル演算器に接続されており、本発明のベク
トルロードストア回路は連続ブロックアクセス時に高速
なアクセスが可能なDRAMにより構成される主記憶と
ベクトルレジスタの間のデータ転送を行う。
【0024】ベクトルロード命令またはベクトルストア
命令起動時にベクトル長と先頭アドレスがそれぞれ残り
ベクトル長記憶部とアドレス記憶部に設定される。さら
に第1の発明ではアクセスブロック長設定部があって、
デフォルトのアクセスブロック長または命令などにより
設定されるアクセスブロック長を保持する。
【0025】メモリへのアクセスは昇順に連続アクセス
が行われるようなアクセスステップがベクトルロード命
令やベクトルストア命令によって指示されたならば、基
本的にはメモリへのアクセスはアクセスブロック長設定
部の値で示されたブロック単位で行われる。つまりアド
レス記憶部に記憶されているアドレスから始まるアクセ
スブロック長設定部の値で示されるブロック長のデータ
のアクセスをメモリインタフェース部に要求する。
【0026】実際には残りベクトル長のほうがアクセス
ブロック長設定部の値より小さくなる場合があるので、
命令により指定された以上のアクセスを抑制するため
に、残りベクトル長とアクセスブロック長設定部の値を
比較器により比較して小さいほうをアクセス要求ブロッ
ク長とする。
【0027】このメモリインタフェース部がRambu
sインタフェースであるときにはアクセス要求パケット
生成し、Rambus型DRAM(R−DRAM)にR
ambusを経由して送信する。通常はアクセス要求ブ
ロック長はアクセスブロック長設定部の値となり、バイ
トやワード単位の細かいアクセスではなくベクトルレジ
スタの容量より小さな比較的大きな値を設定する事がで
きるので、Rambusの高い転送速度を生かしきるこ
とが可能となる。
【0028】このメモリインタフェース部が同期型DR
AMインタフェースであるときには、必要があれば同期
型DRAM(S−DRAM)内部のモードレジスタに対
してラップ長を設定しなおし、所定の連続アクセスシー
ケンスを実行する。
【0029】通常はアクセス要求ブロック長はアクセス
ブロック長設定部の値となり、この値はバイトやワード
単位の細かいアクセスではなくベクトルレジスタの容量
より小さな比較的大きな値を設定する事ができるので、
同期型DRAMに設定できるラップ長は現時点ではこれ
より小さいのが一般的なので、同期型DRAMの高い転
送速度の生かしきることが可能となる。
【0030】ひとかたまりのメモリアクセス要求が実行
されると、次のメモリアクセスのための先頭アドレスが
加算器により、アクセスブロック長設定部の値をアドレ
ス記憶部の値に加算することにより求められアドレス記
憶部に記憶される。さらに、減算器により、残りベクト
ル長記憶部の値からアクセスブロック長設定部の値を減
算して次の残りベクトル長が求められ残りベクトル長記
憶部に記憶される。
【0031】連続ブロックアクセス時に高速なアクセス
が可能なDRAMにより構成される主記憶に接続される
ベクトルプロセッサのベクトルロードストア回路におい
て、複数のアクセスブロック長設定部と、複数のアドレ
ス記憶部と、複数の残りベクトル長記憶部を具備し、複
数のベクトルロードストア命令を同時に起動状態にさ
せ、加算や減算や比較を行う資源をこれらの複数の命令
の実行のために時分割的に利用する制御部を具備した場
合には、メモリアクセスをブロック化することにより、
一つのベクトルロードストア命令に対応するアドレス計
算や残りベクトル長計算を毎サイクルアドレスを出力す
るように行う必要が無くなっている。複数のアクセスブ
ロック長設定部と、複数のアドレス記憶部と、複数の残
りベクトル長記憶部には複数の命令の実行状況(コンテ
クスト)が記憶されており、これらを用いることによっ
て単一の命令に演算器を占有させる必要性がなくなるの
で、加算や減算や比較を行う資源を複数の命令の実行の
ために時分割的に利用可能となる。こうしてハードウェ
ア量を削減し、ハードウェアの利用効率を高めることが
可能となる。
【0032】ベクトルプロセッサがFIFO型のベクト
ルレジスタを具備している場合には、ベクトルストア命
令を実行する時には、ストアすべきFIFO型ベクトル
レジスタに保持されているデータ数とアクセスブロック
長設定部の値の小さいほうをアクセス要求ブロック長と
する制御部を具備する。つまり、FIFO型のベクトル
レジスタを具備したベクトルプロセッサの場合、ベクト
ルレジスタからベクトルストア命令で主記憶にデータを
書き出す際に、ベクトルレジスタに命令で指定されたベ
クトル長のデータが既に計算されて保持されていなくて
も多少のデータが既に保持されていれば命令の実行が開
始される。
【0033】このためFIFO型ベクトルレジスタに保
持されているデータ数よりアクセスブロック長設定部の
値が多い場合は、アクセスブロック長設定部の値をアク
セス要求ブロック長とするアクセス要求をメモリインタ
フェースに発行しても実際に書き込みが起こるときまで
に要求した個数の書き込みデータが用意できない可能性
が生じる。
【0034】特にRambusインタフェースを用いる
場合はウェイト状態を書き込み要求パケットの送信中に
挿入することは不可能なので、このような状況は回避し
なければならない。また同期型DRAMインタフェース
を用いる場合ではメモリインタフェースがウェイト状態
となり、他のメモリアクセス要求の実行までが待たされ
てしまうのでバスの利用効率が低下する。
【0035】そこでメモリインタフェースへの要求を出
す際に準備可能な書き込みデータ数に基づいてアクセス
要求ブロック長を生成することによりこのような問題点
を回避することが可能となる。
【0036】また、ベクトルロードストア回路に具備さ
れる制御部は、アクセスブロック長設定部の値がストア
すべきFIFO型ベクトルレジスタに保持されているデ
ータ数より大きく、残りベクトル長より小さい場合に、
所定時間経過までこの状態が続いたならばストアすべき
FIFO型ベクトルレジスタに保持されているデータ数
をアクセス要求ブロック長とする。
【0037】つまり、ストアすべきFIFO型ベクトル
レジスタ上のデータ不足を検出した際に、アクセスブロ
ック長の決定を所定の時間だけ遅らせる。データ不足の
検出時も先行する別のメモリアクセス命令のためにメモ
リバスが使用中である場合もあるために、バスが開放さ
れるまでは次のメモリアクセスはできないので待つ必要
があり、この待ち時間の間にFIFO上のストアデータ
が増える可能性がある。ゆえにメモリアクセスブロック
長が長くなりやすくなる。
【0038】しかしアクセスブロック長の決定をFIF
Oに十分にデータが貯まるまでむやみに遅らせるように
してしまうと、なかなかデータが貯まらずにバスが空い
てしまう可能性が高まる。そこで、所定のタイムアウト
を設けることでそのような欠点が緩和される。
【0039】FIFO型のベクトルレジスタはベクトル
演算器側が十分な速度でFIFO型ベクトルレジスタ上
のデータを使った演算を実行している間は無限長のベク
トルレジスタに似た動作モデルを与えるが、現実的には
何らかの要因で演算が一時停止しつつメモリからのロー
ドが行われる場合もありうるので、有限長のFIFOレ
ジスタの空き容量が減少し、この空き容量より大きなブ
ロック長のデータ読みだし要求をメモリインタフェース
に出してしまうと、メモリからの応答データが受けきれ
なくなる可能性がある。
【0040】特にメモリインタフェースがRambus
であったならば、読みだし応答パケット受信中にウェイ
トサイクルを挿入することはできないので、FIFO型
ベクトルレジスタに受けきれないほどのデータを要求す
ることは避けなければならない。
【0041】またメモリインタフェースが同期型DRA
Mインタフェースであったとしても、ウェイトサイクル
を挿入することで誤操作は回避できるが、ロードすべき
FIFO型ベクトルレジスタのデータを演算器側で消費
してくれない限り、メモリバスのウェイト状態の解消が
なされないのでデッドロック状態に陥る可能性がある。
【0042】このような問題点の解決のためにベクトル
プロセッサがFIFO型のベクトルレジスタを具備し、
ベクトルロード命令を実行する時には、ロードすべきF
IFO型ベクトルレジスタの空きデータ数と残りベクト
ル長とアクセスブロック長設定部の値の小さいほうをア
クセス要求ブロック長とする制御部を具備する。
【0043】このようにするとFIFO型ベクトルレジ
スタの空き容量がアクセスブロック長設定部の値より少
ない状態であったとしても、受けきれないほどのデータ
読みだし要求を出さずに、その時点で確実に受信できる
要求を出すことが可能となる。
【0044】また、FIFOに保持されるデータ数また
はFIFOの空きデータ数を保持するアップダウンカウ
ンタをFIFO型ベクトルレジスタに具備する。このと
き、初期値として0またはFIFO容量語数を設定し、
FIFOへの読み書きの際にカウンタをアップまたはダ
ウンさせることによってFIFOの保持データ数情報を
カウント値が指し示す。これによってソフトウェアの介
在を受けることなく動的に変動するFIFOの保持デー
タ数情報を高速に得ることが可能になる。
【0045】FIFO型ベクトルレジスタを具備するベ
クトルプロセッサのベクトルロードストア回路におい
て、逆順ロードストア動作時に使用されるライトインフ
ァーストアウト(LIFO)バッファを具備する。
【0046】ベクトルデータのロードやストアはプログ
ラムによっては配列のインデックスの降順にアクセスし
なければならないことがあるので、メモリアドレスが一
語分のアドレスステップにより減少するワードアクセス
要求を発生しなければならず、特にメモリインタフェー
スとしてRambusを採用する場合はアドレスが上昇
する順でしかデータがアクセスできないので、アクセス
ブロック長が一語となってしまって実質的メモリバンド
幅が昇順連続アクセスの場合と比較して激減する。
【0047】同期型DRAMの場合は高速ページモード
が利用できるので、ワード単位でのランダムアクセスは
行アドレスが一致するページ内である限り実質メモリバ
ンド幅がピークの半分から数分の1に落ちる程度で済む
が、昇順の連続ブロックアクセス時に比べると性能の低
下は避けられない。
【0048】メモリに対するアクセス要求は連続ブロッ
クアクセス要求を出しておいて、ロード時ならば昇順に
データ語がメモリより読み出されたものをLIFOバッ
ファで一旦受け、LIFOからの読み出しは後で書かれ
たデータ語が先に読み出されるので、これをベクトルレ
ジスタに転送すればベクトルレジスタから見れば逆順に
ロードされたように見える。ゆえにもしベクトルレジス
タがFIFO型であったとしても、昇順の連続ブロック
アクセスによって高速に逆順ベクトルロードを実行可能
となる。
【0049】ベクトルロードストア回路において、アク
セスステップ設定部に設定された値が連続アクセスでは
ない等間隔アクセスをするベクトルロードストア命令
や、リストベクトルロードストア命令や、逆順連続アク
セスを行うベクトルロードストア命令を実行する場合の
高速化を提供する。
【0050】同期型DRAMにおいて連続したアドレス
を昇順にアクセスする場合は設定されたラップ長単位の
バースト転送ができるため高速なメモリバンド幅を実現
できるが、プログラムによっては必ずしも連続したアド
レスに格納されたデータへのロードストアではなく、多
次元配列のあるインデックスによるアクセスや、リスト
ベクトルをインデックスとする配列アクセスのようにあ
る程度のアクセス局所性は存在するが連続ではないアク
セスが必要になることがあり、バースト転送が使えな
い。ここで最も単純な行アドレス、列アドレスとも指定
するワード単位のランダムアクセスをするならばバース
ト転送におけるメモリバンド幅の十分の一程度に低下し
てしまう。
【0051】そこで、アクセス要求ブロック長は1語分
としても、現在のメモリアクセス要求アドレスが前回の
メモリアクセス要求アドレスと同期型DRAMのページ
が異なるか否かを判定するページ切り替わり判定部を用
いてページモードによるランダムアクセスシーケンスを
実行する同期型DRAMインタフェースを具備すること
により、現在のメモリアクセス要求アドレスが前回のメ
モリアクセス要求アドレスと同期型DRAMのページが
同一ならば、列アドレスのみを入力する高速なページモ
ードによりアクセスする。
【0052】現在のメモリアクセス要求アドレスが前回
のメモリアクセス要求アドレスと同期型DRAMのペー
ジが異なる場合は行アドレスから入力するランダムアク
セスになるが、特にステップ長の小さな等間隔アクセス
などの場合は次回のメモリアクセスが同一ページに当た
る確率が高いので大半がページアクセスモードでアクセ
スされる。ページアクセスモードでアクセスされる場合
のメモリバンド幅はバースト転送時の半分から数分の位
置に落ちる程度で実現され、単純なランダムアクセスを
行うより数倍の高速化が可能となる。
【0053】
【実施例】以下、本発明に係る一実施例を図面を参照し
て説明する。図1は本発明に係るベクトルロードストア
回路を具備するプロセッサの構成を示したブロック図で
ある。
【0054】本実施例のプロセッサは、命令バッファ1
1から供給される命令を解読しプロセッサ内の各部に制
御信号を送る命令制御部13の制御の元に、ベクトルレ
ジスタ23に接続されるベクトル演算器21、スカラレ
ジスタ15に接続されるスカラ演算器17とアクセスブ
ロック長設定部25とアドレス記憶部29と残りベクト
ル長記憶部31とアクセスステップ記憶部27とを具備
する。
【0055】さらにアクセスブロック長設定部25とア
ドレス記憶部29と残りベクトル長記憶部31の値とア
クセスステップ記憶部27を入力としてアクセス要求開
始アドレスおよびアクセス要求ブロック長をメモリバス
インタフェース37に出力し、そのアクセスに後続する
メモリアクセスのアドレスと残りベクトル長を出力する
連続ブロックアクセス要求生成部35が具備される。
【0056】次にこれらの動作について説明する。ベク
トル命令やスカラ命令を含む命令列がメモリ上にロード
されており、命令制御部13はメモリから命令列を命令
バッファ11に読み込み、命令バッファ11から命令を
フェッチしてこれをデコードしてプロセッサ内部の各部
への制御信号を発生させる。フェッチした命令がスカラ
命令であった場合はスカラレジスタ15上のデータに対
するスカラ演算器17による演算や、メモリまたは内部
レジスタ間の転送や、分岐処理などが行われる。
【0057】フェッチした命令がベクトル命令であった
場合は、ベクトル長レジスタ33上のデータをその命令
に対するベクトル長とし、少なくとも1つのベクトルレ
ジスタ23上のデータに対するベクトル演算器21によ
る演算や、メモリとベクトルレジスタ間のデータのロー
ドストアが行われる。
【0058】つまりベクトル命令の起動の前には、ベク
トル長レジスタ33にベクトル長がセットされている必
要があり、起動時にはベクトル長レジスタ33から残り
ベクトル長記憶部31にその値が転送される。残りベク
トル長記憶部31には同時に実行可能なベクトル命令の
個数のベクトル長データを記憶することができる記憶容
量がある。
【0059】フェッチした命令がベクトルロード命令ま
たはベクトルストア命令であった場合は、命令で指定さ
れるスカラレジスタ15上のデータがアドレス記憶部2
9やアクセスステップ記憶部27に転送され、アドレス
記憶部29の値はロードまたはストアを行う場所のメモ
リの先頭アドレスとして用いられる。また、アクセスス
テップ記憶部27の値はアクセスする語の間隔が何語で
あるかを意味し、値の正負によって昇順か降順かが指定
される。
【0060】アドレス記憶部29およびアクセスステッ
プ記憶部27には同時に実行可能なベクトルロードスト
ア命令の個数のアドレスデータおよびアクセスステップ
を記憶することができる記憶容量がある。
【0061】ベクトルレジスタ23は通常、商用ベクト
ル型スーパーコンピュータではbit幅が64bit、
本数が8〜32、容量が64〜512語程度のものが用
いられる。ベクトルレジスタ23をFIFOとして実際
の容量を減らしつつ、ソフトウェアモデルの上からはあ
たかも無限長のベクトルレジスタとして見えるようなも
のも考えられる。本実施例は通常のベクトルレジスタを
使う場合でも、FIFO型のベクトルレジスタを用いる
場合でも、どちらでも適用可能である。
【0062】従来のベクトルプロセッサにおけるロード
ストアの場合は、ロードストアパイプラインによって一
語分ずつ実効アドレスを計算して1クロックごとにアド
レスが出力される。つまりワードアクセスを行っている
ためにアドレス計算の負荷が重い。つまりハードウェア
コストが高い。
【0063】1語は64bitの浮動小数を用いる場合
は8バイトであり、連続アクセスのベクトルロードスト
アを行う場合にはアドレスに8ずつ加算したものを連続
して毎クロック出力することになる。
【0064】しかし、ベクトルデータの各要素間の依存
関係がないことが保証されている場合にのみベクトル命
令は用いられるので、連続アクセスのベクトルロードス
トアを行う場合には、ベクトルレジスタ23の容量と残
りベクトル長を越えない語数のブロックデータをベクト
ルレジスタ23に一続きのバーストメモリアクセスによ
りロードすること、およびベクトルレジスタ23に格納
されている有効なデータ全てを一続きのバーストメモリ
アクセスによりメモリにストアすることは原理的に可能
である。
【0065】つまり本実施例では連続アクセスのベクト
ルロードストアを行う場合には、毎クロックに8ずつ加
算されたアドレスを発生してワードアクセスをするので
はなく、ベクトルレジスタ23が送受信可能な大きさの
ブロックデータを示す先頭アドレスとブロック長の組を
発生させ、メモリに対してブロックアクセスにより高速
アクセスを実現する。
【0066】アクセスのブロック長は、原則的にはアク
セスブロック長設定部25に設定された値が用いられ
る。本実施例ではこのアクセスブロック長設定部25が
スカラデータバスに接続されていてベクトルレジスタ2
3の容量を越えない範囲で可変になっており、接続する
メモリの特性やプログラムの特性によって適切な値に設
定できるようになっている。なお、本実施例ではこの値
が可変であるが、本発明は可変であるものに限定される
わけではなく固定であっても良い。
【0067】残りベクトル長記憶部31にはベクトルロ
ードストア命令の完了までにロードまたはストアしなけ
ればならないベクトルデータの語数が保持される。つま
り連続ブロックアクセス要求生成部35は、残りベクト
ル長記憶部31の値をメモリバスインタフェースに発行
した要求ブロック長に対応する語数を減じたもので更新
する。
【0068】アクセスのブロック長は原則的には、アク
セスブロック長設定部25に設定された値が用いられる
が、残りベクトル長がアクセスブロック長設定部25に
設定された値より小さくなった場合には、アクセスのブ
ロック長として原則的には残りベクトル長のほうを採用
する。
【0069】残りベクトル長がアクセスブロック長設定
部25に設定された値より小さくなった場合でも、アク
セスのブロック長として残りベクトル長が採用されない
場合は、ベクトルレジスタの種類によっては起こりうる
が、このことは後述する。
【0070】図2は第1の実施例における、連続ブロッ
クアクセス要求生成部35の構成例を示した図である。
旧残りベクトル長とアクセスブロック長設定値を比較す
る比較器351と、その結果を受けて大きくないほうを
アクセス要求ブロック語数として選択するマルチプレク
サ353と、旧残りベクトル長からアクセス要求ブロッ
ク語数を減じ新残りベクトル長を出力する減算器355
と、アクセス要求ブロック語数とオペランドの一語のバ
イト数からアクセス要求ブロック長(バイト数)を出力
するシフタ357と、アクセス要求ブロック長と旧先頭
アドレスから新先頭アドレスを出力する加算器361、
新残りベクトル長が零であるかを判定し、最終アクセス
要求信号を出力する零判定回路359から構成される。
【0071】図2では比較器351、減算器355、加
算器361、シフタ357、零判定回路359は、それ
ぞれ別のハードウェア資源として描かれているが、性能
的にバランスがとれるのであれば、より多機能なALU
タイプの演算器を時分割的に用いてもよい。
【0072】上記のような連続ブロックアクセス要求生
成部35から出力される新残りベクトル長は残りベクト
ル長記憶部31に書き戻され、新先頭アドレスはアドレ
ス記憶部29に書き戻され、アクセス要求アドレスとア
クセス要求ブロック長はメモリバスインタフェース37
へと導かれる。
【0073】メモリバスインタフェース37はメモリバ
スを介して、連続アクセスが高速なメモリ39に接続さ
れる。この連続アクセスが高速なメモリとは、Ramb
us型DRAMや、同期型DRAMや、高速ページモー
ド付きDRAMや、ニブルモード付きDRAMなどのメ
モリチップやインタリーブ構成されたメモリシステムの
ように、連続するアドレスのデータをアクセスすること
により、DRAMのプリチャージタイムがワードごとに
かかってしまうことを防ぐ等することによって転送バン
ド幅の向上がするメモリである。
【0074】特にRambus型DRAMを用いた場
合、アクセス遅延時間に比べてかなり高い転送周波数の
ピン数の少ないバスを用いて全てのアクセスをパケット
形式で行うために、アクセスブロック長が長いほど実質
メモリバンド幅が向上し、ワード単位でのランダムアク
セスは実質メモリバンド幅を大きく落とす。
【0075】具体的には、例えばある典型的なRamb
us型DRAMのメモリアクセス遅延時間はセンスアン
プキャッシュミスヒット時には220ns、センスアン
プキャッシュヒット時には48nsで、転送サイクルタ
イムは2nsで、最大ブロック長256バイト、エラー
訂正コード以外のデータとして使用するバスのbit幅
8bitである。
【0076】Rambusにおいてブロック長が小さい
場合の性能の例を示すために、図3にRambusで4
バイトデータのランダムアクセスを行った場合のタイム
チャートを示す。センスアンプキャッシュミスヒット時
には、 220ns+4×2ns=228ns で4バイトの転送が行われるので17.5MB/sの転
送バンド幅しか得られない。センスアンプキャッシュが
ヒットしても 48ns+4×2ns=56ns で4バイトの転送か行われるので71.4MB/sの転
送バンド幅しか得られない。
【0077】一方、図4で示されるRambusで25
6バイトのブロックデータをアクセスする場合のタイム
チャートから、 220ns+256×2ns=732ns で256バイトの転送が行われるので350MB/sの
転送バンド幅がセンスアンプキャッシャミスヒット時で
も得られる。センスアンプキャッシュがヒットしたら、 48ns+256×2ns=560ns で256バイトの転送が行われるので457MB/sも
の転送バンド幅が得られる。このようにRambus型
DRAMを用いたシステムブロック長の大きなアクセス
を発生させる効果は顕著なものがある。
【0078】なお、Rambus型DRAMを効率的に
用いた場合は1チップで上記のような転送バンド幅が得
られるという点で、特に超並列マシンの主記憶を構成す
る上で少ないチップ数・ピン数で高い性能が得られる点
で特筆すべきものがある。
【0079】また、同期型DRAMを使用する場合で
も、Rambusを用いる場合より多くのハードウェア
量を必要とするが、Rambusほどバースト転送のブ
ロック長に転送速度が敏感ではないが、ランダムアクセ
スを行うよりラップ長を設定して所定の連続アクセスシ
ーケンスを実行するほうが転送速度が高速である。
【0080】具体的には典型的な同期型DRAMでは周
波数100MHz、バンク数2、ランダムサイクルタイ
ム100ns(10クロック)、バースト転送サイクル
タイム10ns(1クロック)、プリチャージタイム4
0ns(4クロック)である。32bitデータバスを
用いて4バイトデータを通常のDRAM同様のランダム
アクセスを行うと100nsで4バイトの転送が行われ
るので40MB/sの転送バンド幅しか得られない。
【0081】ところがプリチャージが1語目のアクセス
の1クロック後から始まり、プリチャージタイムが40
ns(4クロック)であるために、図5に示すようにラ
ップ長が8以上のバースト転送、または図6に示すよう
にラップ長が4の同一行内のバースト転送を2回行う
と、異なる行へのアクセスが2つのバンクに対し交互に
行われる場合は10ns(1クロック)ごとに4バイト
の転送が間断無く行われ400MB/sもの転送バンド
幅が得られる。
【0082】ラップ長が4のバースト転送を行い同一の
バンクの異なる行にアクセスされる場合は図7に示すよ
うになり、 40ns−10ns×3+60ns+10ns×4=1
10ns の間に16バイトの転送が行われるので145MB/s
の転送バンド幅にとどまる。ラップ長が8のバースト転
送を行い同一のバンクの異なる行にアクセスされる場合
は図8に示すようになり、 40ns−10ns×7+60ns+10ns×8=1
10ns の間に32バイトの転送が行われるので290MB/a
の転送バンド幅まで回復する。
【0083】このように効果の程度の差はあるが、Ra
mbus型DRAM、同期型DRAMともにバーストア
クセスを行うほうがランダムアクセスを行うより高速で
あり、アクセスするブロック長が長いほど転送バンド幅
が高くなる。
【0084】本実施例では連続ブロックアクセス要求生
成部35が具備されるため、上記のような性質を持った
メモリに対して語単位のアクセスではなく複数の語から
なるブロック状のアクセス要求を行うことが可能とな
り、転送速度を大幅に向上させることが可能となる。
【0085】次に、同時に複数のロードストア命令が起
動される場合について実施例を用いて説明する。すなわ
ち、残りベクトル長記憶部31、アドレス記憶部29お
よびアクセスステップ記憶部27には複数の残りベクト
ル長、アドレスデータおよびアクセスステップを記憶す
ることができる記憶容量がある。
【0086】図9はベクトルロードストア回路を具備す
るベクトルプロセッサにおける命令制御部13、連続ブ
ロックアクセス要求生成部35およびメモリバスの動作
状況の例を示す図である。
【0087】この例では、64bit幅同期型メモリで
アクセスブロック長が8に設定された状態(すなわち同
期型DRAMに設定されたラップ長も8)で、アドレス
&1000から始まるステップ1(昇順連続アクセス)
でベクトル長64の8バイト形式のベクトル要素に対す
るベクトルレジスタVR1へのベクトルロード命令と、
アドレス&2000から始まるステップ1(昇順連続ア
クセス)でベクトル長が64の64bit形式のベクト
ル要素に対するベクトルレジスタVR2からのベクトル
ストア命令が同時に起動状態にある場合を示している。
【0088】命令制御部13では時刻1でベクトルロー
ド命令を命令バッファからフェッチし、時刻2で解読し
てベクトルロード命令でアクセスステップ数が1だから
昇順連続アクセスであることを認識し、時刻3でベクト
ル長レジスタからベクトル長=64を残りベクトル長記
憶部31に転送する。
【0089】時刻4で命令制御部13はベクトルロード
命令で指定された番号のスカラレジスタから先頭アドレ
ス=&1000をアドレス記憶部29に転送する。同時
に時刻4では連続ブロックアクセス要求生成部35は残
りベクトル長=64とアクセスブロック長8を比較し、
アクセス要求ブロック語数として8を選択する。
【0090】時刻5では命令制御部13はベクトルロー
ド命令で指定された番号のスカラレジスタ15からアク
セスステップ=1をアクセスステップ記憶部27に転送
する。同時に時刻5では連続ブロックアクセス要求生成
部35はオペランドバイト数=8に対応してアクセス要
求ブロック語数=8を3bit左シフトしてアクセス要
求ブロック数=64バイトを得る。
【0091】時刻6では命令制御部13は後続するベク
トルストア命令を命令バッファからフェッチする。同時
に時刻6では連続ブロックアクセス要求生成部35はア
クセス要求ブロック数=64バイトとアドレス記憶部1
=&1000と加算して新しい先頭アドレス=&101
0を得て、アドレス記憶部29を更新する。同時に時刻
6ではメモリバスインタフェースは古い先頭アドレス=
&1000に相当する行アドレスをメモリバスに出力す
る。
【0092】時刻7では命令制御部13は、解読してベ
クトルストア命令でアクセスステップ数が1だから昇順
連続アクセスであることを認識する。同時に時刻7では
連続ブロックアクセス要求生成部35は残りベクトル長
=64からアクセス要求ブロック語数=8を減算して新
しい残りベクトル長=56を得て、残りベクトル長記憶
部31を更新する。同時に時刻7ではメモリバスインタ
フェース37は64バイトのアクセスは64bitバス
の場合はラップ長8のバーストアクセスで可能であるこ
とを認識する。
【0093】時刻8では命令制御部13はベクトル長レ
ジスタからベクトル長=64を残りベクトル長記憶部3
1に転送する。同時に時刻8では連続ブロックアクセス
要求生成部35は新しい残りベクトル長=56が0では
なくベクトルロード命令に対するアクセス要求生成処理
が完結していないことを認識する。同時に時刻8ではメ
モリバスインタフェース37は列アドレスを出力するタ
イミングに至っていないので待ち状態となる。
【0094】以下メモリバスインタフェース37は時刻
9に列アドレスを出力し、時刻12〜時刻19にかけて
8個の64bitデータを受信する。命令制御部13は
時刻6〜時刻10にかけてベクトルストア命令の起動処
理を行う。これを受けてメモリバスインタフェース37
は時刻14に行アドレスを出力し、時刻17に列アドレ
スを出力し、時刻20〜時刻27にかけて8個の64b
itデータを受信する。
【0095】連続ブロックアクセス要求生成部35は、
時刻9〜時刻13にかけてベクトルストア命令の最初の
8要素分に対応する比較、シフト、加算、減算、零判定
を行う。時刻8の判定結果からベクトルロード命令は完
結していないので、時刻14から時刻19にかけてベク
トルストア命令の最初から2番目の8要素分に対応する
比較、シフト、加算、減算、零判定を行う。
【0096】以下同様の処理が零判定結果からベクトル
命令の終了が検出されるまで連続ブロックアクセス要求
生成部35とメモリバスインタフェース37で繰り返さ
れる。
【0097】なお、アドレス&1000と&2000で
は13bit目のみが異なるが、たまたま13bit目
がバンク選択アドレスピンに割り当てられている場合に
限り図5および図9のタイムチャートに示されるような
最大転送速度の得られる動作となり、そうでない場合は
バンク衝突が発生するので図8のタイムチャートに示さ
れるような3クロック分の待ちサイクルが挿入される動
作となる。
【0098】以上の例からわかるように、メモリアクセ
スをブロック化することにより1つのベクトルロードス
トア命令に対応するアドレス計算や残りベクトル長計算
を毎サイクルアドレスを出力するように行う必要が無く
なっている。複数のアクセスステップ記憶部27と、複
数のアドレス記憶部29と、複数の残りベクトル長記憶
部31には複数の命令の実行状況(コンテクスト)が記
憶されており、これらを用いることによって、単一の命
令に演算器を占有させる必要性がなくなるので、加算や
減算や比較を行う資源を複数の命令の実行のために時分
割的に利用可能となる。こうしてハードウェア量を削減
し、ハードウェアの利用効率を高めることが可能とな
る。
【0099】次にベクトルレジスタとしてFIFO型を
採用する場合について説明する。FIFO型ベクトルレ
ジスタは実際の容量を減らしつつ、ソフトウェアモデル
の上からはあたかも無限長のベクトルレジスタとして見
えるために、特に超並列マシンなどで用いられるような
1チップ型のベクトルプロセッサにおいては有効性が高
く、性能面からみても、ベクトル長がベクトルレジスタ
の容量を越えてしまうようなプログラムにおけるストリ
ップマイニング処理が不要となるので、このオーバーヘ
ッドが削減できる。
【0100】なお、本発明を適用できるFIFO型ベク
トルレジスタは、図10に示すように個々のベクトルレ
ジスタごとに完結したFIFOとなっているものをクロ
スバースイッチで接続したものでも良いし、図11に示
すようにデータ記憶部とポインタ制御部237を分割
し、仮想的に複数のFIFOを共通のRAM上に作るも
のであっても良い。また、FIFO型ベクトルレジスタ
に保持されているデータ数または空きデータ数を制御部
が知り得る手段をFIFOに付加してもよい。
【0101】具体的には図12に示されるようにFIF
Oにデータを書き込まれるたびにアップし、読み出され
るたびにダウンするアップダウンカウンタを用いれば容
易に実現できる。初期値として0またはFIFO容量語
数を設定し、FIFOへの読み書きの際にカウンタをア
ップまたはダウンさせることによってFIFOの保持デ
ータ数情報をカウント値が指し示す。
【0102】図13はベクトルロードストア回路の連続
ブロックアクセス要求生成部の一実施例を示した図であ
る。本実施例と図2に示した連続ブロックアクセス要求
生成部35の違いは、図12に示されたアップダウンカ
ウンタからのFIFO型ベクトルレジスタ上の保持デー
タ数情報を残りベクトル長とアクセスブロック長設定値
の大きくないほうと比較する比較器を具備しており、タ
イムアウト制御部を具備している。さらに保持データ量
数情報から残り容量を計算する減算器も具備している。
【0103】また、ベクトルプロセッサがFIFO型の
ベクトルレジスタを具備し、ベクトルストア命令を実行
する時には、ストアすべきFIFO型ベクトルレジスタ
に保持されているデータ数とアクセスブロック長設定部
の値の小さいほうをアクセス要求ブロック長とする制御
部を具備する。
【0104】つまり、FIFO型のベクトルレジスタを
具備したベクトルプロセッサの場合、ベクトルレジスタ
からベクトルストア命令で主記憶にデータを書き出す際
に、ベクトルレジスタに命令で指定されたベクトル長個
のデータが既に計算されて保持されていなくても多少の
データが既に保持されていれば命令の実行が開始され
る。
【0105】例えば、32ワードの容量のFIFO型ベ
クトルレジスタがあって、ここに格納されているデータ
をベクトル長が128でストアする命令が発行された場
合、データが32ワード分FIFOに保持されておら
ず、例えば3ワード分しか保持されていなかった場合で
も、FIFOが空になったところでFIFOのEmpt
y信号がアサートされ、命令制御部がこの状態が解除さ
れるまでストアは抑制されるので、3ワード分のストア
を開始することができる。
【0106】ところがアクセスのブロック化を行うとF
IFO型ベクトルレジスタに保持されているデータ数よ
りアクセスブロック長設定部の値が多い場合は、アクセ
スブロック長設定部の値をアクセス要求ブロック長とす
るアクセス要求をメモリインタフェースに発行しても実
際に書き込みが起こるときまでに要求した個数の書き込
みデータが用意できない可能性が生じる。
【0107】例えばアクセスブロック長設定部に8が設
定されていてFIFOには3ワード分しか保持されてい
なかった場合、ここで8ワード分の連続ブロックライト
要求を発行してしまうと、実際にメモリにデータを転送
する数クロック後までに8−3=5ワード分のデータが
FIFOに演算器などから書き込まれない可能性が残
る。
【0108】特にRambusインタフェースを用いる
場合はウェイト状態を書き込み要求パケットの送信中に
挿入することは不可能であり、このような状況は回避し
なければならない。また同期型DRAMインタフェース
を用いる場合ではクロックイネーブル信号をネゲートす
ることでメモリを凍結することが可能であるが、メモリ
インタフェースがウェイト状態となり、他のメモリアク
セス要求の実行までが待たされてしまうのでバスの利用
効率が低下する。
【0109】例えばベクトル演算器が複数のベクトル演
算命令により時分割的に利用されていた場合、ストアし
ようとしているFIFO型ベクトルレジスタにデータを
書き込むべきベクトル演算命令が休止状態となったばか
りで、しばらくの間データのFIFOへの書き込みが期
待できない場合は、バスを凍結したままにすると長期間
バスが使用できなくなるので性能が大きく低下する場合
が想定できる。
【0110】そこでメモリインタフェースへの要求を出
す際に準備可能な書き込みデータ数に基づいてアクセス
要求ブロック長を生成することによりこのような問題点
を回避することが可能となる。
【0111】例えばアクセスブロック長設定部に8が設
定されていてFIFOには3ワード分しか保持されてい
なかった場合、ここで3ワード分の連続ブロックライト
要求を発行すれば上記の問題点は生じなくなる。ただし
常にこのような単純な制御を行っていたならば、ブロッ
ク長が細切れになって第1の発明が持つ本来の効果が損
なわれかえって効率が低下する場合も想定できる。
【0112】そこでベクトルロードストア回路におい
て、アクセスブロック長記憶部25の値がストアすべき
FIFO型ベクトルレジスタに保持されているデータ数
より大きく、残りベクトル長より小さい場合に、所定時
間経過までこの状態が続いたならばストアすべきFIF
O型ベクトルレジスタに保持されているデータ数をアク
セス要求ブロック長とする。つまり、ストアすべきFI
FO型ベクトルレジスタ上のデータ不足を検出した際
に、アクセスブロック長の決定を所定の時間だけ遅らせ
る。
【0113】データ不足の検出時は先行する別のメモリ
アクセス命令のためのメモリバスが使用中である場合も
あるために、バスが開放されるまでは次のメモリアクセ
スはできないので待つ必要があり、この待ち時間の間に
FIFO上のストアデータが増える可能性がある。ゆえ
にメモリアクセスブロック長が長くなりやすくなる。
【0114】しかしアクセスブロック長の決定をFIF
Oに十分にデータが貯まるまでむやみに遅らせるように
してしまうと、なかなかデータが貯まらずにバスが空い
てしまう可能性が高まる。そこで、所定のタイムアウト
を設けることでそのような欠点が緩和される。
【0115】例えばアクセスブロック長設定部25に8
が設定されていてFIFOには3ワード分しか保持され
ていなかった場合、ここで即座には3ワード分の連続ブ
ロックライト要求を発行せず、数クロックの間FIFO
型ベクトルレジスタ上の保持データ数の変化を監視す
る。もしこのFIFOにデータを書き込むべきベクトル
演算が動作状態にある場合は保持データ数の変化がまも
なく起こる確率が高い。変化が短期間に続いている場合
はもう数クロック待って8ワードのデータが貯まるのを
目指し、変化がないようであればその時点で貯まったデ
ータ数をアクセス要求ブロック語数とする。このように
待っても効果が無い場合は待たないようにすることが可
能となっている。
【0116】次に、FIFO型ベクトルレジスタへのベ
クトルロードを連続ブロックアクセスによって行う場合
について説明する。FIFO型のベクトルレジスタはベ
クトル演算器側が十分な速度でFIFO型ベクトルレジ
スタ上のデータを使った演算を実行している間は、無限
長のベクトルレジスタに似た動作モデルを与えるが、現
実的には何らかの要因で演算が一時停止しつつ、メモリ
からのロードが行われる場合もありうる。
【0117】そのため、有限長のFIFOレジスタの空
き容量が減少し、この空き容量より大きなブロック長の
データ読みだし要求をメモリインタフェースに出してし
まうと、メモリからの応答データが受けきれなくなる可
能性がある。
【0118】例えば、容量が64bit幅32語のFI
FO型ベクトルレジスタに30語のデータが保持されて
いると、残りベクトル長が34でアクセスブロック長設
定値が8ならば、アクセス要求ブロック長は8が候補と
なる。ここで、このアクセス要求ブロック長に8を採用
してしまうと、数クロック後には8語をメモリから受信
しなければならなくなる。しかしながら、現在の残り容
量は2語しかないので演算器がこのデータを6語以上消
費してくれないと受信しきれなくなってしまう可能性が
生じる。
【0119】特にメモリインタフェースがRambus
であったならば、読みだし応答パケット受信中にウェイ
トサイクルを挿入することはできないので、FIFO型
ベクトルレジスタに受けきれないほどのデータを要求す
ることは避けなければならない。
【0120】また、メモリインタフェースが同期型DR
AMインタフェースであったとしても、ウェイトサイク
ルを挿入することで誤動作は回避できるものの、ロード
すべきFIFO型ベクトルレジスタのデータを演算器側
で消費してくれない限り、メモリバスのウェイト状態の
解消がなされないのでデッドロック状態に陥る危険性が
ある。
【0121】このような問題点を解決するために、ロー
ドすべきFIFO型ベクトルレジスタの空きデータ数と
残りベクトル長とアクセスブロック長記憶部の値の小さ
いほうをアクセス要求ブロック長とする。すなわち、図
13に示すように、FIFO型ベクトルレジスタの空き
データ数はFIFO41の容量(語数)からアップダウ
ンカウンタからのFIFOの保持データ数を減じれば求
められる。
【0122】図13に示すFIFOベクトルレジスタ用
連続ブロックアクセス要求生成部35Aに示されるよう
に、残りベクトル長とアクセスブロック長設定値の大き
くないほうと比較するのは、ストア時にはFIFOの保
持データ数で、ロード時にはFIFOの残りデータ数で
ある。
【0123】例えば、8バイト型オペランドをロードす
るベクトル命令で、容量が32語のFIFO型ベクトル
レジスタに30語のデータが保持されていると、残りベ
クトル長が34でアクセスブロック長設定値が8なら
ば、残りベクトル長=34>アクセスブロック長設定値
=8>FIFOの残りデータ数=2であるのでアクセス
要求ブロック語数は2、アクセス要求ブロック長は16
バイトとなる。
【0124】このようにしてFIFOの空きデータ数を
越えるメモリへのブロックリード要求を出してしまうこ
とは回避され、その結果メモリバス上のウェイト状態の
挿入の必要性やデッドロックの危険性から開放される。
【0125】次に、降順の連続アクセスを行うベクトル
ロードストア命令のブロックアクセスについて実施例に
より説明する。
【0126】ベクトルデータのロードやストアはプログ
ラムによっては配列のインデックスの降順にアクセスし
なければならないことがある。そのような場合、メモリ
アドレスが一語分のアドレスステップより減少するワー
ドアクセス要求を発生しなければならない。特にメモリ
インタフェースとしてRambusを採用する場合はア
ドレスが上昇する順でしかデータがアクセスできないの
で、アクセスブロック長が一語となってしまって、実質
的メモリバンド幅が昇順連続アクセスの場合と比較して
激減する。
【0127】具体的には図3に示したようなアクセスを
行うとセンスアンプキャッシュミスヒット時には4バイ
トデータなら17.5MB/s,8バイトデータなら3
3.9MB/sの転送バンド幅しか得られない。
【0128】また連続アクセスであれば降順でもセンス
アンプキャッシュにヒットする確率は極めて高いが、そ
れでも4バイトデータなら71.4MB/s、8バイト
データなら125MB/sの転送バンド幅しか得られな
い。センスアンプキャッシュがヒットした256バイト
の昇順アクセス時の457MB/sと比較するとロスが
大きい。
【0129】そこで図14に示されるようにベクトルレ
ジスタとメモリバスインタフェースの間にラストインフ
ァーストアウト(LIFO)バッファを具備する。この
ようにすればFIFO型ベクトルレジスタを用いたとし
ても、LIFOで順番が逆転するのでメモリからは昇順
でアクセスして、FIFO型ベクトルレジスタには降順
でロードさせることが可能になる。なお、アクセスブロ
ックの先頭アドレスは降順で発生され、ブロック内のメ
モリアクセスのみが昇順で行うことになる。
【0130】例えば8バイト型データ配列Aがアドレス
&1000から1024要素分割り当てられていて、最
終要素A(1024)すなわちアドレス&1FF8から
降順に連続で8バイト型データをベクトル長1024で
FIFO型ベクトルレジスタにロードする場合で、アク
セスブロック長設定値が8で、ロードする転送レート以
上の速度で演算器によりデータが消費される場合は、ア
クセス要求ブロック長が常に64バイトで読み出され、
128回に分割されてメモリアクセスが行われる。その
際、アクセス要求アドレスは&1FF8−64+8=&
1FC0からはじまり&1FC0→&1F80→&1F
40...というように64バイトずつ減少するように
発生することになる。
【0131】図15はLIFOバッファの動作を示した
図である。Rambusからは1回目のブロックアクセ
スではデータがA(1017)→A(1018)
→...→A(1023)→A(1024)の順で読み
出されたLIFOに8語がプッシュされる。ここから8
語ポップしてFIFO型ベクトルレジスタにはA(10
24)→A(1023)→...→A(1018)→A
(1017)という順に転送される。
【0132】ここでLIFOが空になるまでこのLIF
Oにはデータをプッシュしないように制御する。また、
間断無くデータの送受を行うためには図14のようにL
IFOをダブルバッファ構成にすればよい。
【0133】Rambus型DRAMは1024バイト
のセンスアンプキャッシュを持っているので64バイト
のブロックアクセスでは、16回中1回がミスヒットで
15回がヒットする。従って、上述した例での転送速度
は(48ns×15+220ns+2ns×1024)
=2988nsで1024バイトか転送されるので34
3MB/sが実現できる。これはワードアクセスを行う
場合の125MB/sと比較すると効果が大きいことが
わかる。
【0134】次に同期型DRAMを用いた場合の非連続
アクセスおよび逆順アクセスの扱いについて実施例を用
いて説明する。
【0135】図16は16Mbit同期型DRAMで構
成した64bit幅メモリーにおけるアクティブページ
ランダムリードを用いて64語間隔の8バイト型データ
の等間隔アクセスを行った場合のタイムチャートであ
る。
【0136】この同期型DRAMのアクティブページラ
ンダムリードとは、行アドレスおよびバングが同じメモ
リブロック(ページ)内部でアクセスする場合に、列ア
ドレスのみをCAS信号を逐一アクティブにしながら行
うアクセスモードで、ページモードサイクルタイムは1
00MHzの同期型DRAMでは2クロック(20n
s)である。
【0137】図17はベクトルロードストア回路のペー
ジ境界判定部の実施例を示した図である。この図17に
示す例では、まずアクセス間隔とオペランドバイト数と
先頭アドレスからアクセス要求アドレスを語ごとに計算
し、前回アクセスの行アドレスを保持しておく。次に、
同期型DRAMにおいて行アドレスが前回のアクセスと
同一ならば、メモリ制御信号生成部は同期型DRAMに
対して行アドレスを設定し直さずに列アドレスのみをペ
ージモードサイクルタイムの制約を満たすタイミングで
出力する。
【0138】16Mbit同期型DRAMでは、ページ
サイズがカラムアドレス9bit分つまり512語であ
り、ページ先頭から64語間隔でアクセスすると8語の
アクセスのうち7語分は同一ページへのアクセスとな
る。64bit幅のバスで、8バイト型データを等間隔
アクセスすると1サイクルで1語が転送できるが、列ア
ドレスが2クロックおきにしか入力できない。
【0139】よって転送速度は60ns+20ns×8
=220nsで64バイトの転送ができるので290M
B/sの転送速度が得られる。完全にランダムにアクセ
スした場合はサイクルタイムが10クロック(100n
s)で8バイト転送されることになるので80MB/s
の転送速度にすぎないが、これと比較すると本発明の効
果が高いことがわかかる。
【0140】なお、この発明の効果はアクセス間隔がよ
り長くなると同一ページ内に連続してアクセスする確率
が低くなるので、行アドレスを設定しなおすことに伴う
性能低下が起こる。極端な場合、ページサイズである5
12語以上の間隔で等間隔アクセスすれば必ずページが
変わるので効果が全く無くなる。
【0141】またリストアクセスを行うベクトルロード
ストア命令でもこの機能は有効性があり、リストがソー
トされていて隣接するリスト値の差が小さければページ
内のアクセスが行われ易いが、リストの値によってはペ
ージが毎回変わる場合も起こり得るので、リストの値に
よって転送性能が変動する。
【0142】また逆順連続アクセスをするベクトルロー
ドストア命令では、ほぼ必ずといえる頻度でページ内に
続けてアクセスするので、同期型DRAMの最大転送速
度のほぼ半分の性能で実行できる。
【0143】具体的には降順連続アクセスでは、同期型
DRAMのページサイズは512であるので、64bi
t幅バスで8バイト型データを降順連続アクセスすれ
ば、512回に511回はページ内のアクセスとなる。
従って、60ns+20ns×512=10300ns
で512×8=4096バイトの転送ができるので39
8MB/sの転送速度が得られる。これは最大転送速度
800MB/sの約半分である。
【0144】以上の実施例ではRambus型DRAM
や同期型DRAMを用いた場合を例として、本発明を用
いた時に卓越したベクトルロードストア性能を実施でき
ることを示した。これら2種のメモリを本発明のもとに
用いた場合は特に超並列計算機のプロセシングエレント
に最適な高性能なペクトルプロセッサのメモリを構成す
ることが可能となる。
【0145】上記の実施例の中で例示したRambus
型DRAMを用いた8bit幅バスや同期型DRAMを
用いた64bit幅バスはそれぞれ最低1チップのRa
mbus型DRAMまたは8チップの8bit幅同期型
DRAMを用いれば構築することが可能であり、そのよ
うな少ないチップ数で上記のような転送速度を実現して
いる点で、部品点数の削減と高い性能の維持を両立しな
ければならない超並列計算にとって意義が大きい。
【0146】特にベクトルプロセッサはメモリバンド幅
さえ確保されれば、ベクトル長が長くできる問題におい
ては、周波数が同じであるスカラ型マイクロプロセッサ
に比べて高い浮動小数点演算性能を発揮できるので、少
ないプロセシングエレメント数または低い周波数によっ
て実現される少ない消費電力で、高い性能を得ることが
できる。このようなアプローチによる実効性能でITF
LOPを実現する超並列テラフロップスマシンの構築
は、本発明によって有望なものとなっている。
【0147】例えば100MFLOPSの8バイト型浮
動小数演算能力にバランスする800MB/sのメモリ
バンド幅を持った超並列マシンのプロセシングエレメン
トを例にハードウェア量を比較する。
【0148】以上の要求を満たすプロセシングエレメン
トは160nsサイクル8bit幅汎用DRAMで構成
すると図18、10nsサイクル8bit幅同期型DR
AM構成すると図19、8bit幅Rambus型DR
AMで構成すると図20のようになる。
【0149】メモリチップ数のみ比較しても汎用型:同
期型:Rambus型=128:8:2となり、本発明
を用いてRambus型DRAMや同期型DRAMを有
効に動作させれば高い性能を維持したまま圧倒的なハー
ドウェア量削減がはかられ、これに伴い消費電力削減、
信頼性向上、コスト低下、実装密度向上がはかれる。
【0150】なお、超並列計算機に限らなければチップ
数の制限も緩くなるので、高速ページモード付きDRA
Mやニブルモード付きDRAMやスタティックカラムモ
ード付きDRAMのようにアクセスの連続性、局所性を
もとに通常モードより高速なアクセスが可能なタイプの
メモリを用いた場合や、複数のメモリチップをインタリ
ーブ構成にした場合もアクセスの連続性をもとに高速な
アクセスが可能であるので、本発明を適用できる。
【0151】また、最初のワードのアクセス遅延の性能
は落としてでもDRAMの容量増加を低コストで実現
し、ブロック転送サイクルの高速性は確保する、という
タイプのDRAMは、今後、いわゆる倍ルールを逸脱し
たbit単価およびチップ単価の低さから普及すると予
測される。
【0152】転送サイクルはGTLやCTTなどの電気
的インタフェースの利用により一層の高速化が見込まれ
るので、最初のワードのアクセス遅延の上昇との相乗効
果により高い性能を引き出すには、連続ブロックアクセ
スのブロック長を長く取らなければならなくなる。
【0153】スカラプロセッサのキャッシュのラインサ
イズは通常16〜32バイトに過ぎないのに対し、ベク
トルレジスタは1本あたり数百から数千バイトの容量を
持つのが普通であるので、連続ブロックアクセスのブロ
ック長を長くとることのできるベクトルプロセッサに基
盤をおく本発明は、このようなコンセプトのDRAMに
高い適応性を持っている。
【0154】以上、上述したように、本発明によれば超
並列計算機の要素プロセッサに採用できる大きさと価格
で、高性能なベクトル演算器にバランスするメモリバン
ド幅を持つ主記憶を構成することが可能となっている。
【0155】具体的には、昇順連続アクセスを行うベク
トルロードストア命令の実行においてはRambus型
DRAMや同期型DRAMにより数百MB/sクラスの
極めて高いメモリバンド幅を実現可能としている。
【0156】さらに逆順連続アクセスや、連続でない等
間隔アクセスや、リストアクセスを行う場合でも昇順連
続アクセスに比べて性能低下が低い、高いメモリバンド
幅を実現可能としている。
【0157】特に本発明をRambus型DRAMや同
期型DRAMに用いた構成では、同じ性能を実現するた
めのメモリチップ数を従来のDRAMをインタリーブす
る構成と比べ、同期型DRAMに用いた時で約1/1
6、Rambus型DRAMに用いた時で約1/64程
度にすることが可能となっている。
【0158】
【発明の効果】以上、説明したように、本発明によれば
超並列計算機の要素プロセッサに採用できる大きさと価
格で、高性能なベクトル演算器に適応しうるメモリバン
ド幅を持つ主記憶を構成することが可能となる等の効果
が期待される。
【図面の簡単な説明】
【図1】第1の発明にかかるベクトルロードストア回路
を具備するプロセッサの構成の実施例を示した図であ
る。
【図2】第1の実施例における連続ブロックアクセス要
求生成部の構成例を示した図である。
【図3】Rambus型DRAMで4バイトデータのラ
ンダムアクセスを行った場合のタイムチャートである。
【図4】Rambus型DRAMで256バイトのブロ
ックデータをアクセスする場合のタイムチャートであ
る。
【図5】同期型DRAMでラップ長が8でバンク衝突が
無い場合のタイムチャートである。
【図6】同期型DRAMでラップ長が4で同一行内のバ
ースト転送を2回行いバンク衝突が無い場合のタイムチ
ャートである。
【図7】同期型DRAMでラップ長が4でバンク衝突が
ある場合のタイムチャートである。
【図8】同期型DRAMでラップ長が8でバンク衝突が
ある場合のタイムチャートである。
【図9】ベクトルロードストア回路を具備するベクトル
プロセッサにおける命令制御部、連続ブロックアクセス
要求生成部およびメモリバスの動作状況の例を示した図
である。
【図10】個々のベクトルレジスタごとに完結したFI
FOとなっているものをクロスバースイッチで接続した
FIFO型ベクトルレジスタを示す図である。
【図11】データ記憶部とポインタ制御部を分割し、仮
想的に複数のFIFOを共通のRAM上に作るFIFO
型ベクトルレジスタを示した図である。
【図12】保持データ数情報を出力するFIFO型ベク
トルレジスタの実施例を示した図である。
【図13】FIFO型ベクトルレジスタ用ベクトルロー
ドストア回路の連続ブロックアクセス要求生成部の一実
施例を示した図である。
【図14】LIFOバッファを具備したベクトルロード
ストア回路の実施例を示した図である。
【図15】LIFOバッファを具備したベクトルロード
ストア回路の動作例を示した図である。
【図16】同期型DRAMで構成した64bit幅メモ
リーにおけるアクティブページランダムリードを用いて
64語間隔の8バイト型データの等間隔アクセスを行っ
た場合のタイムチャートである。
【図17】ベクトルロードストア回路のページ境界判定
部の実施例を示した図である。
【図18】800MB/sのメモリバンド幅を持つ超並
列マシンのプロセシングエレメントを160nsサイク
ル8bit幅汎用DRAMで構成する例を示した図であ
る。
【図19】800MB/sのメモリバンド幅を持つ超並
列マシンのプロセシングエレメントを10nsサイクル
8bit幅同期型DRAMで構成する例を示した図であ
る。
【図20】800MB/s以上のメモリバンド幅を持つ
超並列マシンのプロセシングエレメントを8bit幅R
ambus型DRAMで構成する例を示した図である。
【符号の説明】
11 命令バッファ 13 命令制御部 15 スカラレジスタ 17 スカラ演算器 19 マルチプレクサ 21 ベクトル演算器 23 ベクトル演算器 25 アクセスブロック長設定部 27 アクセスステップ記憶部 29 アドレス記憶部 31 残りベクトル長記憶部 33 ベクトル長レジスタ 35 連続ブロックアクセス要求生成部 37 メモリバスインタフェース 39 連続アクセスが高速なメモリ

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 連続ブロックアクセスの際に高速にアク
    セスが可能なRAMにより構成される主記憶に接続され
    るベクトルプロセッサのベクトルロードストア回路であ
    って、 メモリへのアクセスの際のブロック長を保持するアクセ
    スブロック長設定部と、 ベクトルロード命令またはベクトルストア命令起動時に
    先頭アドレスを現在のメモリアクセス要求アドレスとし
    て記憶するアドレス記憶部と、 ベクトルロード命令またはベクトルストア命令起動時に
    ベクトル長を記憶する残りベクトル長記憶部と、 この残りベクトル長記憶部に記憶されるベクルト長とア
    クセスブロック長設定部に記憶されるベクトル長とを比
    較して値の小さいブロック長をアクセス要求ブロック長
    とすると共に、このアクセス要求ブロック長に対応する
    バイト数をアドレス記憶部に記憶される値に加算したも
    のを次のメモリアクセス要求アドレスとしてアドレス記
    憶部に記憶し、残りベクトル長記憶部の値からアクセス
    要求ブロック長に対応する語数を減算したものを残りベ
    クトル長記憶部に記憶し、前記主記憶に対して連続ブロ
    ックアクセス要求を発生する制御部とを具備することを
    特徴とするベクトルロードストア回路。
  2. 【請求項2】 FIFOに保持されるデータ数若しくは
    FIFOの空きデータ数を保持するアップダウンカウン
    タを具備したことを特徴とするFIFO型ベクトルレジ
    スタ。
  3. 【請求項3】 FIFO型ベクトルレジスタを具備する
    ベクトルプロセッサのベクトルロードストア回路であっ
    て、 逆順ロードストア動作時に使用されるLIFOバッファ
    を具備することを特徴とするベクトルロードストア回
    路。
  4. 【請求項4】 同期型DRAMにより構成される主記憶
    に接続されるベクトルプロセッサのベクトルロードスト
    ア回路であって、 所定のベクトルロードストア命令を実行する際に、現在
    のメモリアクセス要求アドレスが前回のメモリアクセス
    要求アドレスと前記主記憶のページが同一か否かを判定
    する判定手段と、 この判定手段で同一ページであると判定されたときには
    ページモードによるアクセスを実行するページモード実
    行手段とを具備することを特徴とするベクトルロードス
    トア回路。
JP5255893A 1993-03-12 1993-03-12 ベクトルロードストア回路 Pending JPH06266748A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5255893A JPH06266748A (ja) 1993-03-12 1993-03-12 ベクトルロードストア回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5255893A JPH06266748A (ja) 1993-03-12 1993-03-12 ベクトルロードストア回路

Publications (1)

Publication Number Publication Date
JPH06266748A true JPH06266748A (ja) 1994-09-22

Family

ID=12918151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5255893A Pending JPH06266748A (ja) 1993-03-12 1993-03-12 ベクトルロードストア回路

Country Status (1)

Country Link
JP (1) JPH06266748A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785833B2 (en) 1993-10-15 2004-08-31 Renesas Technology Corp. Data processing system and image processing system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785833B2 (en) 1993-10-15 2004-08-31 Renesas Technology Corp. Data processing system and image processing system
US6789210B2 (en) 1993-10-15 2004-09-07 Renesas Technology Corp. Data processing system having memory including mode register
US7254737B2 (en) 1993-10-15 2007-08-07 Renesas Technology Corp. Data processing system and image processing system
US7711976B2 (en) 1993-10-15 2010-05-04 Renesas Technology Corp. Data processing system and image processing system
US8332683B2 (en) 1993-10-15 2012-12-11 Renesas Electronics Corporation Data processing system and image processing system

Similar Documents

Publication Publication Date Title
EP0054888B1 (en) Data-processing system with main and buffer storage control
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US5295252A (en) Data storage device
US8661198B2 (en) Cache device
JP2625277B2 (ja) メモリアクセス装置
US8108652B1 (en) Vector processing with high execution throughput
US7610469B2 (en) Vector transfer system for packing dis-contiguous vector elements together into a single bus transfer
US20050071602A1 (en) Branch-aware FIFO for interprocessor data sharing
US5440717A (en) Computer pipeline including dual-ported, content-addressable writebuffer
Mathew et al. Design of a parallel vector access unit for SDRAM memory systems
CN101918925B (zh) 用于处理器的高关联性高速缓存的第二次机会取代机制
US6446181B1 (en) System having a configurable cache/SRAM memory
KR20010022661A (ko) 메모리 및 데이터 예비인출 유닛을 갖는 프로세서
JP3498673B2 (ja) 記憶装置
WO2001075607A2 (en) Multi-tiered memory bank having different data buffer sizes with a programmable bank select
EP0797803B1 (en) Chunk chaining for a vector processor
JPH06266748A (ja) ベクトルロードストア回路
US20050108505A1 (en) Digital signal processor architecture with optimized memory access
JP3614946B2 (ja) メモリバッファ装置
US6671781B1 (en) Data cache store buffer
EP1096384B1 (en) Bridge unit between a system bus and a local bus
CN115373628B (zh) 先进先出存储器、系统、装置、设备及数据读取方法
JP4680340B2 (ja) プロセッサ
JPH0232648B2 (ja)
JPH10228447A (ja) バスアービトレーション機構