JP2000029783A - プロセッサ及び計算機 - Google Patents

プロセッサ及び計算機

Info

Publication number
JP2000029783A
JP2000029783A JP10200412A JP20041298A JP2000029783A JP 2000029783 A JP2000029783 A JP 2000029783A JP 10200412 A JP10200412 A JP 10200412A JP 20041298 A JP20041298 A JP 20041298A JP 2000029783 A JP2000029783 A JP 2000029783A
Authority
JP
Japan
Prior art keywords
memory
data
speed
processor
module
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
JP10200412A
Other languages
English (en)
Inventor
Yasumoto Hirose
靖元 広瀬
Kiyotaka Higuchi
清隆 樋口
Takashi Takahashi
俊 高橋
Fumio Takahashi
文夫 高橋
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP10200412A priority Critical patent/JP2000029783A/ja
Publication of JP2000029783A publication Critical patent/JP2000029783A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 拡張性に限界が有るレジスタやキャッシュと
は異なる新規のデータ保持機構を提供する事により、主
記憶へのアクセスを低減したプロセッサを実現する。 【解決手段】 主記憶の動作速度よりも高速に作動する
プロセッサに対して、主記憶よりも高速にアクセスが可
能で、主記憶とは独立な高速データメモリを設置し、計
算途中に出てきた一時変数やアクセスの激しいデータ
を、高速データメモリへ格納する事により、主記憶への
アクセスを抑制する。 【効果】 本発明を適用したプロセッサでは、明示的に
高速メモリへデータをストアする事が出来る。よって、
動作の遅い主記憶へのアクセスが低減される事により、
プロセッサの実行速度が速くなる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサとその
プロセッサを備えた計算機に係り、特に高速なデータア
クセスが可能なプロセッサとそのプロセッサを備えた計
算機に関する。
【0002】
【従来の技術】プロセッサが主記憶内のデータを読み込
む時には、主記憶からデータが届くまで待たされること
になる。従って、プロセッサの動作速度が向上しても、
それより主記憶へのアクセス速度が遅いと、プロセッサ
の能力を十分発揮できない。主記憶の容量が大きくなる
とそのアクセス速度は遅くなってしまうので、何らかの
対策が求められる。
【0003】主記憶へのアクセスを低減する方法とし
て、次の三手法が知られている。第一の手法は、プロセ
ッサの内部に高速で動作するレジスタを設ける方法であ
る。レジスタはプログラム側から制御できる高速なデー
タ保持機構である。レジスタは命令コードで明示的に指
示され、演算の対象になる。頻繁に再利用するデータを
プロセッサ内のレジスタに残す様にすることにより、動
作の遅い主記憶へのアクセスを低減することが可能にな
る。
【0004】第二の手法として、キャッシュ方式が知ら
れている。これはプロセッサと主記憶の間に高速メモリ
を設け、主記憶から読み込んだデータのコピーを記憶さ
せる方式である。キャッシュには、最も最近アクセスし
たデータが記憶され、もしキャッシュメモリが満杯にな
っていれば、最もアクセスされていないデータが消去さ
れ、そこへ最新のアクセスデータが記憶される。リード
アクセス時にはデータの物理アドレスをキーとしてキャ
ッシュメモリが検索され、該当するデータが存在すると
きはそれが読み出される。従ってプロセッサから同一デ
ータへのアクセスが連続的に繰り返されるとき、キャッ
シュの容量が小さくても大きな効果が得られる。
【0005】第三の手法として、主記憶の一部を高速メ
モリにする手法がある。これは例えば、特開昭58-85986
号、特開平7-262086号等に開示されている。さらにUS
4,706,191号において、主記憶とは別に設けられた高速
メモリをプロセッサとベクトル処理ユニットで共有する
方式が取られている。
【0006】
【発明が解決しようとする課題】しかし、上記の手法は
現在主流となってきたRISC(Reduced Instruction Set C
omputer)プロセッサには有効に働かない。まず、一番目
に挙げたレジスタ方式では、レジスタは多量に設置でき
ないという欠点がある。特にRISCプロセッサでは、演算
ユニットの演算対象をレジスタに限定して命令コードを
簡略化し、このような演算ユニットを並列に動作させる
ことにより処理の高速化を図っている。このためには、
複数の演算ユニットから、レジスタへの同時アクセスを
可能とする必要があり、通常マルチポートのレジスタが
設けられる。しかるにこのような構成によると、レジス
タを増やすことにより、マルチポートを通して、演算ユ
ニットやロード・ストアユニットへ接続する組み合わせ
が急増するため、周辺回路が膨大となる。また、増設し
たレジスタを使うためには、プロセッサの命令コードで
レジスタを指示するビット数を増加させる必要があり、
命令長の増大につながる。従ってレジスタ数を増加させ
ることには限界がある。
【0007】また、二番目に挙げたキャッシュ方式には
次の様な欠点がある。第一に、キャッシュは主記憶から
のデータ読み込みを低減できるが、主記憶へのデータ書
き込みに対しては効果が無い。第二に、キャッシュはプ
ログラムから制御ができないという問題点がある。プロ
グラム側では再利用する必要が無いと判っているデータ
も、再利用することが判っているデータも、区別無くキ
ャッシュ内に格納される。このため、キャッシュへ再利
用しないデータを格納するために、キャッシュ内に格納
されていた再利用頻度の高いデータが消去される。キャ
ッシュはプログラムから制御不可能なので、これを抑止
できない。特に、長大な配列データをアクセスする科学
技術計算では、アクセスするデータ領域がキャッシュ容
量を超えてしまうと、主記憶から読み込んだデータが再
利用されないうちにキャッシュから消されるので、常に
主記憶からのデータ読み込みが発生することになる。第
三に、キャッシュには応答時間に応じたデータ容量の上
限が存在するという問題点が有る。キャッシュのアクセ
スの際に発生する物理アドレスの比較には、1回の比較
ごとに有限の時間がかかるから、キャッシュの容量が大
きくなる程物理アドレスの比較時間が長くなる。このた
めに必要とする応答時間の制約から、キャッシュのデー
タ容量の上限が存在する。このように、キャッシュはレ
ジスタよりも大容量なデータ保持機構であるが、書き込
みには効果が無く、高速にアクセスできるデータ容量に
は限界があり、プログラムからデータ制御ができないの
で、効果的な主記憶アクセス低減手段ではない。
【0008】三番目に挙げた主記憶の一部を高速メモリ
にする方法にも、次のような欠点がある。第一に、プロ
セッサから主記憶へのアクセスにはある程度の時間がか
かるという問題点がある。RISCプロセッサでは、プロセ
ッサと主記憶の間に論理アドレスを物理アドレスに変換
するメモリ管理ユニットが存在する。アクセスする際に
メモリ管理ユニットにおけるアドレス変換が発生する為
に、どんなに速い高速メモリを主記憶に用いても、プロ
セッサから主記憶へはノーウエイトでのアクセスはでき
ない。特にプロセッサの内部クロックが外部クロックよ
りも高速な場合は、プロセッサの外部にある主記憶へア
クセスするとプロセッサは必ず待たされることになる。
第二に、マルチプロセス環境では、複数のプロセスで高
速メモリを利用する為には、プロセス間でデータ領域が
重複しないように、高速メモリのアドレス空間において
も、データ領域の分割あるいは待避といった調整が避け
られず、OSの負荷の増大を招く。
【0009】本発明の目的は、主記憶アクセスにより生
じるプロセッサの速度低下をできるだけ防止し、従来よ
り高速なデータアクセスが可能なプロセッサとそのプロ
セッサを備えた計算機を提供することである。
【0010】
【課題を解決するための手段】上記の目的を達成するた
めに、本発明は、主記憶の動作速度よりも高速に作動す
るプロセッサにおいて、主記憶とは独立なアドレス空間
を持ち、プログラムからの制御によりレジスタと高速に
データのやり取りができる高速データメモリを備えたこ
とを特徴とするプロセッサを提供する。
【0011】また、本発明は、上記のプロセッサと、参
照頻度の高い変数及び演算処理のための中間変数の少な
くとも一方を前記プロセッサに設けられた高速データメ
モリに格納する手段と、を備えたことを特徴とする計算
機を提供する。
【0012】これらのプロセッサ及び計算機によれば、
プロセッサから主記憶へのアクセスを必要最小限にまで
低減できる。高速データメモリを、ノーウエイトでレジ
スタとデータのやり取りができようにすると、実質上レ
ジスタの容量を大幅に増やすことと等価となる。高速デ
ータメモリは、主記憶とは独立なアドレス空間を持つこ
とにより、キャッシュメモリの様にアクセスする時にア
ドレス照合やアドレス変換をする必要が無く、また書き
込んだデータを主記憶へ書き込む必要も無い。従ってこ
の高速データメモリは、キャッシュメモリよりも高速に
アクセスできる。またアクセスの際にアドレス照合の手
間が無いので、キャッシュメモリよりも大容量化が容易
である。
【0013】また、本発明は、主記憶の動作速度よりも
高速に作動するプロセッサにおいて、主記憶とは独立な
アドレス空間を持ち、プログラムからの制御によりレジ
スタと高速にデータ及びシステムパラメータの少なくと
も一方の情報のやり取りができる高速データスタックを
備えたことを特徴とするプロセッサを提供する。
【0014】また、本発明は、上記のプロセッサにおい
て、前記高速データスタックは、主記憶空間に設けられ
たスタック領域と連結され、かつこの連結により構成さ
れた全スタック領域の先頭部分が常に当該高速データス
タックに格納されるように管理されるスタックであるこ
とを特徴とするプロセッサを提供する。
【0015】更に、本発明は、上記のプロセッサと、プ
ログラムを構成する各モジュールにおいて、少なくとも
当該モジュール内のみで用いられるローカル変数を抽出
する第1の手段と、各モジュールの実行時に前記第1の
手段により抽出された変数を前記プロセッサに設けられ
た高速データスタックへダイナミックに割り付ける第2
の手段と、を備えたことを特徴とする計算機を提供す
る。
【0016】これらのプロセッサ及び計算機によれば、
主記憶上にスタックを構成するよりもスタック処理を大
幅に向上できるとともに、各モジュールだけで用いられ
るローカル変数等のダイナミックな割り付けを行うこと
により、高速データメモリの有効利用が図れ、さらにこ
れらローカル変数等の高速データメモリへの割り付けを
コンパイラの介在なしで実現できるという利点がある。
【0017】
【発明の実施の形態】以下、本発明の実施の形態を図面
を参照して詳細に説明する。図4は、本発明のプロセッ
サを使った計算機の概略構成を示すもので、プロセッサ
400、主記憶401、磁気記憶装置402、I/Oイ
ンターフェイス403等から成り、このI/Oインター
フェイス403にはCRT、キーボード、ネットワーク
等が接続される。プロセッサ400には、本発明の特徴
とする高速データメモリ10が内蔵されている。ここで
「高速」とは、ロード命令が発行されてからレジスタに
データが格納されるまでの時間、あるいはストア命令が
発行されてからメモリにデータが格納されるまでの時間
が短いメモリであることを意味する。このようなメモリ
は、リード・ライトする応答時間が短いメモリデバイス
を使うこと、あるいはメモリとレジスタ間の伝送時間を
短縮することなどにより実現される。この高速データメ
モリはプロセッサ400の外部に設けてもよく、また主
記憶をプロセッサ内に設けてもよい。高速データメモリ
を利用する機能をもったネットワーク経由で与えるよう
にすることもできる。
【0018】図1は、本発明になるプロセッサの構成例
を示すブロック図で、図4のプロセッサ400と主記憶
401に相当する。図1で、演算ユニット群101には
レジスタ群111が接続され、整数演算を行う。演算ユ
ニット群102にはレジスタ群112が接続され、浮動
小数点演算を行う。ロード・ストアユニット121ある
いは122は、命令ユニット130からのロード・スト
ア命令に応じて高速データメモリ10あるいは主記憶4
01との間のデータ転送を行う。メモリ管理ユニット及
びキャッシュメモリはデータ用と命令用に分けて設けて
いる。これは多少の処理速度低下を許せば分けない構成
でもよい。また、高速のメモリとして、データ用のキャ
ッシュメモリを用いず、高速データメモリ10のみを用
いることも可能である。
【0019】主記憶401にはデータ及び命令コードの
列からなるプログラムが記憶され、命令ユニット130
は命令コードの列を順次取り込み、命令を解釈し、演算
ユニット及びロード・ストアユニットに司令する。RI
SCプロセッサでは、演算命令のオペランドはレジスタ
に限られているので、演算命令は演算ユニット101、
102へ、そしてレジスタと主記憶401または高速デ
ータメモリ10間のロード・ストア命令はロード・スト
アユニット122または121へ動作司令として送られ
る。その司令を受けて、演算ユニットではレジスタから
データを読み込み、所定の演算を行い、その結果をレジ
スタに書き込む。ロード・ストアユニット121または
122では、プログラムで定義される論理アドレスを生
成し、ロード・ストアユニット121では論理アドレス
に対応した高速データメモリ10のアドレスからデータ
をロードあるいはストアする。
【0020】ロード・ストアユニット122から送出さ
れた論理アドレスは、通常、広大なアドレス空間を指示
するため、データ用メモリ管理ユニット141で主記憶
の物理アドレスへ変換され、データ用キャッシュにデー
タがないと、物理アドレス信号は主記憶401に送ら
れ、いったん、主記憶からキャッシュ151にデータが
送られ、キャッシュ151からデータ用メモリ管理ユニ
ット141を通り、レジスタ群112にロードされる。
また、通常、データ用キャッシュ151と主記憶401
の間では、キャッシュヒットしなかったデータの近傍の
複数のデータをブロックとして転送する。これは、局所
性の仮設として、あるアドレスのデータが参照されたと
き、その近傍のデータも使われる可能性が高いことによ
る。命令キャッシュ152についても、通常、命令コー
ドの列は連続しており、ブロックとして転送される。
【0021】ロード・ストアユニット122は、広大な
アドレス領域をアクセスするために、ベースとなるアド
レスを予めレジスタに書き込んでおき、その相対アドレ
スとして論理アドレスを生成するというような動作が必
要となり、複雑な処理のためにアクセス時間がそれなり
にかかってしまうが、ロード・ストアユニット121で
参照するアドレス領域は小さくてすむので、命令コード
に論理アドレスを明示した直接的アドレッシングですむ
可能性もあり、このとき、ロード・ストアユニット12
1の機能は、より単純にできる。さらに、機能が単純化
されるので、アクセス時間を最短にでき、高速データメ
モリの機能を十分発揮できる。
【0022】図2は、図11のプロセッサの変形例であ
って、データ用、命令用のロード・ストアユニットを1
つのユニット120にまとめたものであり、他は図1の
構成と同じである。この構成では、高速データメモリ専
用のロード・ストアユニット121を設けたときよりア
クセス速度は低下するが、ハードウェアが簡単になる利
点がある。
【0023】図3は、高速データメモリ10をデータ用
メモリ管理ユニット140のもとにおいた構成を示して
おり、図2の変形例である。メモリ管理ユニット140
は、ロード・ストアユニット120で生成される論理ア
ドレスの内、特定のアドレス領域を高速データメモリ1
0へ割り当てる機能を有する。高速データメモリへのア
クセス時間は図2の場合よりも増大するが、プロセッサ
のアーキテクチャの変更は少なくてすむ。さらに、デー
タ用キャッシュの一部を高速データメモリに切り替える
機構を付加すれば、システム設計時または運用時に高速
データメモリとデータ用キャッシュの比率を最適な値に
設定できるメリットがある。
【0024】次に図1〜3にその構成例を示したプロセ
ッサにおいて、高速データメモリ10の利用方法を説明
する。一般的には、高速データメモリ10は、直接レジ
スタ群111、112との間で主記憶よりも高速にデー
タ授受が行えるから、演算の途中にでてきた中間変数
や、後で参照することが予めわかっている変数、頻繁に
更新や参照することが予めわかっている変数などを高速
データメモリ10へ格納すると、メモリアクセスが高速
化され、プロセッサの高速性を有効利用できる。
【0025】例えば図5に示したプログラムP1におい
ては、二次元配列の要素A(I,J)は再利用されない
データであるが、一次元配列の要素S(I)は再利用性
が高いデータである。このような再利用性はコンパイラ
で判定できるから、本発明のプロセッサではコンパイラ
が配列Sの再利用性を認識する。そしてJ=1のときに
I=1〜NMAXに対するNMAX個のS(I)が順次
主記憶401からレジスタ群111または112へ読み
込まれて計算に用いられるが、そのとき当該データS
(I),I=1〜NMAXを高速データメモリ10へ格
納する。そしてJ=2以降は配列Sを主記憶401から
レジスタへ読み込むかわりに、高速データメモリ10か
らレジスタへ読み込むようなオブジェクトコードをコン
パイル時に生成する。このようにすると、高速データメ
モリ10を活用して主記憶へのアクセス回数を必要最小
限にまで低減できる。
【0026】図6は、図5のプログラムP1の処理過程
を説明するもので、同図(a)はキャッシュメモリを用
いたときのキャッシュメモリの内容を、同図(b)は本
発明の特徴とする高速データメモリ10を用いたときの
高速データメモリの内容を示す。また、キャッシュ方式
と比較するため、図6(b)では、図1における高速メ
モリとして、データ用キャッシュメモリが無く高速デー
タメモリのみを用いているものとしている。今、簡単の
ために配列のサイズNMAX=5とし、また高速データ
メモリ10及びデータ用キャッシュメモリ151はとも
に8ワードであるとする。またキャッシュメモリでは主
記憶からデータがリードされるごとに当該データが書き
込まれるとする。このとき、従来のキャッシュ方式では
図6(a)に示すように(I,J)=(1,1)から演
算が始まると、次の(I,J)=(1,2)開始時には
データA(1,1)とS(1)がキャッシュに書き込ま
れており、以下同様に進行すると(I,J)=(5,
1)のときの演算開始時にはキャッシュは満杯になって
いる。そこで(I,J)=(5,1)の演算のために用
いたデータA(5,1)、S(5)がキャッシュへ書き
込まれるときに、最初に書き込まれたデータA(1,
1)、S(1)はキャッシュから消去される。従って次
の(I,J)=(1,2)のときには、必要となるデー
タS(1)はキャッシュにはなく、改めて主記憶からリ
ードしなければならない。以下、同様であって、この例
ではデータS(I)、I=1,2,…のすべては、必要
なときにはキャッシュにないということになる。これは
ブロック転送でも同じで、従来構成ではキャッシュメモ
リが十分機能していないことがわかる。
【0027】一方、本発明のプロセッサでは図6(b)
に示すように、(I,J)=(1,1)の実行後にデー
タS(1)が高速データメモリへ書き込まれる。以下、
同様にして、(I,J)=(1,2)の開始時には、デ
ータS(1)〜S(5)がすべて高速データメモリに書
き込まれており、この5ワード分のデータは高速データ
メモリの容量以内である。従ってJ=2,3…に対する
演算では常にデータS(I)を高速データメモリにアク
セスして取り出せ、改めて主記憶へアクセスする必要が
ない。これは、キャッシュメモリの場合は、再利用しな
い配列Aの要素もそこへ書き込まれ、そのために再利用
される配列Sの要素を保持できないが、高速データメモ
リの場合は配列Aを格納しないからである。従ってキャ
ッシュメモリと同一の容量をもつ高速データメモリとで
は、高速データメモリの方が処理速度の大幅な向上がは
かれる。更に、高速データメモリとキャッシュメモリと
を併用したときには、再利用されることが明確なデータ
のみを高速データメモリに割り当てることにより、高速
データメモリの容量はわずかでも大きな効果が得られ
る。
【0028】また、本発明の高速データメモリ10を利
用すると、キャッシュメモリと異なり、主記憶への書き
込みも低減できる。例えば図7に示したプログラムP2
において、配列Tの要素T(I)はプログラムが終了す
ると不要になる中間変数であり、主記憶に保存する必要
がないデータである。このプログラムを従来のプロセッ
サで実行すると、“T(I)=SQRT(DBLE
(I))”が各Iに対して実行されるごとにキャッシュ
と主記憶へのライト処理が発生し、主記憶への不必要な
ライト処理のために処理速度の低下を招く。一方、本発
明のプロセッサでは、主記憶に保存する必要がない配列
Tを高速データメモリ10へ格納するようにオブジェク
トコードを生成しておけば、主記憶への書き込みが低減
されて処理性能が大幅に向上する。また、このデータT
(I)を使うときには、図5の場合と同様な問題が生じ
ることがあり、このときも本発明は有効に機能する。
【0029】以上の動作例では、コンパイラが再利用さ
れるデータを抽出し、高速データメモリ10の領域に割
り付けることを前提とする。即ち、高速データメモリ1
0はレジスタの拡張であるという観点から、コンパイラ
において高速データメモリの容量に相当するレジスタ数
が増えたと見なし、そのレジスタを有効に使えるように
コンパイルさせることで、高速データメモリを用いた実
行プログラムを生成できる。但し、この方法は、コンパ
イラのアルゴリズムの変更が避けられない。
【0030】次に、高速データメモリをスタックとして
利用する方法について述べる。これは、繰り返し用いら
れるデータの格納場所としての利用のような、コンパイ
ラの変更を必要としない。スタックの一般的な利用法
は、あるプログラムでサブプログラム(モジュール)を
呼び出したとき、そのモジュール内でのみ使われるロー
カル変数を割り当てる記憶領域として用いるものであ
る。そして、あるモジュールを実行するとき、モジュー
ルの中でのみ使われるローカル変数が頻繁に使われ、再
利用性が高いという経験則がある。従って、処理中のモ
ジュールのスタックを高速データメモリに割り当てるこ
とにより、高速化を期待できる。また、プログラムの記
述スタイルとして、再利用される変数を一旦、ローカル
な変数に代入して、それ以降、ローカルな変数を用いる
ようなスタイルをとることによっても、高速化を図るこ
とができる。
【0031】上記のようなスタックとして高速データメ
モリを用いる例を図8を用いて説明する。これはデータ
スタックとしての利用法で、今プログラム80はメイン
プログラム81、サブプログラム82、83の3つのモ
ジュールからなっていて、メインプログラム81はサブ
プログラム82、83を直接呼び出すものとする。この
メインプログラムの動作中のスタックの状態を図の左側
に示した処理の流れに応じて説明すると次のようにな
る。 (1) モジュールMAIN(メインプログラム81)
開始時に、スタック先頭SPを上げてMAIN用のデー
タ領域DMAINを確保し、利用する。 (2) モジュールSUB1(サブプログラム82)を
呼び出す。このモジュールSUB1開始時に、スタック
先頭SPを上げてモジュールSUB1用のデータ領域D
SUB1を確保し、利用する。 (3) モジュールSUB1終了時にスタック先頭SP
を元の位置に下げてモジュールSUB1用のデータ領域
DSUB1を開放する。 (4) モジュールMAINでMAIN用のデータ領域
DMAINを利用する。 (5) モジュールSUB2(サブプログラム83)を
呼び出す。このモジュールSUB2開始時に、スタック
先頭SPを上げてSUB2用のデータ領域DSUB2を
確保し、利用する。 (6) モジュールSUB2終了時にスタック先頭SP
を元の位置に下げてSUB2用のデータ領域DSUB2
を開放する。 (7) モジュールMAINでMAIN用のデータ領域
DMAINを利用する。
【0032】サブモジュールからさらに別のサブモジュ
ールを呼び出すような、図9のようなプログラム90の
場合には、モジュールSUB1からモジュールSUB2
を呼び出したとき、スタック94のスタック先頭SPが
モジュールSUB1のデータ領域の先頭よりさらに上げ
られ、データ領域DMAIN、DSUB1、DSUB2
が同時にスタック794上に確保された状態になる。
【0033】図10は、スタックの別の利用法を説明す
る図である。これは図8と同じプログラム80を対象と
している。図8、図9の例では、スタック84を利用す
るのは各モジュールのローカル変数のみであったが、こ
こではローカル変数以外に、モジュールに渡される配列
変数などのパラメータや、モジュールでの処理が終了し
たときに上位のモジュールに戻るリターンアドレスなど
のシステムパラメータPARAが、格納される。これに
よりモジュール中での配列インデックスの計算及びモジ
ュールの呼び出し処理などが高速化される。
【0034】さらに上記の説明では、サブプログラム等
の作業エリア、つまりローカル変数やシステムパラメー
タの動的確保というスタックの利用法であるが、サブプ
ログラムに限らず、再起呼び出しや割り込み処理におい
ても、高速メモリ内もある既存のデータを破壊せずに、
スタックとして高速メモリ内に新たにデータ領域やパラ
メータ領域を確保して使用することができる。
【0035】この様に高速データメモリをスタックとし
て用いると、確保しようとするデータ領域が高速データ
メモリの容量をオーバーしない限り、データやパラメー
タ領域が動的に確保されて利用され、高速メモリが有効
に利用され、またその利用領域の調整が不用である。モ
ジュール等で用いるデータ領域の大きさは、モジュール
内のローカル変数、サイズから定まり、これはコンパイ
ル時にわかる。この情報を用いれば、データ領域確保時
にどこまでスタック先頭を上げればよいかがわかる。
【0036】次に、高速データメモリのスタックとして
の利用であって、そのサイズが事実上制限されないよう
な利用法について述べる。スタックでは、あるモジュー
ルでの処理が終了し、上位のモジュールに戻るまで、そ
の上位のモジュールのスタックを記憶しておくことが必
要である。これは上位のモジュールに戻ったとき、ロー
カルな変数やシステムパラメータの内容を保証するため
に必然的に要請される。即ち、あるモジュールが呼び出
されているとき、その上位のモジュールで確保されたス
タックはすべて記憶されている必要がある。これは、1
つのモジュールから、同一のモジュールを呼び出す、い
わゆる再起呼び出しのときも同様である。しかし、呼び
出しのネストが深いと、スタック領域は有限な領域の高
速データメモリ10に入りきらない場合がある。
【0037】そこで本発明では、図11に示したよう
に、高速データメモリのアドレス空間D10とともに主
記憶の論理アドレス空間D401を用いて、サイズの制
限が事実上ないスタック空間を構築する。ここでサイズ
制限が実質上ないとしたのは、実装される主記憶の他
に、データ用メモリ管理ユニットにより膨大な容量を有
する磁気記憶装置が、仮想アドレス空間として主記憶の
論理アドレス空間に割り付けられるためである。そして
あるプログラムの実行中に何段もの呼び出しが重なる等
のために高速データメモリの空間だけで足りなくなる
と、上位のモジュールのデータを順に主記憶、あるいは
場合によっては磁気記憶装置へ移して、現在処理中の領
域が高速データメモリのアドレス空間D10に入るよう
にして用いる。
【0038】また、処理中のモジュールのスタック領域
が高速データメモリのアドレス空間と主記憶の論理アド
レス空間の両者にまたがると、モジュールの処理中にア
ドレスの切り替えが生じ、高速化が極めて困難となるた
め、1つのモジュールに割り当てるスタックの容量の上
限を設定し、少なくとも高速データメモリ10の容量を
越えないようにする。即ち、図11に示したように、処
理中のモジュールのスタック領域をアクセス範囲21と
呼ぶこととすると、このアクセス範囲21が常に、高速
データメモリのアドレス空間に割り当てられるように、
各モジュールの使うスタック領域を制限しておく。プロ
グラムによっては、1つのモジュールのローカルな変数
が高速データメモリに入りきらないことが生じうるが、
このような例外的な場合は、大きな変数領域を格納する
ために、主記憶上に第2のスタック領域を設けてもよ
い。もしくはプログラムを書き換えてローカルな変数を
減らすことも容易である。
【0039】上記のようにスタック空間を高速データメ
モリより拡張すると、主記憶のアドレス空間と高速デー
タメモリのアドレス空間との間でのデータ移動が発生
し、この処理を簡易化し、スタックの高速性を失わない
ようにする必要がある。モジュールのスタック領域はロ
ーカルな変数の数などによって変わり、一律に決まらな
い。通常、先に述べたアクセス範囲が高速データメモリ
のアドレス空間全体を占めることは少ない。従って、呼
び出しの連鎖により処理中のモジュールにたどりつくま
での各モジュールでは、そのアクセス範囲は高速データ
メモリのアドレス空間より小さいが、大きさが一律でな
いため、処理中のモジュールのアクセス範囲の高速デー
タメモリのアドレス空間に対する位置は、呼び出される
までの履歴による。この履歴がいかなるときも、処理中
のモジュールのアクセス範囲が高速データメモリに割り
当てられ、かつ1つ上位のモジュールのアクセス範囲に
連続するように、本実施の形態では、図11に示したよ
うに高速データメモリのアドレス空間を環状型とする。
このように上位のモジュールのアクセス範囲に連続させ
ることにより、(a)アクセス範囲の断片化が生じない
ため制御が簡潔になるとともに、(b)上位のモジュー
ルに戻ったとき、上位のモジュールのアクセス範囲が高
速メモリに入っている可能性が高く、主記憶とのデータ
の転送を抑制できる。以下、このような使い方をした高
速データメモリを環状バッファと呼ぶ。なお、環状バッ
ファの先頭の決め方は任意性があるが、ここでは処理中
のモジュールのスタック先頭SPとしておく。
【0040】図12は、環状バッファで各モジュールの
スタックがどのようにとられるかを模式的に示したもの
である。A,B,C,Dの4つのモジュールを想定し、
最上位のモジュールAから順次モジュールDまでのスタ
ックが取られている。本図では、処理中であるモジュー
ルDとその上位のモジュールCのスタックは環状バッフ
ァに入るが、モジュールBの一部のスタックとモジュー
ルAのスタックは環状バッファには入りきらず、主記憶
に転送された状態を想定している。主記憶への転送は、
呼び出すモジュールのスタックが、さきに呼び出された
スタックの領域と重複するときに、さきに呼び出された
スタックに付いて行われる。主記憶からの転送は、上位
のモジュールに戻ったとき、主記憶に転送されているス
タック領域について行われる。そして、これらの転送に
当たっては、高速データメモリの内のデータ移動は、環
状バッファとしているので必要が無く、単に簡単なアド
レス変換(論理アドレスと物理アドレスの変換)だけで
対応可能である。
【0041】但し、図12の例では、モジュールDの処
理が終了し、モジュールCに戻ってもモジュールCのス
タックは環状バッファ23にあり、主記憶との転送が不
要である。これは、前述した上位のモジュールのアクセ
ス範囲に連続させた効果である。さらに、科学技術計算
では収束計算などの繰り返し計算が多用される。繰り返
し処理の核となる計算をモジュールDで記述すれば、モ
ジュールCからモジュールDが繰り返し呼ばれることに
なる。このようなとき、繰り返し中のスタックはすべて
環状バッファに取られており、主記憶との転送は必要と
せず、高速処理を実現できる。
【0042】主記憶と環状バッファ(高速データメモ
リ)との間のデータ転送は、演算ユニットにおける処理
のバックグラウンドで行わせると、データ転送のための
オーバーヘッドを殆どなくすことができる。図13はそ
の説明図で、これは、1つのモジュールのアクセス範囲
が環状バッファに対してある程度小さいときに有効にな
る。例えばアクセス範囲が環状バッファの容量の1/4
だとしよう。このとき、環状バッファには少なくとも4
つ分のスタックをとることができる。図には、上位か
ら、A0,A,B,C,D,Eのモジュールがあり、こ
のうちA,B,C,Dの4つのモジュールのスタック領
域が環状バッファに取られている様子を示している。仮
に、モジュールEの処理中に環状バッファにモジュール
E,D,C,Bのスタックがあったとし、モジュールE
の処理が終わり、モジュールDに戻ったとする。その時
点で、モジュールEのスタック領域は開放される。ここ
で次に処理が行われるモジュールDのスタック領域も環
状バッファ上にあるから、すぐにデータ転送を必要とし
ない。しかし、次々と処理が終わり上位モジュールへ移
っていくと、やがてモジュールAの処理へ入る。そこで
モジュールE終了により環状バッファの空いた領域をモ
ジュールE,D,C,Bの上位に当たるモジュールAが
使うものとみなし、モジュールAの領域に予め割り当て
ておけば、モジュールAの処理開始時に転送処理のオー
バーヘッドを必要としない。また逆に、モジュールDか
らモジュールEが呼ばれたとき、モジュールDのデータ
を主記憶に転送しておく。これは、さらに下位のモジュ
ールが呼び出されて行ったとき、環状バッファに取られ
ている、モジュールDの領域を下位のモジュールで使う
ことを見越しての処理である。
【0043】このように転送を事前に行う場合、その転
送処理を本来のモジュール処理に割り込ませて行ってい
たのでは意味がない。これらの転送処理はすぐやらなく
ても時間的に余裕があるので、演算ユニットにおけるバ
ックグラウンド処理として行うようにすれば、転送処理
のオーバーヘッドを殆どなくせる。この転送にあたって
は、スタックのデータが一次元的に連続しており、いわ
ゆるDMA(Direct Memory Accsessing)転送が可能で
ある。そこで主記憶と環状バッファとの間のデータ転送
を司るDMAコントローラを付加し、高速データメモリ
または主記憶へのアクセスがないとき、バースト的にデ
ータの転送が行う。また、このような転送は、プロセッ
サにメモリ間のブロック転送の命令コードを持たせ、他
の命令と並列に実行させることによっても可能となる。
言い換えれば、演算ユニットが、例えばモジュールDの
演算コードの実行と並列にブロック転送の命令コードを
実行する。いずれにしても、主記憶と環状バッファとの
間のデータ転送は、プロセッサのモジュール処理の中
で、高速データメモリまたは主記憶へのアクセスが発生
しないときに限られる。
【0044】以上では、本発明の特徴とする高速データ
メモリの利用方法として、コンパイラにより繰り返し計
算で再利用性の高いデータを抽出し、高速メモリに割り
付ける方法、及びデータスタックを高速メモリに割り付
ける方法の2通りの方法を示した。前者の方法は、コン
パイラがFortranなどの高級言語で記述されたプログラ
ムをコンパイルし、実行形式のオブジェクトコードを生
成するときに、コンパイラに実装される高速メモリの容
量を数え、高速メモリを用いたオブジェクトコードを生
成させる。オブジェクトコードがただ1つ実行される、
いわゆるシングルプロセスのとき、高速メモリは、1つ
のオブジェクトコードで占められるだけなので、オペレ
イティングシステムの介在はオブジェクトコードを起動
したり、結果を磁気記憶装置に出力したりすることに留
まる。
【0045】データスタックとして利用するときは、2
通りの考え方がある。1つはコンパイラにスタック領域
が高速メモリの容量を越えたときの主記憶への転送処理
も含めたオブジェクトコードを生成させ、オペレイティ
ングシステムの介在を極力押さえるやり方である。2つ
めは、高速メモリの容量を越えたときの主記憶への転送
処理はオペレイティングシステムに分担させるやり方で
ある。本発明は、どちらかに限定するものではない。但
し、両者とも、1つのモジュールのアクセス範囲を高速
メモリの容量に抑えるように、高速メモリの容量と1つ
のモジュールのアクセス範囲をコンパイラあるいはオペ
レイティングシステムに設定する。
【0046】複数のプロセスを並行に実行させる、いわ
ゆるマルチプロセスを実現する場合には、オペレイティ
ングシステムの積極的な介在が不可欠である。これは、
マルチプロセスが各プロセスで共通の資源であるプロセ
ッサならびに高速メモリを、時分割的に交互に用いるた
めである。さらに、高速メモリについて、プロセス間で
競合を生じさせない特別な機構が必要となる。図14
は、マルチプロセスのために高速データメモリをバンク
メモリとして実装したプロセッサの構成例で、演算ユニ
ット、レジスタ、ロード・ストアユニット、メモリ管理
ユニット、キャッシュメモリ、及びキャッシュコントロ
ーラ等は、図1〜3のような構成であるが、ここでは概
略的に図示している。バンクメモリ10−1〜10−4
は、高速データメモリを分割して構成したもので、1つ
のバンクメモリを1つのプロセスに割り当てる。制御を
単純化するために、各々のプロセスには、バンクメモリ
を同一のアドレスとして割り当てる。プロセスの切り替
え時にバンクメモリ切り替えをすることにより、ロード
・ストアユニット16からは、処理中のプロセスのバン
クメモリのみをアクセスする。このプロセスの切り替え
は、オペレイティングシステムの役割である。さらに、
オペレイティングシステムにはプロセス数を監視し、プ
ロセス数がバンクメモリの数を越えたとき、バンクメモ
リのデータを主記憶に退避させる役割を持たせる。この
退避は、先に述べたDMA転送によっても可能である。
さらに、バンクメモリの退避を事前にDMAによるバッ
クグラウンド処理によって行っておけば、プロセス切り
替えが短時間でできる。また、DMAに対して各々のバ
ンクメモリに異なるアドレスを持たせ、DMAがすべて
のバンクメモリにアクセスできるようにすることによ
り、任意のバンクメモリの主記憶への退避が可能とな
る。
【0047】マルチプロセスで各プロセスにバンクメモ
リを割り当てる方法では、各プロセスが利用できる高速
データメモリの領域は一定である。これをダイナミック
に可変長の領域を割り当てられるようにすることもで
き、その方法を図15を用いて説明する。この方法で
は、オペレイティングシステムの管理下にプロセステー
ブル15を設け、プロセスごとのデータ領域D1、D
2、D3等を当該プロセス実行開始時に決定し、割り付
ける。そしてその割り付けた領域の始点、終点のアドレ
スをプロセステーブル15に記憶しておき、プロセス切
り替え時に参照範囲を変えるようにする。データ領域の
割り付け方法として、例えば高速データメモリをより頻
繁に使うプロセスにより大きい領域を割り付けると、高
速データメモリの利用効率が向上し、従ってプロセッサ
としての処理速度が向上する。
【0048】
【発明の効果】本発明によれば、高速データメモリへの
アクセスにはアドレス変換やアドレス照合などの負荷が
発生しないので、キャッシュメモリよりも大容量の高速
データ保持機構が構築できる。さらに、この高速データ
メモリに頻繁に再利用されるデータを選択的に格納する
ことにより、プロセッサから低速な主記憶へのアクセス
は大幅に少なくなり、プロセッサの実行速度が大幅に向
上するという効果がある。
【図面の簡単な説明】
【図1】本発明になるプロセッサの構成例を示すブロッ
ク図である。
【図2】本発明になるプロセッサの別の構成例を示すブ
ロック図である。
【図3】本発明になるプロセッサの別の構成例を示すブ
ロック図である。
【図4】本発明の計算機の構成例を示す概略ブロック図
である。
【図5】プログラムの例である。
【図6】図5のプログラム実行時の従来のキャッシュメ
モリと本発明の高速データメモリの使い方を説明する図
である。
【図7】別のプログラム例である。
【図8】スタックの動作例である。
【図9】スタックの別の動作例である。
【図10】スタックをデータとシステムパラメータの双
方で使ったときの動作例である。
【図11】環状バッファとしての高速データメモリと主
記憶を連結して構成したスタックの説明図である。
【図12】図11のスタックの動作例説明図である。
【図13】図11のスタックの動作例説明図である。
【図14】高速データメモリをバンクメモリとして用い
たプロセッサの説明図である。
【図15】高速データメモリを複数の可変長スタック領
域として用いる方法の説明図である。
【符号の説明】
10 高速データメモリ 10−1〜10−4 バンクメモリ 15 プロセステーブル 84、94 スタック 101、102 演算ユニット群 111、112 レジスタ群 120、121、122 ロード・ストアユニット 140、141 データ用メモリ管理ユニット 142 命令用メモリ管理ユニット 151 データ用キャッシュメモリ 152 命令用キャッシュメモリ 400 プロセッサ 401 主記憶 402 磁気記憶装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 高橋 俊 茨城県日立市大みか町七丁目2番1号 株 式会社日立製作所電力・電機開発本部内 (72)発明者 高橋 文夫 茨城県日立市大みか町七丁目2番1号 株 式会社日立製作所電力・電機開発本部内 Fターム(参考) 5B005 JJ11 KK12 MM02 MM03 RR01 UU41 5B060 CA03 CB01

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 主記憶とは独立なアドレス空間を持ち、
    プログラムからの制御によりレジスタと高速にデータの
    やり取りができる高速データメモリを備えたことを特徴
    とするプロセッサ。
  2. 【請求項2】 主記憶とは独立なアドレス空間を持ち、
    プログラムからの制御によりレジスタと高速にデータ及
    びシステムパラメータの少なくとも一方の情報のやり取
    りができる高速データスタックを備えたことを特徴とす
    るプロセッサ。
  3. 【請求項3】 請求項2記載のプロセッサにおいて、前
    記高速データスタックは、主記憶空間に設けられたスタ
    ック領域と連結され、かつこの連結により構成された全
    スタック領域の先頭部分が常に当該高速データスタック
    に格納されるように管理されるスタックであることを特
    徴とするプロセッサ。
  4. 【請求項4】 請求項1ないし3の内の1つに記載のプ
    ロセッサを備えたことを特徴とする計算機。
  5. 【請求項5】 請求項1に記載のプロセッサと、 参照頻度の高い変数及び演算処理のための中間変数の少
    なくとも一方を前記プロセッサに設けられた高速データ
    メモリに格納する手段と、 を備えたことを特徴とする計算機。
  6. 【請求項6】 請求項2または3に記載のプロセッサ
    と、 プログラムを構成する各モジュールにおいて、少なくと
    も当該モジュール内のみで用いられるローカル変数を抽
    出する第1の手段と、 各モジュールの実行時に前記第1の手段により抽出され
    た変数を前記プロセッサに設けられた高速データスタッ
    クへダイナミックに割り付ける第2の手段と、 を備えたことを特徴とする計算機。
