JP2002544619A - 専用ポインタメモリを使用するオブジェクト指向処理 - Google Patents

専用ポインタメモリを使用するオブジェクト指向処理

Info

Publication number
JP2002544619A
JP2002544619A JP2000618817A JP2000618817A JP2002544619A JP 2002544619 A JP2002544619 A JP 2002544619A JP 2000618817 A JP2000618817 A JP 2000618817A JP 2000618817 A JP2000618817 A JP 2000618817A JP 2002544619 A JP2002544619 A JP 2002544619A
Authority
JP
Japan
Prior art keywords
memory
pointer
processor
dedicated
dedicated memory
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.)
Withdrawn
Application number
JP2000618817A
Other languages
English (en)
Inventor
ケビン、ロス
ウィンスロップ、エル.サビル
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.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2002544619A publication Critical patent/JP2002544619A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Abstract

(57)【要約】 オブジェクト指向処理が、専用レジスタにおけるオブジェクト変数と方法テーブルとのメモリ位置へのポインタを保持することにより、実行される。プロセッサの現在及び前回の処理のポインタは、専用レジスタの第1及び第2グループにそれぞれ、保持されている。各オブジェクトにおいて、オブジェクト変数は、メモリ位置に格納され、各方法テーブルへのポインタはオブジェクト変数の位置の指示されたメモリ位置に格納されている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明はオブジェクト指向処理に関し、特にオブジェクトに関連する情報の操
作に関する。
【0002】
【従来の技術】
オブジェクト指向処理において、プロセッサはオブジェクトに関する情報を操
作する。このようなオブジェクト指向処理の利点と使用の幾つかは、米国特許第
5708838号に説明されている。
【0003】 オブジェクトの各例は、オブジェクトに関する特徴を定義する一組のオブジェ
クト変数と、オブジェクトが支持する方法を有している。例えば、RAMに位置
するFIFOの一組のオブジェクト変数は、通常FIFOの最大サイズ、その現
在使用されているメモリ位置、その入力の現在のメモリ位置、その出力の現在の
メモリ位置を定義するコードを含む。また通常FIFOオブジェクトが支持する
方法は、APPEND、REMOVE、FLUSH、INITIALIZEなど
の代表的なFIFO機能を実行する操作を含む。
【0004】 オブジェクト指向処理を採用することの欠点の1つは、構造指向(structure-o
riented)またはデータフロー指向(data-flow-oriented)処理に比べてより多くの
命令の記憶と処理が必要になることである。そのため、オブジェクト指向処理の
多目的性を広げるためには、更にコード空間を提供し、機能を実行する方法へア
クセスするのに要する時間を増加させなければならない。
【0005】 通常、オブジェクトが支持する方法は、アルゴリズムに従って、オブジェクト
変数と、オブジェクトに関する不揮発情報を提供するパラメータとを操作する。
オブジェクトは、他のオブジェクトの指示を含んでいていてもよく、また方法の
実行においてパラメータとして自身が送られてもよく、更に他のオブジェクトの
方法を呼び出すのに使用されてもよい。これは、オブジェクト指向処理の非常に
時間のかかる一面である。
【0006】
【課題を解決するための手段】
本発明は、オブジェクト指向処理を使用することの上記の欠点を解決すること
にある。
【0007】 本発明によれば、プロセッサは、コード空間およびアクセス時間を減少させる
ように、現在および前回のオブジェクト変数と、現在および前回のオブジェクト
に関する方法のメモリ位置を載せた現在および前回の方法テーブルとを操作する
。そのため、プロセッサは、 ・複数のオブジェクトの少なくとも1つに対する少なくとも1つのオブジェクト
をメモリに記憶させ、 ・複数のオブジェクトに対する少なくとも1つの方法テーブルをメモリに記憶さ
せ、 ・少なくとも1つのオブジェクト変数および少なくとも1つの方法テーブルのう
ち現在使用されているものをメモリにおいて指示するポインタを記憶する第1専
用メモリを提供し、 ・少なくとも1つのオブジェクト変数および少なくとも1つの方法テーブルのう
ち前回使用されたものをメモリにおいて指示するポインタを記憶する第2専用メ
モリを提供する。それぞれのポインタを含む専用メモリを使用することにより、
プロセッサは、現在および前回のオブジェクト変数および方法テーブルがどこに
あるのかを本質的に知っている。これにより、オブジェクト変数および方法テー
ブルに対するコードのサイズが縮小される。現在および前回のオブジェクト変数
および方法テーブルに専用メモリを設けることにより、プロセッサは現在のオブ
ジェクト方法から前回のオブジェクト方法に非常に迅速に切替を行うことが可能
となる。
【0008】 ちなみに、ここで使用する「メモリ」という語は一般に、使用され、RAM、
DRAM、ROM、レジスタおよびこのような装置の組み合わせを無制限に含む
様々な種類の揮発性および不揮発性装置を含むことと合致していると解釈される
。「専用」メモリは、メモリがプロセッサとして知られる1つまたは複数の特定
の位置を有していることを意味している。しかし、このような位置は固定である
必要はなく、プロセッサの制御により変更されてもよい。また、ここで使用する
ように、「ポインタ」という語は、メモリ位置を識別する何らかの値である。更
に、「読込み」は1つのメモリから情報を取り出して、これを別のメモリに書き
込むことを意味する。
【0009】
【発明の実施の形態】
図1のオブジェクト指向処理システムは、プロセッサ10およびメモリ20を
含んでいる。例示するプロセッサ10は、クロックパルスを使用して、プログラ
ムカウンタレジスタが識別する命令を順序付けるハードウェア促進ユニットであ
る。通常、プログラムカウンタレジスタは、読み出されてプロセッサによって処
理される次の命令のメモリ位置を含んでいる。
【0010】 特に、プロセッサは、コンテキストレジスタ集合12、命令デコーダ14、演
算ロジックユニット16を含んでいる。この実施例において、メモリ20は、特
にオブジェクト変数、方法テーブルポインタ、方法テーブルを記憶し、また方法
の実行を助長するLIFOスタックとして機能する多数のメモリ位置を有するR
AMを含んでいる。
【0011】 プロセッサ10およびメモリ20は共通バス30に接続されて、互いに、また
バスに接続されている他のハードウェアと情報の伝達を行っている。バスは、ア
ドレス、割り込み、データ、読出しストロボ、書込みストロボ、装置選択ストロ
ボなどの情報を伝える各ラインを含んでいる。好適には、これはプロセッサおよ
びメモリと共に共通のシリコン基板上に少なくとも一部形成される高速バスであ
る。
【0012】 コンテキストレジスタ集合12は、プロセッサの現在および前回の操作に関連
する情報を保持するレジスタ121および122の第1および第2グループ、1
つまたは複数の多目的レジスタ123、スタックのアドレッシングで使用する2
つのレジスタ124および125を含んでいる。特に、コンテキストレジスタ集
合のレジスタは、 ・現在のオブジェクトに対する一組の変数のメモリにおける位置を識別するポイ
ンタを保持するオブジェクト変数ポインタレジスタOVPと、 ・前回のオブジェクトに対する一組の変数のメモリにおける位置を識別するポイ
ンタを保持する前オブジェクト変数ポイントレジスタPOVPと、 ・現在のオブジェクトに対する方法テーブルのメモリにおける位置を識別するポ
インタを保持する方法テーブルポインタレジスタMTPと、 ・前回のオブジェクトに対する方法テーブルのメモリにおける位置を識別するポ
インタを保持する前方法テーブルポインタレジスタPMTPと、 ・プロセッサにより処理される次の命令のメモリアドレスを保持する連続更新プ
ログラムカウンタレジスタPCと、 ・プログラムカウンタレジスタに前回保持されていた実行されてない命令のメモ
リアドレスを保持する前プログラムカウンタレジスタPPCと、 ・メモリ20から読み出されるか、あるいは演算ロジックユニット16によって
生成されるデータを含む多目的レジスタ123と、 ・アクセスされている現在のスタックアドレスのメモリ内の位置を識別するスタ
ックポインタSPを保持するレジスタ124と、 ・スタックにおける下部フレームのベースアドレスのメモリにおける位置を識別
するスタックフレームポインタSFPを保持するレジスタ125とを含んでいる
【0013】 命令デコーダ14は、メモリ20から読み出した命令を演算ロジックユニット
16が実行する低レベル操作コードに変換する例えばシーケンサやマイクロシー
ケンサなどの従来のハードウェアコンポーネントである。演算ロジックユニット
も従来のハードウェアコンポーネントである。
【0014】 ちなみに、便宜上、図1に示すメモリ20は、 ・オブジェクトの特定の例のオブジェクト変数、 ・オブジェクトの特定の例に対する方法テーブルのメモリにおける位置を識別す
る方法テーブルポインタ、 ・方法テーブルポインタが指示する方法テーブルのそれぞれに対する記憶空間の
単一ブロックのみを示している。
【0015】 実際、通常は異なるオブジェクト変数、異なる方法テーブル、その各ポインタ
、また図1に示されていないその他の情報(例えば方法テーブルが指示する方法
のコード化)に対して、多数の記憶空間ブロックが存在する。記憶空間のブロッ
ク数は、主にオブジェクトの数とそれらが支持する方法と、また1つ以上のオブ
ジェクトに関する情報を記憶する際にいずれかのブロックが共有されるか否かに
よって異なる。例えば、同一の一般タイプの多数の異なるオブジェクトが、同一
の方法テーブルを使用することもある。しかしながら、オブジェクトの各例に対
し、各方法テーブルポインタは、所定の位置、すなわちプロセッサがアクセスす
る前に決定される位置に保存される。他の例では、プロセッサがアクセスする命
令の一部としてポインタを保存する。しかし、本発明の特に効果的な実施例にお
いては、方法テーブルポインタは、関連するオブジェクト変数の位置に対し手所
定の関連性を有するメモリ位置に保存される。図1に例示する実施例においては
、各方法テーブルポインタは、OV−2に等しいベース(開始)アドレスを有す
るメモリ位置、すなわちオブジェクト変数のベースアドレスOVよりも2だけ小
さな数値を有するアドレスに保存される。方法テーブルのメモリのブロックは、
MTのベースアドレスを有している。
【0016】 プロセッサ10は、コンテキストレジスタ集合におけるレジスタ121および
122の第1および第2グループ間でオブジェクト関連情報を転送し、また同情
報をスタックに対して送受信する場合に、特定の命令を使用する。例示する本実
施例においては、これらの命令には、CALL、RETURN、ENTER[M
]、LEAVE[N]という名称があり、一般に次のように説明される。
【0017】 ・CALL命令により、プロセッサは異なる方法の実行を開始する。この命令
には、2つの異なる形式、すなわちローカルCALLおよび非ローカルCALL
がある。
【0018】 ・ローカルCALLにより、プロセッサは現在使用中の方法テーブル内でアド
レスされる方法の実行を開始する。この命令により、プロセッサはレジスタPC
、MTP、OVPの内容をレジスタPPC、PMTP、POVPにそれぞれ読み
込み、実行する新しい現在の方法の最初の命令のアドレスと共にレジスタPCを
更新する。
【0019】 ・非ローカルCALLにより、プロセッサは、現在使用されていない方法テー
ブル内でアドレスされ、また現在の方法テーブルのオブジェクトとは異なるオブ
ジェクトに対する方法の実行を開始する。この命令はローカルCALLが行うこ
と全てを実行するが、その他新しい方法テーブルポインタおよび新しいオブジェ
クト変数ポインタと共にレジスタMTPおよびOVPを更新することをプロセッ
サに実行させる。
【0020】 ・RETURN命令により、プロセッサは前回の方法の実行に戻ることを開始
する。この命令により、プロセッサはレジスタPPC、PMTP、POVPの内
容をレジスタPC、MTP、OVPにそれぞれ読み込む。
【0021】 ・ENTER命令により、プロセッサは、レジスタ124の数値、すなわちス
タックポインタSPを、ローカル変数(すなわち、現在実行中の方法に関連する
変数)を記憶するのに充分な記憶空間のあるアドレスにデクリメントさせる。必
要な空間は、ENTER命令の一部を形成する数値Mによって示される。次に、
プロセッサは、レジスタPPC、PMTP、POVPおよび125(現在のスタ
ックフレームポインタSFP)の内容をスタックに記憶させ、(レジスタ124
における)スタックポインタSPの数値を、数値Mが示す空間と新たに記憶され
た情報が占める空間を提供する数値にデクリメントさせ、更にスタックフレーム
ポインタSFPの新たな数値として、レジスタ124からレジスタ125に数値
を読み込む。
【0022】 ・LEAVE命令により、プロセッサは下部フレームの内容をスタックから取
り出す。特に、下部フレームは、プロセッサがそれぞれレジスタPC、MTP、
OVP、125に読み込むレジスタPPC、PMTP、POVPの最後に書き込
まれた内容と数値SFP’を含んでいる。この命令が完了すると、プロセッサは
スタックポインタSPをスタックの新しいベースアドレスにインクリメントする
。これは、命令に含まれ、下部フレームにおいて保存されない情報(例えばパラ
メータや変数)が使用したのがどのメモリ空間であるかを示す数値Nによって促
進される。
【0023】 図2は、連続する期間のプロセッサの操作のシーケンスを例示している。この
図は3つの列で構成され、第1列はプロセッサが一時的に実行している操作を、
第2列はレジスタ121および122の第1および第2グループの一時的内容を
、また第3列はスタックの一時的内容を示している。ちなみに、括弧を使用して
、レジスタやその他のメモリ位置の内容を表している。例えば、[PC]はプロ
グラムカウンタレジスタPCの内容を表している。
【0024】 シーケンスは、プロセッサがオブジェクトAに対する方法テーブルにアドレス
される第4の方法である方法A4を実行中であるときに、時間tで始まる。こ
のとき、 ・レジスタOVPは、オブジェクトAに対するオブジェクト変数を含むメモリ2
0における位置を識別するベースアドレスOV(A)を含んでいる。
【0025】 ・レジスタMTPは、オブジェクトAに対する方法テーブル(方法テーブルA)
を含むメモリ20における位置を識別するベースアドレスMT(A)を含んでい
る。
【0026】 ・レジスタPCは、方法A4を実行中のプロセッサが実行する次の命令を含むメ
モリ20における位置を識別するアドレスMT(A4,t)を含んでいる。
【0027】 ・レジスタPOVPは、(プロセッサがオブジェクトに関する情報を前回操作し
ていたとすると)前回のオブジェクトに対するオブジェクト変数を含むメモリ2
0における位置を識別するベースアドレス[POVP]を含んでいる。
【0028】 ・レジスタPMTPは、前回のオブジェクトに対する方法テーブルを含むメモリ
20における位置を識別するベースアドレス[PMTP]を含んでいる。
【0029】 ・レジスタPPCは、前回の方法に対してプロセッサが実行する次の命令を含む
メモリ20における位置を識別するアドレス[PPC]を含んでいる。
【0030】 ・スタックフレームポインタSFPによって識別され、複数の隣接するメモリア
ドレスを含むスタックのベースフレームは、 ・前回書き込まれたスタックフレームのアドレスを識別する[PPC]、[P
MTP]、[POVP]およびスタックフレームポインタSFP’と、 ・方法A4の実行中に生成されたいずれかのローカル変数LV(A4)、例え
ば計算の実行中に生成されるループカウントと、 ・前回の方法の実行中に生成された前回書き込まれたパラメータPPP、例え
ば修正されるオブジェクトに対するポインタや次に実行される方法が使用する変
数とを含んでいる。
【0031】 時間tでは、プロセッサが、まずレジスタ124におけるスタックポインタ
SPをスタックの新しい下部アドレスを識別する新数値にデクリメントし、次に
これらのパラメータをそのアドレスに保存することにより、方法A4の実行中に
生成されたパラメータPP(A4)をスタックに書き込む。またプログラムカウ
ンタレジスタPCに含まれているアドレス、すなわちアドレスMT(A4,t )で命令を実行することも開始され、レジスタPCをインクリメントして実行す
る次の命令のアドレス、すなわちアドレスMT(A4,t)を識別する。
【0032】 時間tでは、方法A4の実行中に、プロセッサはローカルCALL命令CA
LL A2を受ける。この命令には、方法A2に対する方法テーブルAにインデ
ックスを指定するパラメータMTI(A2)が含まれる。この命令の実行におい
て、プロセッサは、 ・第1レジスタグループ121の内容を第2レジスタグループ122にコピーし
、 ・パラメータMTI(A2)で指定されるインデックスを使用して、(演算ロジ
ックユニット16において)方法A2の開始アドレスを含む方法テーブル内のア
ドレスを計算し、このアドレスをプログラムカウンタレジスタPCにロードして
方法A2の実行を開始する。
【0033】 時間tでは、方法A2の実行中に、プロセッサは命令ENTER Mを受け
る。この命令の実行において、プロセッサは、 ・スタックポインタSPを新しい数値にデクリメントし、方法A2の実行中に生
成される変数に対する数値Mが示す別の空間の量をスタックに設け、 ・この別の空間の下に、 ・レジスタグループ122の内容、すなわちMT(A4,t)、MT(A)
、OV(A)と、 ・方法A4に対する前回のスタックフレームの位置を識別するスタックフレー
ムポインタSFP″とを送り込み、 ・スタックフレームポインタSFPの新たな数値として、レジスタ124からレ
ジスタ125に数値を読み込む。
【0034】 時間tでは、方法A2の完了後、プロセッサは命令LEAVE Nを受ける
。この命令の実行において、プロセッサは、 ・スタックから下部フレームの内容を取り出し、MT(A4,t)、MT(A
)、OV(A)、SFP″をレジスタPC、MTP、OVP、125にそれぞれ
転送し、 ・数値Nによって(レジスタ124にある)スタックポインタSPをスタックの
新しい下部アドレスにインクリメントする。
【0035】 プロセッサは、プログラムカウンタレジスタPCに再び存在するアドレスMT(
A4,t2)で命令の実行を開始することにより、方法A4を再開する。
【0036】 図3は図2と同様であるが、非ローカルCALLの処理中に発生するイベント
のシーケンスを例示している。この場合、時間tおよびtでのイベントは図
2のものと同一である。しかし、時間tでは、プロセッサは(方法テーブルA
における)方法A2に対するローカルCALLを受けるのではなく、(方法テー
ブルCにおける)方法C7に対する非ローカルCALLを受ける。通常、オブジ
ェクトの異なるクラスに関連する異なる種類の方法に対し、異なる方法テーブル
が設けられている。例えば、方法テーブルAはFIFO機能に関する方法で使用
でき、また方法テーブルCはダイレクトメモリアクセス(DMA)機能に関する
方法で使用できる。
【0037】 図3を参照すると、時間tでは、方法A4の実行中に、プロセッサは非ロー
カルCALL命令CALL C7を受ける。この命令には、オブジェクトCに対
するオブジェクト変数と、方法C7に対する方法テーブルCへインデックスを指
定するパラメータMTI(C7)とを含むベースメモリアドレスへのリンクが含
まれている。リンクは、Cのオブジェクト変数に対するベースアドレスを示す実
際のポインタOV(C)、またはOV(C)を含むメモリへのインデックスであ
る。この例では、命令はポインタOV(C)自身を含んでいる。この非ローカル
CALL命令の実行において、プロセッサは、 ・第1レジスタグループ121の内容を第2レジスタグループ122へコピーし
、 ・ポインタOV(C)をレジスタOVPに読み込み、 ・メモリアドレスOV(C)−2からレジスタMTPに方法テーブルポインタM
T(C)を読み込み、 ・パラメータMTI(C7)に指定されるインデックスを使用して、(演算ロジ
ックユニット16において)方法C7の開始アドレスを含む方法テーブルにおけ
るアドレスを計算し、このアドレスをプログラムカウントレジスタPCにロード
して方法C7の実行を開始する。
【0038】 次に、シーケンスは図2で説明されるものと同一である。特に、時間tでは
、方法C7の実行中に、プロセッサは命令ENTER Mを受ける。この命令の
実行において、プロセッサは、 ・スタックポインタSPを新しい数値にデクリメントして、数値Mが示す別の空
間量をスタックに設け、 ・この別の空間の下に、 ・レジスタグループ122の内容、すなわちMT(A4,t)、MT(A)
、OV(A)と、 ・方法A4に対する前回のスタックフレームの位置を識別するスタックフレー
ムポインタSFP”とを送り込み、 ・スタックフレームポインタSFPの新たな数値として、レジスタ124からレ
ジスタ125に数値を読み込む。
【0039】 時間tでは、方法C7の完了後に、プロセッサは命令LEAVE Nを受け
る。この命令の実行中に、プロセッサは、 ・スタックから下部フレームの内容を取り出し、MT(A4,t)、MT(A
)、OV(A)、SFP”をレジスタPC、MTP、OVP、125にそれぞれ
転送し、 ・数値Nによって(レジスタ124にある)スタックポインタSPをスタックの
新しい下部アドレスにインクリメントする。
【0040】 プロセッサは、プログラムカウンタレジスタPCに再び存在するアドレスMT(
A4, t2)で命令の実行を開始することにより、方法A4を再開する。
【0041】 ちなみに、非ローカルCALL命令と比較すると、ローカルCALL命令が使
用するコードサイズは小さく、また命令数も少ない。そのため、CALL命令だ
けではなく、これらの両命令を与えることにより、プロセッサが同一の方法テー
ブルの中である方法から別の方法へ変更するときに、操作の効率と速度が著しく
向上する。
【0042】 図4は、本発明による最も簡素な命令の1つ、すなわちスタックに対して変数
やパラメータの送受信を行わないローカルCALLの処理を示す。この例におい
て、現在実行されている方法(すなわち、方法B1)に対し送り込まれるパラメ
ータや、呼び出された方法(すなわち、方法B2)に対するローカル変数は生成
されない。
【0043】 時間tでは、プロセッサが方法B1の実行を行っているときに、 ・レジスタOVPには、オブジェクトBのオブジェクト変数を含むメモリ20に
おける位置を識別するベースアドレスOV(B)が含まれる。
【0044】 ・レジスタMTPには、オブジェクトB(方法テーブルB)の方法テーブルを含
むメモリ20における位置を識別するベースアドレスMT(B)が含まれる。
【0045】 ・レジスタPCには、方法B1を実行中のプロセッサが実行する次の命令を含む
メモリ20における位置を識別するアドレスMT(B1,t)が含まれる。
【0046】 ・レジスタPOVPには、(プロセッサがオブジェクトに関する情報を前回操作
したとすると)前回のオブジェクトに対するオブジェクト変数を含むメモリ20
における位置を識別するベースアドレス[POVP]が含まれる。
【0047】 ・レジスタPMTPには、前回のオブジェクトに対する方法テーブルを含むメモ
リ20における位置を識別するベースアドレス[PMTP]が含まれる。
【0048】 ・レジスタPPCには、前回の方法に対してプロセッサが実行する次の命令を含
むメモリ20における位置を識別するアドレス[PPC]が含まれる。
【0049】 ・スタックのベースフレームには、 ・前回送り込まれたスタックフレームのアドレスを識別する[PPC]、[P
MTP]、[POVP]、スタックフレームポインタSFP’と、 ・方法B1の実行中に生成された何らかのローカル変数LV(B1)と、 ・前回の方法の実行中に生成された前回送り込まれたパラメータPPPとが含
まれる。
【0050】 時間tでは、方法B1の実行中に、プロセッサはローカルCALL命令CA
LL B2を受ける。この命令には、方法B2に対する方法テーブルBへのイン
デックスを指定するパラメータMTI(B2)が含まれる。この命令の実行にお
いて、プロセッサは、 ・第1レジスタグループ121の内容を第2レジスタグループ122にコピーし
、 ・パラメータMTI(B2)に指定されたインデックスを使用して、(論理ロジ
ックユニット16において)方法B2の開始アドレスを含む方法テーブル内のア
ドレスを算出し、更にこのアドレスをプログラムカウンタレジスタPCにロード
して方法B2の実行を開始する。
【0051】 時間tでは、方法B2の完了後に、プロセッサはRETURN命令を受ける
。この命令の実行において、プロセッサは、 ・PPC、PMTP、POVPの内容をレジスタPC、MTP、OVPにそれぞ
れ読み込み、 ・プログラムカウンタレジスタPCに再び存在するアドレスMT(B1,t
で命令の実行を開始することにより、方法B1を再開する。
【0052】 図5は、スタックに対して変数やパラメータを送受信しない非ローカルCAL
Lの処理を示している。この例において、現在実行中の方法(すなわち、方法B
1)に対して送り込まれるパラメータや、呼び出された方法(すなわち、方法C
7)は生成されない。
【0053】 時間tでは、プロセッサが方法B1の実行中に、 ・レジスタOVPには、オブジェクトBに対するオブジェクト変数を含むメモリ
20における位置を識別するベースアドレスOV(B)が含まれる。
【0054】 ・レジスタMTPには、オブジェクトBに対する方法テーブル(方法テーブルB
)を含むメモリ20における位置を識別するベースアドレスMT(B)が含まれ
る。
【0055】 ・レジスタPCには、方法B1を実行中のプロセッサが実行する次の命令を含む
メモリ20における位置を識別するアドレスMT(B1,t)が含まれる。
【0056】 ・レジスタPOVPには、(プロセッサが、オブジェクトに関する情報を前回操
作したとすると)前回のオブジェクトに対するオブジェクト変数を含むメモリ2
0における位置を識別するベースアドレス[POVP]が含まれる。
【0057】 ・レジスタPMTPには、前回のオブジェクトに対する方法テーブルを含むメモ
リ20における位置を識別するベースアドレス[PMTP]が含まれる。
【0058】 ・レジスタPPCには、前回の方法に対してプロセッサが実行する次の命令を含
むメモリ20における位置を識別するアドレス[PPC]がふくまれる。
【0059】 ・スタックのベースフレームには、 ・前回送り込まれたスタックフレームのアドレスを識別する[PPC]、[P
MTP]、[POVP]、スタックフレームポインタSFP’と、 ・方法B1の実行中に生成された何らかのローカル変数LV(B1)と、 ・前回の方法の実行中に生成された前回送り込まれたパラメータPPPとを含
む。
【0060】 時間tでは、方法B1の実行中に、プロセッサは非ローカルCALL命令C
ALL C7を受ける。この命令には、方法C7に対する方法テーブルCへのイ
ンデックスを指定するパラメータMTI(C7)が含まれる。この命令の実行に
おいて、プロセッサは、 ・第1レジスタグループ121の内容を第2レジスタグループ122にコピーし
、 ・ポインタOV(C)をレジスタOVPに読み込み、 ・メモリアドレスOV(C)−2からレジスタMTPに方法テーブルポインタM
T(C)を読み込み、 ・パラメータMTI(C7)に指定されるインデックスを使用して、(演算ロジ
ックユニット16において)方法C7の開始アドレスを含む方法テーブルにおけ
るアドレスを算出し、このアドレスをプログラムカウンタレジスタPCにロード
して方法C7の実行を開始する。
【0061】 時間tでは、方法B2の完了後に、プロセッサはRETURN命令を受ける
。この命令の実行において、プロセッサは、 ・レジスタPPC、PMTP、POVPの内容をレジスタPC、MTP、OVP
にそれぞれ読み込み、 ・プログラムカウンタレジスタPCに再び存在するアドレスMT(B1,t
で命令の実行を開始することにより、方法B1を再開する。
【0062】 異なる方法の実行を容易にするために、好適には現在のオブジェクトに対する
オブジェクト変数およびそのオブジェクトに対する方法テーブルを、キャッシュ
メモリなどの高速アクセスメモリにその使用中に記憶させる。キャッシュメモリ
への現在のオブジェクトに対するオブジェクト変数と方法テーブルの記憶処理を
高速化し、またキャッシュメモリにおける記憶空間の経済的使用を助長するため
に、オブジェクト変数および方法テーブルのサイズに関する情報を、各方法テー
ブルのベースアドレスに対する所定位置でメモリに予め記憶しておく。図6は、
その実施例を示しており、 ・オブジェクトの変数のサイズに関する情報は、メモリ20におけるベースアド
レスMT−2の位置に記憶し、また ・オブジェクト変数のサイズに関する情報は、メモリ20におけるベースアドレ
スMT−4の位置に記憶する。
【0063】 本実施例において、プロセッサが非ローカルCALLを実行するよう指示を受け
ると、図3に基づいて説明したの同様の動作を行う。しかし、特にプロセッサが
キャッシュメモリを使用して現在のオブジェクト変数および/または方法テーブ
ルを保持する場合、非ローカルCALLが受信されると、各サイズ情報を使用し
てキャッシュメモリが更新される。例えば図3における時間tに受けるCAL
L C7命令を使用すると、この実施例では、命令に含まれるリンクもメモリ2
0におけるベースアドレスOV(C)となる。しかしながら、プロセッサは、O
V(C)−2、MT(C)−2、MT(C)−4が、方法テーブルポインタMT
(C)、オブジェクトC変数のサイズ、オブジェクトC方法テーブルのサイズを
含むメモリ20におけるアドレスであることを本質的に知っている状態で動作す
る。CALL C7命令の実行において、プロセッサは、 ・レジスタOVPにポインタOV(C)を読み込み、 ・メモリ位置OV(C)−2からレジスタMTPへ方法テーブルポインタMT(
C)へ読み込み、 ・メモリ位置MT(C)−2およびMT(C)−4からキャッシュメモリへサイ
ズ情報を読み込み、 ・CALL C7命令に含まれるパラメータMTI(C7)に指定されるインデ
ックスを使用して、方法C7の開始アドレスを含む方法テーブルのアドレスを計
算し、更にこのアドレスをプログラムカウンタレジスタPCへロードして方法C
7の実行を開始し、 ・(現在レジスタOVPおよびMTPに指定されている)各メモリ20の位置か
らキャッシュメモリにオブジェクトC変数および方法テーブルを読み込む。
【0064】 ちなみに、コンテキストレジスタ集合における何れかまたは全てのレジスタは、
キャッシュメモリに専用メモリ位置を含んでいてもよい。特定のメモリ位置は、
例えばプロセッサのキャッシュマネジャが指定するいずれかの位置に変更しても
よいが、変更した位置は常にプロセッサに伝えられる。
【0065】 異なる方法の実行を更に容易にするために、好適には現在使用中の方法テーブ
ルが定める方法を規定するコード化情報も、高速アクセスメモリに記憶される。
この情報の記憶処理を高速化し、また高速アクセスメモリにおける空間の経済的
使用を容易にするために、コード化情報に対して必要な空間を表すサイズデータ
を、各方法テーブルが識別するような、例えば各方法の開始アドレスにあるコー
ド化情報と共にメモリに記憶する。
【図面の簡単な説明】
【図1】 図1は、本発明の実施例に従って構成されたオブジェクト指向処理システムの
一部を示すブロック図である。
【図2】 図2は、本発明の実施例による図1のシステムの動作を示す図である。
【図3】 図3は、本発明の実施例による図1のシステムの動作を示す図である。
【図4】 図4は、本発明の実施例による図1のシステムの動作を示す図である。
【図5】 図5は、本発明の実施例による図1のシステムの動作を示す図である。
【図6】 図6は、本発明の実施例に従って構成されたメモリの一部を示すブロック図で
ある。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ウィンスロップ、エル.サビル オランダ国5656、アーアー、アインドーフ ェン、プロフ.ホルストラーン、6

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 複数のオブジェクトに対する変数および方法テーブルを利用するためにプロセ
    ッサを動作させる方法であって、 a.上記複数のオブジェクトのうちの少なくとも1つに対する少なくとも1つ
    のオブジェクト変数を、メモリに保存し、 b.上記複数のオブジェクトに対する少なくとも1つの方法テーブルを、メモ
    リに保存し、 c.少なくとも1つのオブジェクト変数と少なくとも1つの方法テーブルのう
    ち、現在使用されているものをメモリにおいて指し示すポインタを記憶する第1
    専用メモリを設け、 d.少なくとも1つのオブジェクト変数と少なくとも1つの方法テーブルのう
    ち、前回使用されたものをメモリにおいて指し示すポインタを記憶する第2専用
    メモリを設ける、ことを含んでいる方法。
  2. 【請求項2】 上記第1および第2専用メモリが、それぞれ専用レジスタの第1および第2グ
    ループを含む、請求項1に記載の方法。
  3. 【請求項3】 上記専用レジスタの第1および第2グループが、それぞれ現在プログラムカウ
    ンタレジスタおよび前プログラムカウンタレジスタを含む、請求項2に記載の方
    法。
  4. 【請求項4】 上記プロセッサが、上記第1専用メモリに記憶されているポインタを利用して
    、上記ポインタによって示される方法テーブルの少なくとも一部を、キャッシュ
    メモリに読み込む、請求項1に記載の方法。
  5. 【請求項5】 上記プロセッサが、上記第1専用メモリに記憶されているポインタを利用して
    、上記ポインタによって示されるオブジェクト変数の少なくとも一部を、キャッ
    シュメモリに読み込む、請求項4に記載の方法。
  6. 【請求項6】 上記方法テーブルポインタは所定の位置に記憶される、請求項1に記載の方法
  7. 【請求項7】 上記所定の位置は、関連するオブジェクト変数の位置にリンクしている、請求
    項6に記載の方法。
  8. 【請求項8】 いずれかのオブジェクト変数および各オブジェクトに対する方法テーブルを含
    む情報を記憶するのに必要な空間を表すサイズデータが、上記各オブジェクトに
    関連する情報が記憶されているメモリ位置にリンクしているメモリ位置に記憶さ
    れ、 上記プロセッサが、上記サイズデータを利用して高速アクセスメモリに上記情
    報を記憶する、請求項1に記載の方法。
  9. 【請求項9】 上記高速アクセスメモリがキャッシュメモリを含む、請求項8に記載の方法。
  10. 【請求項10】 サイズデータが、各オブジェクトに対する方法テーブルが記憶されている位置
    の指示されたメモリ位置に記憶されている、請求項8に記載の方法。
  11. 【請求項11】 少なくとも1つの方法テーブルによって示される方法を定義する情報を記憶す
    るのに必要な空間を表すサイズデータが、上記情報と共にメモリに記憶され、 上記プロセッサが、上記サイズデータを利用して高速アクセスメモリに上記情
    報を記憶する、請求項1に記載の方法。
  12. 【請求項12】 上記プロセッサが、各オブジェクト変数および方法テーブルポインタを上記第
    1専用メモリに含ませるための第1の方法の実行を中止して、第2の方法を、 a.上記第1専用メモリから上記第2専用メモリに上記ポインタを読み込み、 b.上記第2の方法の実行を開始することによって行う、請求項1に記載の方
    法。
  13. 【請求項13】 上記第2の方法の実行中止後、上記プロセッサが、上記第2専用メモリから上
    記第1専用メモリに上記ポインタを読み込むことによって、上記第1の方法の実
    行を再開する、請求項12に記載の方法。
  14. 【請求項14】 上記第1専用メモリから上記第2専用メモリに上記ポインタを読み込んだ後、
    上記プロセッサが、第2の方法のオブジェクト変数ポインタおよび方法テーブル
    ポインタを各メモリ位置から第1専用メモリに読み込む、請求項12に記載の方
    法。
  15. 【請求項15】 上記第2の方法の実行中止後、上記プロセッサが、上記第2専用メモリから上
    記第1専用メモリに上記ポインタを読み込むことによって、上記第1の方法の実
    行を再開する、請求項14に記載の方法。
  16. 【請求項16】 上記プロセッサが、各オブジェクト変数および方法テーブルポインタを上記第
    1専用メモリに含ませるための第1の方法の実行を中止し、第2の方法を、 a.上記第1専用メモリから上記第2専用メモリにポインタを読み込み、 b.上記第2専用メモリから第3メモリに上記ポインタを読み込み、 c.上記第2の方法の実行を再開することにより行う、請求項1に記載の方法
  17. 【請求項17】 上記第2の方法の実行中止後、上記プロセッサが、上記第2専用メモリから第
    1専用メモリに上記ポインタを読み込むことにより、上記第1の方法の実行を再
    開する、請求項16に記載の方法。
  18. 【請求項18】 第3メモリがポインタによってアドレス可能である、請求項16に記載の方法
  19. 【請求項19】 上記第3メモリがLIFOスタックを含む、請求項18に記載の方法。
  20. 【請求項20】 上記プロセッサが、各オブジェクト変数および方法テーブルポインタを上記第
    1専用メモリに含ませるための第1の方法の実行を中止して、第2の方法を、 a.上記第1専用メモリから上記第2専用メモリにポインタを読み込み、 b.上記第2専用メモリから第3メモリに上記ポインタを読み込み、 c.各メモリ位置から上記第1専用メモリに、上記第2の方法のオブジェクト
    変数ポインタおよび方法テーブルポインタを読み込み、 d.第2の方法の実行を開始することにより行う、請求項1に記載の方法。
  21. 【請求項21】 上記第2の方法の実行中止後、上記プロセッサが、上記第2専用メモリから上
    記第1専用メモリに上記ポインタを読み込むことにより、上記第1の方法の実行
    を再開する、請求項20に記載の方法。
  22. 【請求項22】 上記第3メモリがポインタによってアドレス可能である、請求項20に記載の
    方法。
  23. 【請求項23】 上記第3メモリがLIFOスタックを含む、請求項22に記載の方法。
JP2000618817A 1999-05-12 2000-05-10 専用ポインタメモリを使用するオブジェクト指向処理 Withdrawn JP2002544619A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/310,483 1999-05-12
US09/310,483 US6668285B1 (en) 1999-05-12 1999-05-12 Object oriented processing with dedicated pointer memories
PCT/EP2000/004244 WO2000070441A2 (en) 1999-05-12 2000-05-10 Object oriented processing with dedicated pointer memories

Publications (1)

Publication Number Publication Date
JP2002544619A true JP2002544619A (ja) 2002-12-24

Family

ID=23202722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000618817A Withdrawn JP2002544619A (ja) 1999-05-12 2000-05-10 専用ポインタメモリを使用するオブジェクト指向処理

Country Status (7)

Country Link
US (1) US6668285B1 (ja)
EP (1) EP1145108A3 (ja)
JP (1) JP2002544619A (ja)
KR (1) KR100654477B1 (ja)
CN (1) CN1158601C (ja)
TW (1) TW518512B (ja)
WO (1) WO2000070441A2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366882B2 (en) * 2001-05-10 2008-04-29 Zohair Sahraoui Address calculation unit for an object oriented processor having differentiation circuitry for selectively operating micro-instructions
CN1464401B (zh) * 2002-06-28 2010-05-26 国际商业机器公司 使用影子对象进行核准控制的面向对象系统和方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0325384B1 (en) 1988-01-15 1993-09-29 Quantel Limited Data processing and communication
KR960001273B1 (ko) 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
JPH07114498A (ja) 1993-10-15 1995-05-02 Toshiba Corp マイクロプロセッサ
FR2717280B1 (fr) * 1994-03-10 1996-04-05 Bull Sa Procédé de gestion de l'héritage multiple d'objets persistants et partagés.
WO1995032466A1 (en) 1994-05-19 1995-11-30 Vlsi Technology, Inc. Flexible register mapping scheme
US5655132A (en) 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
JP2677202B2 (ja) 1994-08-12 1997-11-17 日本電気株式会社 マイクロプロセッサ
EP0702291B1 (en) * 1994-09-19 2002-04-03 Sun Microsystems, Inc. Method and mechanism for invocation on objects with interface inheritance
JP3169779B2 (ja) 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5708838A (en) 1995-09-08 1998-01-13 Iq Systems, Inc. Distributed processing systems having a host processor and at least one object oriented processor
US5774721A (en) 1995-09-08 1998-06-30 Iq Systems, Inc. Method of communication between processors in a distributed processing system having a host processor and at least one object oriented processor
US6438616B1 (en) * 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6230311B1 (en) * 1998-06-12 2001-05-08 International Business Machines Corporation Apparatus and method for disabling methods called on an object
US6393491B1 (en) * 1999-04-26 2002-05-21 Sun Microsystems, Inc. Method and apparatus for dispatch table construction

Also Published As

Publication number Publication date
CN1320239A (zh) 2001-10-31
CN1158601C (zh) 2004-07-21
WO2000070441A2 (en) 2000-11-23
TW518512B (en) 2003-01-21
US6668285B1 (en) 2003-12-23
EP1145108A3 (en) 2002-11-06
WO2000070441A3 (en) 2001-04-05
KR100654477B1 (ko) 2006-12-05
KR20010071797A (ko) 2001-07-31
EP1145108A2 (en) 2001-10-17

Similar Documents

Publication Publication Date Title
JP3787167B2 (ja) フラッシュメモリ
US6453365B1 (en) Direct memory access controller having decode circuit for compact instruction format
JP2002533807A (ja) 割込み/ソフトウエア制御スレッド処理
US3701977A (en) General purpose digital computer
US5146581A (en) Subprogram executing data processing system having bank switching control storing in the same address area in each of memory banks
US6415338B1 (en) System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier
US6338134B1 (en) Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
US4454580A (en) Program call method and call instruction execution apparatus
US5504869A (en) High speed processing system capable of executing strings of instructions in order without waiting completion of previous memory access instruction
JP2002544619A (ja) 専用ポインタメモリを使用するオブジェクト指向処理
JP2683489B2 (ja) データ転送制御装置
IE61306B1 (en) Method and device to execute two instruction sequences in an order determined in advance
JPS62151940A (ja) レジスタ退避/復帰方式
US5893928A (en) Data movement apparatus and method
JPS6032220B2 (ja) 情報処理装置
EP1139214A1 (en) System for allowing a two word instruction to be executed in a single cycle and method therefor
JPS6346855B2 (ja)
EP1251431A2 (en) Reduction of bank switching instructions in main memory of data processing apparatus having main memory and plural memory banks
JP2927102B2 (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
JPS62120543A (ja) メモリバンクの切替方式
JPS6229813B2 (ja)
JPS6031646A (ja) デ−タ処理装置
JPS603656B2 (ja) 計算機のメモリ拡張方式
JPH048818B2 (ja)
JPH04104349U (ja) マイクロプログラム方式の情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070508

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080515

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090828

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090828