JP10200412A 1998-07-15 1998-07-15 プロセッサ及び計算機 Pending JP2000029783A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10200412A JP2000029783A (ja) 1998-07-15 1998-07-15 プロセッサ及び計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10200412A JP2000029783A (ja) 1998-07-15 1998-07-15 プロセッサ及び計算機

Publications (1)

Publication Number Publication Date
JP2000029783A true JP2000029783A (ja) 2000-01-28

Family

ID=16423899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10200412A Pending JP2000029783A (ja) 1998-07-15 1998-07-15 プロセッサ及び計算機

Country Status (1)

Country Link
JP (1) JP2000029783A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005025740A (ja) * 2003-07-01 2005-01-27 Samsung Electronics Co Ltd ホットルーチンメモリを有するマイクロプロセッサシステム及びその使用方法
JP2008525887A (ja) * 2004-12-23 2008-07-17 インテル・コーポレーション スレッドプロセッサにおける多重クライアントへのバッファの動的割り当て

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005025740A (ja) * 2003-07-01 2005-01-27 Samsung Electronics Co Ltd ホットルーチンメモリを有するマイクロプロセッサシステム及びその使用方法
JP2008525887A (ja) * 2004-12-23 2008-07-17 インテル・コーポレーション スレッドプロセッサにおける多重クライアントへのバッファの動的割り当て
JP4787844B2 (ja) * 2004-12-23 2011-10-05 インテル・コーポレーション スレッドプロセッサにおける多重クライアントへのバッファの動的割り当て
US8225012B2 (en) 2004-12-23 2012-07-17 Intel Corporation Dynamic allocation of a buffer across multiple clients in a threaded processor
US8601177B2 (en) 2004-12-23 2013-12-03 Intel Corporation Dynamic allocation of a buffer across multiple clients in a threaded processor

Similar Documents

Publication Publication Date Title
US4991088A (en) Method for optimizing utilization of a cache memory
JP3717212B2 (ja) 情報処理装置及び情報処理ユニット
EP0230354B1 (en) Enhanced handling of large virtual storage extents
US5729714A (en) Shared memory access method and apparatus with address translation
JP2826028B2 (ja) 分散メモリ型プロセッサシステム
JPS58147879A (ja) キヤツシユメモリ制御方式
JP2000029783A (ja) プロセッサ及び計算機
JP2002007213A (ja) キャッシュメモリ制御方法及びプログラム処理方法
US5933856A (en) System and method for processing of memory data and communication system comprising such system
US6279082B1 (en) System and method for efficient use of cache to improve access to memory of page type
KR920008959B1 (ko) 가상 컴퓨터 시스템의 정보 이송 방법
Laliotis Implementation aspects of the symbol hardware compiler
JP2001022581A (ja) データ処理装置及びコンピュータ読み取り可能な記憶媒体
JPH07325805A (ja) ベクトル処理装置
JP3388518B2 (ja) プログラム制御装置
JPH03182945A (ja) 主記憶内データ転送方式
JPH0447344B2 (ja)
JPH03282734A (ja) コンパイラ装置及びコンパイル方法
JPH1055308A (ja) キャッシュメモリ
KR19990026795A (ko) 마이크로프로세서
JPH10247182A (ja) マルチプロセッサシステム
Wolfe Design, implementation, evolution of high level accelerator programming
JPH03250336A (ja) メモリ割り当て方式
JPH04280324A (ja) 記憶管理装置
JPH09218791A (ja) ファクシミリ制御装置