JP2000514944A - オブジェクト指向プログラミング言語のためのハードウェア加速器 - Google Patents
オブジェクト指向プログラミング言語のためのハードウェア加速器Info
- Publication number
- JP2000514944A JP2000514944A JP10548207A JP54820798A JP2000514944A JP 2000514944 A JP2000514944 A JP 2000514944A JP 10548207 A JP10548207 A JP 10548207A JP 54820798 A JP54820798 A JP 54820798A JP 2000514944 A JP2000514944 A JP 2000514944A
- Authority
- JP
- Japan
- Prior art keywords
- java
- hardware
- window
- application framework
- application
- 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
- 238000000034 method Methods 0.000 claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000009877 rendering Methods 0.000 claims description 35
- 230000008569 process Effects 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 claims 1
- 239000011159 matrix material Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 17
- 230000006399 behavior Effects 0.000 description 11
- 241000699666 Mus <mouse, genus> Species 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 239000003973 paint Substances 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 101000648671 Homo sapiens Transmembrane protein 74 Proteins 0.000 description 2
- 102100028841 Transmembrane protein 74 Human genes 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 235000013175 Crataegus laevigata Nutrition 0.000 description 1
- 235000002767 Daucus carota Nutrition 0.000 description 1
- 244000000626 Daucus carota Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 241000555745 Sciuridae Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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 slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
オブジェクト指向型プログラミング言語を加速するための方法と装置が、ハードウェアゲートレベルで提供される。Java追従型の実施例では、Javaアプリケーション・フレームワークは、ハードウェア中で実行される。Java.AWTアプリケーション・フレームワーク、Java.NETアプリケーション・フレームワーク、Java.IOアプリケーション・フレームワークが、本発明の好適実施例でサポートされている。アプリケーション・フレームワーク・クラスは、共通メモリのライブラリとして記憶される。Javaプログラムにより実行されて、サポートされるアプリケーション・フレームワーク・クラスのインスタンスとメソッドは、ハードウェアオブジェクト管理システムへオフロードされる。ソフトウェアスタブが、ハードウェアオブジェクト管理システムと中央演算処理ユニットの間のインターフェースとして提供される。更なるアプリケーション・フレームワークは、ソフトウェアスタブを変更又は置き換えることによってサポートしてもよい。ハードウェアオブジェクト管理システムの要求は、アプリケーション・フレームワーク専用型ハードウェア加速器によって実行される。アプリケーション・フレームワーク・クラスは、必要に応じ共通メモリから検索され、実行された命令は、中央演算処理ユニットによりアクセスできる共通メモリに記憶される。サポートされないアプリケーション・フレームワーク命令の中央演算処理ユニットによる処理は、ハードウェア加速器がハードウェアオブジェクト管理システムの要求を実行している間も、継続される。
Description
【発明の詳細な説明】
オブジェクト指向プログラミング言語のためのハードウェア加速器
発明の背景
発明の分野
本発明はオブジェクト指向プログラミング言語に関する。更に特定すると、本
発明はオブジェクト指向プログラミング言語のためのハードウェア加速器に関す
る。
先行技術の説明
オブジェクト指向プログラミング(OOP)は、「オブジェクト」の概念をベ
ースとしたプログラミング言語と手法のクラスに関する名前である。オブジェク
トは、プログラム中で特定の役割を持つ自己充足型コンポーネントである。OO
P言語には、C++、サン・マイクロシステムズ社が開発したJava言語等が
ある。説明の目的上、以下に述べるOOP言語をJavaとする。
OOPはオブジェクトのクラスを定義する。「クラス」は、一つのオブジェク
ト又は共通の構造と挙動を共有するオブジェクトのセットのためのプロトタイプ
である。オブジェクトは「インスタンス」とも呼ばれ、あるクラスを特別に表現
したものである。クラスの各インスタンスは特定の属性で区別される。これらの
属性は「インスタンス変数」で定義される。これらのインスタンス変数のタイプ
と名前はクラス中で定義される。しかしインスタンス変数の値はオブジェクト内
でセットされ又変更される。
クラスの挙動は、クラスのインスタンスがどう作動するかを決定する。クラス
の挙動は、クラスと関係するルーチンのセットで決定され、ルーチンを「メソッ
ド」と呼ぶ。オブジェクト上のオペレーションはメソッドを用いて実行される。
メソッドは特定クラスのインスタンス全てに共通である。
クラスは階層状に配列されている。階層中の各クラスは、自分の上に「スー
パークラス」と呼ばれるクラスを、自分の下に「サブクラス」と呼ばれるクラス
を、階層中で有していてもよい。サブクラスは属性と挙動をスーパークラスから
「継承」する。従ってサブクラスば、スーパークラスで定義された挙動を再定義
する必要はないが、メソッドと変数をスーパークラスから継承することは可能で
ある。
OOP中の手順呼出は、伝達メッセージの形式で記述される。メッセージはメ
ソッドに名前をつけるが、他の引数を随意的に含んでいてもよい。メッセージが
オブジェクトに送られると、要求されたオペレーションを特定のオブジェクト上
でどう実行するかを決めるために、名前付きのメソッドを求めてオブジェクトの
クラスが探索される。オブジェクトのクラスにメソッドが定義されてない場合、
オブジェクトのスーパークラスが探索される。この探索手順は、メソッドの定義
が見つかるか又は探索すべき高位のスーパークラスがなくなるまで、クラス階層
上方に向かって続けられる。
手順呼出用の引数の配列は、呼出規約で決められる。呼出規約は、引数を移動
する責任を誰が負うかを決めるのと同様に、引数をスタック上へ押し上げるか又
はレジスタ中に入れる特定の順序を決める。
アプリケーションがオペレーティングシステムと他のサービスにアクセスする
ための呼出規約又はインターフェースは、アプリケーションプログラミングイン
ターフェース(API)と呼ばれる。Javaの場合、中心的なJavaAPI
は、Javaに追従すると考えられるプラットフォームのために、サポートする
必要のある最小限の機能のセットを定義する。
Javaは、アプリケーションと呼ばれる独立プログラムと、アプレットと呼
ばれる従属プログラムとをサポートする。Javaアプレットは、電子通信網経
由で送信され、受信装置上に提供されたアプリケーションで実行されるプログラ
ムである。こうした電子通信網の例には、インタネット、本文ではイントラネッ
トと呼ぶローカルエリアネットワークシステム等がある。受信装置には、コンピ
ュータ、パーソナルデータ補助装置、インタネット接続可能電話等がある。
ここでは説明の都合上、Javaアプレットがインタネット経由で、ワールド
ワイドウェブ(Web)ページ中のディスプレイ用に受信コンピュータへ送信さ
れるものとする。Javaアプリケーションは独立型プログラムであり、受信コ
ンピュータ上に提供されるWebブラウザのようなアプリケーションで実行され
ることを必要としない。
Javaは、Javaに追従する任意のコンピュータシステム上で作動可能な
プラットフォーム独立型言語である。Java開発環境にはJavaコンパイラ
とJavaインタプリタが含まれている。JavaコンパイラはJavaプログ
ラムからバイトコードを生成する。Javaバイトコードはマシン命令であるが
プラットフォーム専用ではない。
プラットフォーム専用バイトコードインタプリタを使い、Javaプログラム
を実行する。本バイトコードインタプリタをJava仮想マシンと呼ぶ。アプレ
ットの場合、バイトコードインタプリタはJavaにより作動可能にされるWe
bブラウザに組み込まれている。Java仮想マシンとそのサポートコードを併
せて、Javaランタイムシステムと呼ぶ。
Java仮想マシンは、バイトコード命令セット、レジスタのセット、メソッ
ドを記憶するためのエリア、スタック、不要情報収集ヒープを含んでいる。Ja
va仮想マシンレジスタは、マシン状態を表すデータを一時的に保持する。レジ
スタは、マシンの作動に影響を与え、各バイトコードが実行された後に更新され
る。メソッドエリアは、Javaシステム中のメソッドの大部分を実行するJa
vaバイトコードを記憶する。
スタックは、バイトコードとメソッドの両者にパラメータを供給し、その結果
を受信するのに使われる。スタックフレームはメソッド呼出、メソッドの実行環
境、メソッドのオペランドスタックのためのローカル変数を含んでいる。
ヒープはメモリロケーションであり、新たに作成されるインスタンスはそのメ
モリロケーションから割り当てられる。インスタンスはJava中で自動的に「
不要情報収集」される。不要情報コレクタは、作成された各インスタンスを追跡
し、インスタンスへの最後の参照が消滅した後にインスタンスを記憶したメモリ
を解放するために設計された、プログラム機能である。
Javaの場合、異なるプログラムでの繰り返し再使用が見込まれるオブジェ
クト/クラスは「クラスライブラリ」として記憶される。多くの関連する問題を
解決するためアブストラクトデザインを具体化したクラスのセットは、フレーム
ワークとして知られている。Javaクラスライブラリに記憶される中心的アプ
リケーションフレームワークには、Java.Lang、Java.Util、
Java.Applet、Java.IO、Java.NET、Java.AW
T等がある。
Java.Utilがユーティリティクラスとシンプルコレクションクラスを
含む一方、Java.Langは言語自身にデータタイプとシステム能力を付け
加えるクラスを含んでいる。Java.AppletはJavaアプレットを実
行するクラスを含んでいる。
Java.IOは、ストリームへの書込/ストリームから読み取りのための入
出力クラスを含んでいる。Java.IOはファイルを処理するための入出力ク
ラスも含んでいる。
Java.NETはネットワーキング支援のためのクラスを含んでいる。こう
したクラスには、例えばTCP/IPのような標準的なWebプロトコルに従っ
てファイルを接続・検索するクラスと、UNIXアプリケーションで使われるよ
うなソケットを作成するためのクラス等がある。
Javaアブストラクトウィンドウ用ツールキット(Java.AWT)は、
グラフィカルユーザインターフェース(GUI)ベースのアプレットとアプリケ
ーションを生成するためのクラスと挙動を提供する。Java.AWTは例えば
、スクリーン、クリエイトウィンドウ、ボタン、メニューバー、スライダーバー
、及び他のユーザインターフェースエレメントを描画するために使うことができ
る。Java.AWTは又、マウスクリックとキーボードのようなユーザ入力を
管理するためにも使うことができる。
オブジェクト指向のソフトウェアフレームワークは一般に、コンピュータのラ
ンダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、仮想メモリ
(VM)を使って実行される。Javaアプリケーション又はアプレットが例え
ばコンピュータ上で開始される時、実行される最初のオペレーションの内の一つ
はGUIの作成である。
しかしソフトウェアベースの装置が使われているので、コンピュータのOS処
理能力のかなりの部分が、GUIの実際の生成・表示のために必要となることが
ある。従つてGUIエレメントがディスプレイ装置上に表示されている間、OS
による他の命令の処理が驚くほど遅くなることがある。更に、ディスプレイが更
新されている間にマウス又はキーボーのイベントが生成されると、Javaラン
タイムは、更新イベントが生成されると同時にシステムが未処理のマウス及びキ
ーボーのイベントを処理しようとする、一種の膠着状態に入り込んでしまう。結
果的にランタイムシステムは正当な時間枠内で全イベントに追従・処理すること
ができない。エンドユーザには、プログラムが更なる命令と入力を外見上拒否し
、作動停止しているように見える。
Javaはマルチプロセス/マルチスレッドのシステムである。従ってJav
aは複数のプログラム又はプロセスをサポートし、各々を自身のアドレススペー
ス内で同時に実行する。スレッドとは、これらプロセスの内の一つの中で実行さ
れるコードのシーケンスである。従って、Javaのプログラミング環境とラン
タイムシステムの両者はマルチスレッド構造を有する。
Javaのようなマルチスレッドプログラムの場合、Javaプログラムを実
行する単一スレッドは、例えばウィンドウが描かれるまでにブロックされてもよ
い。更に前記単一スレッドに従属する他のどのスレッドもブロックされることが
あり得る。ブロッキングにより、例えば通信網経由の情報を制限・遅延すること
があり得る。こうしたブロッキングは、実行を再開する前にタスクが完了するの
をJavaスレッドが待機する能力として定義される。
組込環境の一部としてのJavaプログラムを作動すること、例えば、インタ
ネット接続可能電話のような装置上でJavaのアプリケーションとアプレット
を作動することはしばしば望ましいことである。しかしJavaコードと高速J
avasバイトコードプロセッサの場合、装置をJavaに追従させる必要があ
る。これは装置の製作コストと稼動コストをかなり押し上げることになる。
従って、性能を落とした方法と装置を提供することが有利である。こうした方
法と装置により、組込及びデスクトップの両環境下でオブジェクト指向プログラ
ムの効率的に使うことを可能になるのであれば、更に有利である。
発明の概要
本発明は、オブジェクト指向プログラミング言語を加速するための方法と装置
を提供する。本発明の好適実施例は、Javaに追従するプロセッサをJava
プログラミング言語と標準的Javaオブジェクトベースフレームワークと共に
使うように構成されている。しかし本発明の代替実施例は、任意のオブジェクト
指向プログラミング言語と共に使うように適合化されている。本発明の代替実施
例は又、アップルコンピュータの「オープンステップ」フレームワークやマイク
ロソフトのオブジェクトベースAFCライブラリのような他のオブジェクトベー
スフレームワークと共に使うようにも適合化されている。
本発明は、一つ又はそれ以上のJavaアプリケーションフレームワークを実
行する機能を含んでいるハードウェア加速器を提供する。本発明の本好適実施例
の場合、加速器はアプリケーション専用の集積回路(ASIC)の一部として構
成される。加速器は、インスタンスに割り当てられた数値状態のみならず、イン
スタンスも管理するハードウェアオブジェクト管理システムを含んでいる。
本発明の好適実施例は、Javaアブストラクトウィンドウ用ツールキット(
AWT)、JavaNET、Java入出力アプリケーションフレームワークを
実行する。本発明は、必要なら追加Javaフレームワークもサポートする。
Javaランタイムシステムは、ハードウェアオブジェクト管理システムとソ
フトウェアオブジェクト管理システムの両者を管理する。ソフトウェアオブジェ
クト管理システムは、ソフトウェアのみ又はソフトウェア及びハードウェアの両
方のいずれの中でも実行可能である。
Javaプログラムで実行されてサポートされるJavaアプリケーションフ
レームワーククラスのインスタンスとメソッドは、ハードウェアオブジェクト管
理システムへオフロードされる。こうして、本発明の好適実施例の中央演算装置
(CPU)は、ハードウェアオブジェクト管理システムがJava.AWTとJ
ava.NETの要求を管理している間も、命令処理を続けることができる。
本発明ではアプリケーションフレームワーククラスを、共通メモリ中のライブ
ラリとして記憶する。しかしサポートされるアプリケーションフレームワークは
個別に管理される。要求は特定アプリケーションフレームワークのハードウェア
制御装置に配分され、共通メモリへのアクセスが必要に応じて行われる。
ソフトウェアスタブは、ハードウェアオブジェクト管理システムとCPUの間
のインターフェースとして提供される。ソフトウェアスタブは、互換性のある任
意のOOP言語と共に本発明を使えるようにするために、修正又は置き換えるこ
とができる。
ハードウェアオブジェクト管理システムは、オブジェクト要求を受信・記憶す
るための入出力要求待ち行列を含んでいる。タスクプロセッサがオブジェクト用
のメモリを割り当てると、要求は待ち行列から除かれる。能動オブジェクトリス
トは、Java仮想マシン中にある基準カウント数をインスタンスに対して追跡
する。インスタンスに対する基準カウントの数が零になると、Java不要情報
コレクタはオブジェクトを記憶するメモリを割り当てから外す。
本発明の本好適実施例のJava.AWTハードウェア装置はウィンドウ用/
ビューシステムとレンダリングエンジンを含んでいる。グラフィックJavaプ
ログラムは、ネストされたコンテナとコンポーネントから成る階層として構造化
されている。コンテナは、仮想オブジェクト被呼出コンポーネントのコレクショ
ンを管理する。コンポーネントは、メニューバー、ボタン、編集可能テキストエ
リア、テキストフィールドのような画面上に表示される視覚機能を表す。コンテ
ナ自身は互いの内部で階層状にネストされてもよく、又別のコンテナと親<−>
子関係を維持してもよい。特定アプリケーションに対して、コンテナビューが、
ウィンドウ(AWT.Frame)オブジェクトで表されたビュー階層の一番上
に存在する。AWT.Frameは、特定プラットフォーム(例えば、ウィンド
ウズ又はソラリス)に固有なウィンドウを定義する。
更にコンテナは、他のコンポーネントを含むことができる専用ケースでのコン
ポーネントと考えることもできる。これは機能上、コンテナクラスがコンポーネ
ントのサブクラスであるためである。パネルはアプリケーション又はアプレット
内の画面上に表示できるコンテナである。フレームは(タイトルとメニューバー
を有する)ウィンドウであるが、更にコンポーネント/コンテナオブジェクトの
別のタイプでもある。全クラスが有する共通のクラス挙動により、クラスは様々
な特性を共有し一体となれる。Java.AWTハードウェア装置は、メッセー
ジングを最適化しコンテナ表示効率を上げることにより、種々のコンポーネント
オブジェクトバリエーション間のこれら共通機能に影響を与える。
コンテナは、他のコンテナを含んだ他のコンポーネントを含むことができるJ
ava.AWTコンポーネントである。パネルはアプレットのような、画面上に
表示可能なコンテナである。フレームは、タイトル、メニューバーのような特徴
を有するウィンドウである。
ウインドウ用/ビューシステムは、フレームとコンポーネントを作成し更にレ
ンダリングエンジンへデータを伝えるための汎用グラフィックコントローラと、
フレームを菅理するためのウィンドウマネジャと、フレーム内のコンテナ階層を
管理するためのレイアウトマネジャと、コンテナ内のコンポーネント階層を管理
するためのコンポーネントマネジャを含んでいる。
Java.NETハードウェア装置はウィンドウ用/ビューシステムと接続エ
ンジンを含んでいる。ウィンドウ用/ビューシステムは、Java.NETフレ
ームワークの同等物のためのマイクロコードを有するネットワークコントローラ
を含んでいる。ネットワーク照会機構は、DNS検索を実行し結果をネットワー
クコントローラに報告し、ソケットマネジャは、アプリケーションが使っている
ソケットを管理し、ストリームマネジャは、通信網プロトコルでサポートされる
リンクを通じて入出力データを往復させる。
従って本発明は、サポートされたアプリケーションフレームワークの命令を共
同処理することにより、ブロッキングを減らすためのハードウェア装置を提供す
る。こうして、Java処理が加速される。
図面の簡単な説明
図1は、本発明によるハードウェア加速器10の構造概略を示すブロック図で
ある。
図2は、本発明によるJava加速器のブロック概略図である。
図3は、本発明によるオブジェクトの例示及び削除を行った後のオブジェクト
リストを示す表である。
図4は、本発明による内部コンポーネントインスタンスへのコンテナ連結リス
トを示すブロック図である。
図5は、本発明による能動オブジェクトリストを示すブロック図である。
図6は、本発明によるハードウェア加速器の内部機能のブロック図である。
図7は、図6に示したJavaAWT加速器の更に詳しいブロック図である。
図8は、本発明を使用して幾つかのスレッドを全て同時に使うJVMを示すブ
ロック図である。
図9は、AWT表示オブジェクトが本発明によるハードウェア中で処理されて
いる仮想セッションの図である。
図10は、本発明でサポートされるJavaアブストラクトウィンドウ用ツー
ルキットオブジェクトを示すブロック図である。
図11は、本発明によるJavaアブストラクトウィンドウ用ツールキットハ
ードウェア装置の機能ブロック図である。
図12は、本発明によるウィンドウ用システムの機能ブロック図である。
図13は、本発明によるレンダリングエンジンでサポートされるコンポーネン
トを示す表である。
図14は、本発明による連鎖プロセスの一例を示す概略図である。
図15は、図13のレンダリングエンジンのグラフセクションでサポートされ
るレンダリングのタイプを示す表である。
図16は、Java.AWT加速器の「命令」実行とオブジェクト管理を示す
ブロック図である。
図17は、本発明によるAWTセクション中に組み込まれた機能を説明する。
図18は、本発明によるJavaアブストラクトウィンドウ用ツールキットの
ウィンドウ/コンテナ/ビューのインスタンス階層の例のブロック図である。
図19は、本発明によりサポートされるJava.ネットオブジェクトのブロ
ック図である。
図20は、本発明によるJavaNet加速器の機能ブロック図である。
図21は、本発明によるNETセクション中に組み込まれた機能を説明する。
発明の詳細な説明
本発明はオブジェクト指向プログラミング言語を加速するための方法と装置を
提供する。本発明の好適実施例は、サン・マイクロシステムズ社が開発したJa
vaプログラミング言語と、Javaアプリケーションプログラムインターフェ
ースと共に使われることに対して最適化されている。しかし本発明は、オブジェ
クト指向スタイルで書かれたプログラム用のC++又はCのような任意のオブジ
ェクト指向プログラミング言語と共に使うことに対しても容易に適合化される。
従って、以下の記述は例の説明が目的としており、発明の範囲を限定するもので
はない。
同様に、Java加速器に相互接続される装置は、異なるアプリケーションフ
レームワーク又はサン・マイクロシステムズ社のJavaAPISに接続されて
いないアプリケーションフレームワークのセットを使用していてもよい。
本発明の好適実施例は、インタネット経由のデータ送信で使うのに適合してい
る一方で、本発明は他の広範囲の通信網やローカルエリアネットワークに等しく
適用可能である。更に、好適実施例がデスクトップ計算機で使われる一方、本発
明は、ネットワークサーバ、パーソナルデータ補助装置、ファックスマシン、イ
ンタネット接続可能電話を始めとする他のデバイスと使うこともできる。
以下に述べるディスプレイ画面とGUI構成は、本発明の本好適実施例に従っ
て提供される。しかし当業者は、こうしたディスプレイ画面とGUIが本発明の
代替実施例の要件を満たすよう容易に変更されることを認識するであろう。従っ
て以下の記述は例の説明が目的であり、発明の範囲を限定するものではない。
図1は、本発明によるハードウェア加速器10の構造概略を示すブロック図で
ある。コンピュータのCPU(不図示)上で実行されるJava仮想マシン16
は、コンピュータシステム上で実行されるJavaアプリケーション12のため
のバイトコードインタプリタである。Javaアプレット14のために、バイト
コードインタプリタがJavaで作動可能にされるウェブブラウザ中に組み込ま
れている。
ハードウェアオブジェクト管理
Java加速器のメモリ400(図2参照)はオブジェクト記述子とパラメー
タを保持するように予め設計されている。このオブジェクトスペースは全て大き
さが同じであるが、各々のフォーマットはスペースに割り当てられるオブジェク
トのタイプに左右される。各オブジェクト記述子の開始部分には、特定オブジェ
クトが使われているか否かを示す状態バイトが存在する。
開始時、デジグネータはフリーな状態にあるとして表示される。次にソフトウ
ェアは以下のステップを使いオブジェクト作成を開始する。
・最初の命令又はタスクが、AWTコマンドレジスタ407又はNETコマンド
レジスタ413へ発せられる。
・次にコマンドは、AWTコマンドデコーダ408又はNETコマンドデコーダ
414でデコードされる。
・一旦、作られるべきオブジェクトのタイプが決まると、次の利用可能なオブジ
ェクトIDが、フリーオブジェクトロケータ403から取得され、他の状態情
報と共に返却FIFO405又は412経由でレジスタに送り返され、AWT
データレジスタ406又はNETデータレジスタ410経由でシステムのプロ
セッサへ折り返し出て行く。
・一旦、フリーオブジェクトロケータがオブジェクトIDをシステムに送り返す
と、フリーオブジェクトロケータは次のフリーオブジェクトスペース用の利用
可能なメモリ400のポーリングを開始する。
・利用可能なメモリを見つかると、フリーオブジェクトロケータは次のオブジェ
クト作成命令に備えて本オブジェクトスペースのIDを記憶する
・フリーオブジェクトロケータが全メモリを探しても利用可能なオブジェクトス
ペースを見つからない場合、アウトオブメモリ状態の情報がシステムに返却さ
れる。
・システムが、既に作成済みの特定オブジェクトへのアクセスを望む場合、シス
テムは先のオブジェクトIDと共にタスクを、AWTコマンドレジスタ407
又はNETコマンドレジスタ413へ伝える。オブジェクトIDとタスクは構
文解析されデコードされ、IDはオブジェクトIDレゾルバ402に伝
えられる。次にこのブロックでは、オブジェクトIDは、メモリブロック40
0中の特定オブジェクトスペースへアクセスするのに使うことのできるメモリ
アドレスに翻訳される。
・オブジェクト削除の要求をシステムが受信すると、オブジェクトIDと共に適
当な命令がコマンドレジスタに伝えられる。タスクとIDがデコードされて構
文解析され、IDがオブジェクトレゾルバに伝えられる。次にJava加速器
が作動し、メモリ中の先の特定オブジェクトスペースにある「使用中状態ビッ
ト」を取り払い、これにより本スペースは次のオブジェ作成命令のためのフリ
ーオブジェクトロケータ用に使えるようになる。フリーオブジェクトロケータ
がアウトオブメモリ状態の情報を既に報告している場合、新たに自由になった
オブジェクトIDがフリーオブジェクトロケータに直接記憶され、これにより
ロケータは全メモリ中でロケーションを探し廻らなくて済む。
・フリーオブジェクトロケータは、次の「n」個のフリーオブジェクトIDを記
憶する能力を有する。これは個々のオブジェクトスペースのサイズが小さいイ
ンスタンスで使われ、次に複数のオブジェクトが、連結された「n」個のオブ
ジェクトスペースを利用する。この場合、第一オブジェクトスペースは、続き
のオブジェクト記述子が何処に記憶されているかを示すリンクフィールドを含
んでいる。この状態が「n−1」番目のスペースまで、連続する各オブジェク
トスペースで続き、この「n−1」番目のスペースには「n番目」のオブジェ
クトスペースへのリンクが含まれている。この構成の下では、フリーオブジェ
クトロケータは開始オブジェクトスペースのIDを、オブジェクト作成命令に
応じて折り返し報告する。又、作成されるべきオブジェクトのタイプが複数の
オブジェクトスペースを必要とするように決まると、フリーオブジェクトロケ
ータは、充分なフリーオブジェクトスペースが利用できる場合には開始IDを
折り返し報告するだけである。他の場合はアウトオブメモリ状態の情報が返却
される。この場合のオブジェクトスペースは連続した順番でなくともよく、ラ
ンダムに連結されていてもよい。フリーオブジェクトロケータは、作成される
べき最大のオブジェクトに必要なオブジェクトスペースの最大数を「n」とし
、「n」個のフリーオブジェクトIDを
記憶できなければならない
ハードウェアにより提供されるオブジェクトIDは、長さが任意のビット数で
ある。
ハードウェアオブジェクトマネジャは、オブジェクトIDがホストシステムに
より提供されハードウェアにより返却されない状況でも作動する。この場合、最
初に提供されるオブジェクトIDは、ベースリファレンスレジスタに記憶され、
第一フリーオブジェクトロケーションに関係付けられる。連続する各オブジェク
ト要求は、リファレンスレジスタと比較されるIDを有する。両者のオフセット
が、メモリ中の実際のオブジェクトロケーションを決定する。特定レコードが既
に使用中である場合、次のフリーオブジェクトロケーションが使用される。予め
定義されたリファレンスフィールドは、どれだけのオフセットが関係しているか
を示す各オブジェクトレコードと共に含まれている。オフセットはモジューロ法
で実行され、オフセットが割当られたメモリスペースよりも大きい時には、メモ
リロケーションが最初の位置へ再び戻るようになっている。このシステムは、シ
ステムにより提供されるオブジェクトIDがハードウェアオブジェクトIDより
も大きなビット数である状況でも作動する。
図3は複数のオブジェクトが例示・削除された後にヒープがどう見えるかを示
す。削除されたオブジェクト#5は今は自由に再び使えることに注目されたい。
コンテナオブジェクトはコンポーネントからなる連結リストの実質上先頭である
ことに注目されたい。本リストはオブジェクト値が0になった時に終る。何故な
ら、オブジェクト#0は存在せず、オブジェクト#0に対する如何なるリファレ
ンスも無効だからである。
他のタイプのオブジェクトはこれと同じ機能を発揮してもよい。インスタンス
のボタンオブジェクトは、30バイトを超えてもよいストリングオブジェクトを
同様に参照する。この場合のボタンオブジェクトはストリングオブジェクトを指
し示し、このストリングオブジェクトは長さ30バイトの各オブジェクトを有す
る別のストリングオブジェクトを順次指し示すことになる。これは組合せオブジ
ェクトエントリリストがどう機能するかを示すものである。
図4はコンテナの連結リストと内部コンポーネントインスタンスとの関係を系
統的に示している。同じリストを図4に間接的に示す。
能動オブジェクトリスト上のオブジェクト
図5は、本発明による能動オブジェクトリストを示すブロック図である。能動
オブジェクトリストは最大で30バイトブロックまでのリストを含み、各ブロッ
クはオブジェクトの特定タイプの能動インスタンスを表す。オブジェクトの各タ
イプはオブジェクトに関係した構造を有している。例示されたオブジェクトは全
て、オブジェクトのタイプと、ランタイムシステムのメソッドセレクタと、オブ
ジェクトが属するフレームワークとを記述するフラッグを含んでいる。ボーダレ
イアウトインスタンスは更に、コンポーネントのセットをレイアウトするために
インスタンスを使うコンテナに対するポインタと、東西南北にあるコンポーネン
トに対する可能なオブジェクトリファレンスと、コンポーネントを描く時にコン
ポーネント間に残すべきスペース(画素)を決定する値を含んでいる。コンテナ
オブジェクトは、囲まれるコンポーネントの数と、コンテナの継承インスタンス
値を保持するコンポーネントオブジェクトに対するリファレンスと、コンポーネ
ントオブジェクトの連結リスト中の第一コンテナオブジェクトに対するリファレ
ンスとを含んでいる。コンポーネントオブジェクトは「タイプ」値を含み、この
値は同オブジェクトがボタンを描いたり或いはボタン、スライダー、テキストフ
ィールド、又は他のタイプのウィジェットからのイベントを処理することがある
か否かを表す。オブジェクトは又、コンテナ中で利用できる次のコンポーネント
へのリンクも含んでいる。
本発明の場合、オブジェクト(図5参照)は小ブロックで処理される。オブジ
ェクトはサイズとフットプリントの点からすると常に同じに見える。或るインス
タンスを別のインスタンスから能動オブジェクトリスト上で区別するものは、デ
ータ構造又はインスタンス変数である。
インスタンスは単純でも複雑でもよい。インスタンスは8、16、32ビット
の整数又は単一ビットのブーリアン値を含んでいてもよい。インスタンスは他の
オブジェクトに対するオブジェクトリファレンスIDも含んでいてよい。
コンテナオブジェクトの場合を取り上げる。コンテナオブジェクトを求める要
求が入出力要求待ち行列に加えられた後、JExpressが本要求に応じ、コ
ンテナインスタンスに関係する変数を記憶するため、固定サイズブロックのメモ
リを作成する。複数のコンポーネントオブジェクトが作成された後、このオブジ
ェクトはコンテナに加えられてもよい。コンテナに割り当てられたオブジェクト
を管理するためにレイアウトマネジャが割り当てられる場合、この手順が相応に
行われる。コンテナ<−>ボーダレイアウトの関係がある場合、5つの可能なコ
ンポーネントをコンテナに直接加えてもよい。次にボーダレイアウトオブジェク
トは、5つ(東西南北と中央)のコンポーネントの内の最大値に対する所定リフ
ァレンスが与えられ、同オブジェクトは将来時点でこれらのオブジェクトをどう
描いて更新するかを知ることになる。
能動オブジェクトリストは、最大で30バイトブロックまでのリストを含み、
各ブロックはオブジェクトの特定タイプの能動インスタンスを表している。
オブジェクトの各タイプは、以下の3つのオブジェクトインスタンス図に示さ
れているように、オブジェクトに関係する構造を有している。
例示される全オブジェクトは、オブジェクトのタイプと、ランタイムシステム
のメソッドセレクタと、オブジェクトが属するフレームワークを記述するフラッ
グを含んでいる。ボーダレイアウトインスタンスは更に、コンポーネントのセッ
トをレイアウトするためにインスタンスを使うコンテナに対するポインタと、東
西南北にあるコンポーネントに対する可能なオブジェクトリファレンスと、コン
ポーネントを描く時にコンポーネント間に残すべきスペース(画素)を決定する
値を含んでいる。
コンテナオブジェクトは、囲まれるコンポーネントの数と、コンテナの継承イ
ンスタンス値を保持するコンポーネントオブジェクトに対するリファレンスと、
コンポーネントオブジェクトの連結リスト中の第一コンテナオブジェクトに対す
るリファレンスとを含んでいる。コンポーネントオブジェクトは「タイプ」値を
含んでおり、この値は同オブジェクトがボタンを描いたり、又はボタン、スライ
ダー、テキストフィールド、又は他のタイプのウィジェットからのイベントを処
理することがあるか否かを表している。オブジェクトは又、コンテナ中で利用で
きる次のコンポーネントへのリンクも含んでいる。
これらオブジェクトの定義はフレームワークが管理するC構造に直接マップさ
れる。(これらは、将来変化し最適化される予備的なストラクトであることに注
目されたい。)
typedef struct ir_descriptor_//オブジェクトの最初の3バイト
{jbyte frame work Type;_//フレームワークのタイプを指定(Java.AWT,NET,IF
C,etc)
jbyte objectType;_//オブジェクトのタイプを指定(Frame,Event,Container,
etc)
jbyte methodType;_//オブジェクトメソッドを指定(-paint( ),etc)
jbyte inUse;_//レコードが使用中か否かを見つける
}desc;
typedef struct ir_container_//注意:各コンテナはコンポーネント構造を参照
すること
{desc_objDsec;
jshort_ncomponents;_//コンテナ中に存在するコンポーネントの数
Rect_insets;
_//レイアウトマネジャは5つのデフォルトの一つが可能
jbyte_layoutType;_//本コンテナに使われるレイアウトのタイプを表す
jint_layoutObj;_//レイアウトのインスタンスに対するインデックスを指定
_jint_inheritedCompObj;_//コンポーネントのサブクラスなのでこれが必要
_//コンポーネント構造に対するインデックス
/////////フレームオブジェクト従属変数
_jboolean_isResizable;_//フレームオブジェクトと共に使われる
_jbyte_cursorType;_//フレームオブジェクトと共に使われるカーソル0−13
_unsigned short menuBarObj;_//メニューバーはしばしばフレームオブジェクト
に取り付けられる
////////
int firstComponentNode;
}Container,Dialog,Frame,Window;//便宜上、複数の名前を割り当てる
//A Window=Frame=Dialog=Container as far asの関係が成立する
//JExpressが関係する。
typedef struct ir_component
{desc_objDsec;
jbyte peerObjType; //これがコンポーネントの真のオブジェクト値である
//例えばボタン、ラベル、テキストフィールド等
_unsigned short x;
_unsigned short y;
_unsigned short width;
_unsigned short height;
_unsigned short parentObj;_//コンテナオブジェクトに対するインデックス
_unsigned short fontObj;_//本コンポーネントが使っているフォントを記述す
るオブジェクトに対するインデックス
_unsigned short foregroundColorObj;_//前景色オブジェクトに対するインデッ
クス
_unsigned short backgroundColorObj;_//背景色オブジェクトに対するインデッ
クス
unsigned short cursorObj;_//カーソルオブジェクトに対するインデックス
_unsigned short stringObj;_//ストリングを含むオブジェクトに対するリファ
レンス
//コンポーネント中で適当に実行される(0であってもよい)
_jboolean visible;_//
_jboolean enabled;_//
_jboolean valid;_//
//Dimension minSize;_//コンポーネントの最小許容サイズを含む
//Dimension prefSize;_//コンポーネントの好適サイズを含む
_jint nextComponentNode;_//コンテナ中の次の既知コンポーネントにインデッ
クス
}Canvas,Component;_//カンバスはペイント( )メソッドを有するコンポーネン
トである。
typedef struct ir_borderlayout
{desc objDesc;
jshort hgap;
jshort vgap;
jshort container;_//関係するコンテナのアレイに対するインデックス
jshort northComponent;_//指し示すコンポネントのアレイに対するインデック
ス
jshort southComponent;
jshort westComponent;
jshort eastComponent;
jshort centerComponent;
}BorderLayout;
typedef struct ir_flowlayout
{ desc objDesc;
jshort hgap;
jshort vgap;
jshort align;
}FlowLayout;
typedef struct ir_gridlayout
{ desc objDesc;
unsigned short hgap;
unsigned short vgap;
unsigned short rows;
unsigned short cols;
}GridLayout;
typedef struct ir_wgraphics
{ desc objDesc;
unsigned short x,y;
unsigned short width height;
unsigned short foregroundColorObj;_//前景色オブジェクトに対するインデッ
クス
unsigned short xoffset,yoffset;_//
Rect clipRect;_//Wgraphicsによりセットされる:Clip( )を変更する
}WGraphics;
種々のコンセプト
ここに概要を述べたオブジェクト定義は(ここで定義されてないものも合わせ
て)、インスタンスを作成し唯一のインスタンス値を保守するために使われる。
これらのデータ構造を使わない場合、アクティブオブジェクトリストの30バイ
トのブロックは意味を持たない。これらのオブジェクト構造は、特定のオブジェ
クトインスタンス内の値を識別し、設定し、そしてその値にアクセスするために
使用される。ランタイムシステムは、オブジェクトインスタンスの集合を使用し
て、所定のデータセットにとって意味のあるメソッドを実行する。
あるオブジェクトにとってのディスクリプタストラクトのメソッドディスクリ
プタは、そのオブジェクトが低級なフレームバッファ装置に送信されるような仕
様であってもよい。スマート・フレームバッファが、次にそのストラクトを引き
受け、(サイズ直しや描き直し等の)コマンドを意味の通る方法で翻訳すること
になる。このとき、グラフィック及びコンポーネントオブジェクトは、それらの
ストラクトをスマート・フレームバッファに既に送信している。
Javaランタイムシステム18には、Java仮想マシンがそのサポートコ
ードと共に含まれている。Javaランタイムシステムは、例示とメソッド呼出
の構文解析をする。本発明の好適実施例の場合、Javaランタイムシステムは
、2つのインスタンスマネジャー、即ちハードウェアオブジェクト管理システム
22とソフトウェアオブジェクト管理システム20を管理する。しかし、本発明
の代替実施例のJavaランタイムシステムは、3つ以上のインスタンスマネジ
ャーを管理する。
ハードウェアオブジェクト管理システムは、Javaアプリケーション・フレ
ームワークをサポートするための機能を保有している。本発明の本好適実施例の
ハードウェアオブジェクト管理システムは、Javaアブストラクトウインドウ
用ツールキット(AWT)26とJavaネット24アプリケーション・フレー
ムワークを実行する。Java入力/出力アプリケーション・フレームワーク(
図示せず)もまた、Javaネット機能をサポートするために実行される。ハー
ドウェアオブジェクト管理システムは、必要に応じ更なるJavaフレームワー
クのサポートに容易に順応できる。従って本発明は、CPUに対し加速器の役目
をするJavaアプリケーション・フレームワーク・ハードウェア装置を提供す
る。
ハードウェアオブジェクト管理システムは、インスタンスだけでなくインスタ
ンスに割り当てられた値の状態も菅理する。本発明の本好適実施例のハードウェ
アオブジェクト管理システムは、もっぱらゲートに備えられているが、外付きラ
ンダムアクセスメモリ(RAM)を有することができる。
この実施例のハードウェアオブジェクト管理システムは、アプリケーション専
用型集積回路(ASIC)の一部として構築されている。本発明の好適実施例を
ゲートレベルの装置及びASICに関連づけて論じてはいるが、本発明の実際の
装置は当業者の選択の問題と考えられることを認識されたい。
ソフトウェアオブジェクト管理システムは、もっぱらソフトウェア中に装備す
ることができる。しかし、本発明の代替実施例のソフトウェアオブジェクト管理
システムは、ソフトウェアとハードウェア両方のコンポーネントを使って実行さ
れる。ソフトウェアオブジェクト管理システムの一例は、コンピュータシステム
のメモリマネジャーである。
Javaプログラムにより実行されてサポートされるJavaアプリケーショ
ン・フレームワーク・クラスのインスタンスとメソッドは、ハードウェアオブジ
ェクト管理システムへオフロードされる。こうして本発明の好適実施例では、ハ
ードウェアオブジェクト管理システムがJava.AWTとJava.NETの
要求を管理している間も、CPUは命令処理を続けることができる。
ハードウェア実行型Javaアプリケーション・フレームワーク・クラスのイ
ンスタンスとメソッドがJavaプログラムにより実行される時は必ず、インス
タンスとメソッドは、ハードウェアオブジェクト管理システムへオフロードされ
ることになる。このように本発明の好適実施例では、ハードウェアオブジェクト
管理システムは、Java仮想マシン上で実行中のスレッドの、Java.AW
TとJava.NETの要求を管理する。こうして、ハードウェアオブジェクト
管理システムがJava.AWTとJava.NETの要求を管理している間、
オフロードされたインスタンスとメソッドに依存しない命令とスレッドを処理し
続けるのに、CPUを利用することが可能となる。
異なるプログラムで繰り返し再使用が見込まれるアプリケーション・フレーム
ワーク・クラスは、Javaクラスライブラリ32(図1)に記憶される。この
ようなクラスには、Java.AWT34、Java.NET36、Java.
Lang42、Java.IO38、及びJava.Uti144等のアプリケ
ーション・フレームワークが含まれてもよい。
アプリケーション・フレームワーク・クラスは、共通メモリのライブラリとし
て記憶される。しかし、サポートされるアプリケーション・フレームワークは、
個別に管理される。ある要求が、特定のアプリケーション・フレームワーク用の
ハードウェアコントローラに配分されると、共通メモリが必要に応じアクセスさ
れる。
ソケット接続の確立のようなネットワーク・オペレーションを行うためのクラ
スと挙動は、Java.NET加速器24により実行される。Java.NET
加速器は、ネットワークTCP/IPスタック28に対するインターフェースを
提供される。Java.NET加速器は、Java.NET36ネットワーキン
グ用オブジェクトとJava.IO38入力/出力関連オブジェクト両方のハー
ドウェア装置を含んでいる。これは、ネットワーク作りは必然的にデータの入力
と出力を意味しているからである。両フレームワークをハードウェアに組み入れ
ることにより、冗長なソフトウェアコーディングを相当減らすことができる。
Java.NET加速器の一実行例では、ソケット接続中に入出力されるデー
タを処理するために、Java.IOハードウェア装置が使われている。Jav
a.NET加速器では、Jaba.NETとJava.IOのアプリケーション
・フレームワーク・クラスは継承を通じて結合される。このように、一つのフレ
ームワークのクラスは、別のフレームワークの機能を継承し、それに付け加える
ことができる。
Java.AWT加速器は、クラス、即ちアブストラクトウインドウ用ツール
キットのメソッド(いわゆる、挙動)を実行する。Javaアブストラクトウイ
ンドウ用ツールキット(Java.AWT)は、グラフィカル・ユーザー・イン
ターフェース(GUI)ベースのアプレット及びアプリケーションを作成するた
めのクラスと挙動を提供する。このようなクラスには、Java.AWTクラス
32及び、例えば2次元レンダリングエンジン40等の関連レンダリングツール
が含まれる。
Java.AWT加速器は、ウインドウ、ボタン、メニューバー、スライダー
バーや他のユーザーインターフェースエレメントを画面に描くために使うことが
でき、またマウスクリックやキーストロークようなユーザー入力を管理するため
にも使うことができる。こうしてJava.AWT加速器には、コンピュータデ
ィスプレイ、フレームバッファ、キーボード、及びマウスのような機器30に対
するインターフェースが提供される。
構造概観
図6及び図7は、本発明の構造概観のブロック図である。Java.AWT2
6(図7により詳しく図示)とJava.IO(図示せず)のような、サポート
されるアプリケーション・フレームワークは、ASICにキャストされて加速器
を形成する。以下の説明に当たり、Java.NET加速器は、Java.IO
の入力/出力関連オブジェクトを含むものと仮定する。
本発明の実施例では、ハードウェアオブジェクト管理システム22もASIC
にキャストされ、インスタンスとそのインスタンスに割り当てられた値の状態を
管理する。例えばハードウェアオブジェクト管理システムは、ボタンが押された
かどうかを追跡するためにデータを記憶する。ハードウェアオブジェクト管理シ
ステムは又、そのボタンは特定ウインドウの一部であるというような、オブジェ
クト間の関係を指示するデータも記憶する。この情報は、共通メモリに記憶され
る。
ソフトウェアスタブは、Java仮想マシンを稼働するCPUと各加速器の間
のインターフェースとして提供される。このようにJava.NET加速器は、
関係づけられたJava.NETソフトウェアスタブ52とJava.IOソフ
トウェアスタブ54を有するが、一方Java.AWT加速器は、関係づけられ
たJava.AWTソフトウェアスタブ50を有する。本発明のハードウェアコ
ンポーネントをカバーするソフトウェアスタブは、本発明を互換性のある任意の
OOP言語と使えるようにするために、修正又は置き換えることができる。
図2(先に説明済み)は、本発明によるハードウェア加速器60の内部機能の
ブロック図である。レジスタインターフェース64(406、407、409、
410、413、415)は、ホストCPU62と本発明との間の入出力転送を
全て指揮し同期させるために提供される。
Java追従ホストCPUは、Java仮想マシンを、例えば読み出し専用メ
モリ(ROM)保管庫88から作動させる。物理的トランスポート94を介して
本発明に送信されるJavaアプレット又はアプリケーションは、次に物理的ト
ランスポートインターフェース86を介してホストCPUへと向けられる。AW
Tコマンドディコーダ408とNETコマンドディコーダ414は、2進法入力
情報を2進法で表現された出力エレメントへ変換するために使用される。
アプレット又はアプリケーションは、バイトコードとしてメモリ400に記憶
される。このアプレット又はアプリケーションを表示するために、GUIを作成
しなければならない。このように、Javaプログラムが最初にメモリから実行
されると、ROMに保存されている機能ライブラリに対して、GUI表示の生成
を指示する呼び出しが行われる。
このような呼び出しは、ハードウェアオブジェクト管理システム402、40
3とソフトウェアスタブという手段で、適切なJavaアプリケーション・フレ
ームワーク・加速器に向けられる。例えば、Java.AWTウインドウに対す
る要求がある時、Java.AWT加速器はウインドウオブジェクトを作成する
。次にグラフィックコマンド・ジェネレータ80は、グラフィックコントローラ
82に命じてウィンドウをディスプレイ500上で実際に描画させるよう、要請
される。
Java.NET加速器は、Eメール及びウェブブラウザ・アプリケーション
エンジン74を含むことができる。このように例えば、本発明を使用してJPE
G又はGIF画像をインターネットからダウンロードできる。画像は次に、ネッ
トワークTCP/IPスタック76を介しJPEG/GIFディコーダ78に、
そしてその次にはフレームバッファマネジャー84に管理されているフレームバ
ッファ92に向けられる。このように本発明はハードウェア装置を使い、ネット
ワーク接続からダウンロードされたグラフィック画像の表示を加速する。
メモリコントローラ/アービトレータ401は、ホストCPUと共通の主メモ
リ400の間のインターフェースとしての役目を果たす。メモリコントローラ/
アービトレータは、本発明の様々なコンポーネントの間にシステムメモリを割り
当てて管理する。このメモリ管理には、メモリを例えばJava.AWT加速器
に割り当てることやCPUに本発明によって作成されたオブジェクトのメモリロ
ケーションを提供すること等が含まれる。
図8は、本発明による、Java仮想マシン/ランタイムのマルチスレッド型
オペレーションのブロック図である。Javaはマルチスレッド構造を有してい
るので、Java仮想マシン16及びJavaランタイム18上で実行されるJ
avaアプレット12若しくはアプリケーション14を、同時に実行中の複数の
スレッド100、102、104、106の形態とすることができる。
サポートされるJavaアプリケーション・フレームワークのクラス又はメソ
ッドを保有するスレッドは、ハードウェアオブジェクト管理システムを介して
本発明に方向決めされる。このように本発明の好適実施例のハードウェアオブジ
ェクト管理システムは、Java仮想マシン上で実行されるスレッドの、Jav
a.AWT26とJava.NET24の要求を管理する。従って、ハードウェ
アオブジェクト管理システムがJava.AWTとJava.NETの要求を管
理する一方で、CPUは、これに依存しないスレッドと命令の処理を継続するこ
とができる。
図9は、本発明によるハードウェアオブジェクト管理システムの図である。本
発明は、Java.AWTとJava.NETの要求がJava仮想マシン上で
実行されるスレッドで作り出されると、それらを管理する。オブジェクトは、専
用のバッファに割り当てられたり、割り当てられなかったりする。
ハードウェアオブジェクト管理システムには、オブジェクト要求を受信して記
憶するための入力/出力要求待ち行列108が含まれる。このような要求には、
コンテナ10を作成せよ、
ボーダーレイアウト112を作成せよ、
パネル114を作成せよ、
ラベル116を作成せよ、
テキストフィールド118を作成せよ、
ボタン120を作成せよ、
が含まれることもある。
タスクプロセッサ150が、例えば、新しいコンテナオブジェクト152を作
成するなどして、オブジェクトにメモリを割り当てるとき、そのオブジェクトは
待ち行列からはずされる。能動オブジェクトリスト122は、インスタンスのリ
スト124を記憶している。使用中のフラッグ140が、あるインスタンスに対
するJava仮想マシン中の基準カウント数を表示するために提供される。
インスタンスに対する基準カウント数がゼロ142である時、オブジェクトを
記憶しているメモリは、Java不要情報コレクタ(図示せず)により収集され
る。能動オブジェクトリストは又、特定のインスタンスが使用中でないこと12
8も表示する。
オブジェクトの状態は状態リスト144に記憶される。状態には、オブジェク
トが使用中146であること、又はそのオブジェクトを記憶しているメモリが割
り当てられなかったこと148を示す表示も含むことができる。
図10は、本発明によりサポートされるJavaアブストラクトウインドウ用
ツールキット・オブジェクトを示すブロック図である。AWTエキスプレス・フ
レームワークは、ソフトウェアベースのJava.AWTスタブに対するインタ
ーフェースとなる。AWTエキスプレス・フレームワーク154自身は、2つの
部分に分割されてもよい。「低級装置」は、根本的なJavaコマンドを我々の
表示に変換するために不可欠であり、マウス/ペン/キーボード/イベントの制
御だけでなくウインドウやビュー階層の更新もできる。「高級装置」は、根本的
にAWTの残りのものに関して特性を付加し、このような特性をUIエレメント
(ボタン、テキストエリア、及びテキストフィールド)にとってのマクロ化され
たペインティングとして組み入れる。
Java仮想マシンは、コマンドのセット(タスク)156、158を使い、
データを本発明に送信したり本発明から受信したりする。Javaのプログラム
言語は、最初は低級オブジェクトに頼る。従って低級レジスタ158は、Jav
a装置に不可欠なオブジェクトを含んでいる。
本発明の一実施例では、低級装置のみが装備されている。この実施例は、サイ
ズとメモリの要件が大幅に減っており、組込型システムでの使用に有利である。
低級機能には、初歩的なウインドウ制御、画像レンダリング、フォント制御、
及びイベント処理が含まれる。本発明の好適実施例によりサポートされる低級オ
ブジェクトには、
ColorModel210、
Component212、
Container214、
CropImageFilter216、
DirectColorModel218、
Event220、
Font222、
FontMetrics224、
Frame226、
Graphics228、
GridBagConstraints230、
Image232、
ImageFiter234、
IndexColorModel236、
MenuComponent238、
PixelGrabber240、
RGBImageFilter242、
が含まれる。
高級レジスタ156は、随意的にハードウェアに装備できる二次的機能を提供
する。このような高級機能には、標準GUIウィジェットオブジェクト、GUI
レイアウト挙動オブジェクト、及びメディア制御オブジェクトが含まれる。本発
明の好適実施例によりサポートされる高級オブジェクトには、
BorderLayer160、
Button162、
Canvas164、
CardLayout166、
Checkbox168、
CheckboxGroup170、
CheckboxMenuItem172、
Choice174、
Dialog176、
FlowLayout178、
GridBagLayout180、
GridLayout182、
Label184、
List186、
MediaTracker188、
Menu190、
MenuBar192、
MenuItem194、
Polygon196、
Rectangle198、
Scrollbar200、
TextArea202、
TextComponent204、
Textfield206、
Window208、
が含まれる。
本発明はハードウェアの全アプリケーション・フレームワークを表しているの
で、本発明により相当な数のコードが必要性でなくなる。例えば、OOPアプリ
ケーション・フレームワークの一部は、カスタム・アプリケーションで使うのに
利用できる一方、その別の部分はアプリケーション・フレームワークが専用に使
うように隠されている。しかしハードウェア装置では、このようなフレームワー
ク部分を隠すことは必要ではない。冗長なコーディングを排除し、ハードウェア
・ゲートアレー内でタスクを起動させるソフトウェアスタブに公然とアクセスで
きる機能のみを、装備することの方がより有用である。
このように本発明では、Javaアプリケーション・フレームワークの多数の
オブジェクトとクラスを排除することに努力が払われている。排除されるクラス
の一例は、サン・マイクロシステムズ社のJava.NETSocketInputStream
クラスである。このクラスは、Java.IO.からFileInputStreamを継承し
ているが、最小量の機能しかオリジナルのベースクラスに付加されていない。こ
うして本発明では、機能を著しく失うことなく、このような冗長なクラスを排除
できる。
図11は、本発明による、Javaアブストラクトウインドウ用ツールキット
のハードウェア装置の機能ブロック図である。Java.AWTアプリケーショ
ン・フレームワークのインスタンスとメソッドを含むスレッドが、Java仮想
マシン16から、Java.AWTソフトウェアスタブ50を介しハードウェア
オブジェクト管理システム22へオフロードされる。レジスタインターフェース
64は、ホストCPU62とハードウェアオブジェクト管理システムの間の全入
出力転送を指揮して同期させる。
オブジェクト要求は、受信されると、入力/出力要求待ち行列108で処理待
ちの状態で記憶される。タスクプロセッサ150はここで、各要求をハードウェ
アAWT加速器250に向ける。この加速器は、ウインドウ用/ビューシステム
252とレンダリングエンジン260を含んでいる。
ウインドウ用/ビューシステムは、本発明によって生成されるフレーム管理用
のウインドウマネジャー254を含んでいる。レイアウトマネジャー256は、
各フレーム内のコンテナの階層を管理し、一方コンポーネントマネジャー258
は、各コンテナ内のコンポーネントを管理する。
ウインドウ用/ビューシステムはまた、フレームとコンポーネントを作成する
ための、又データをレンダリングエンジンに伝えるための汎用グラフィックコン
トローラ82も含んでいる。Java.AWTアプリケーション・フレームワー
クのハードウェア同等物にとってのマイクロコードは、汎用グラフィックコント
ローラ中で実行される。オブジェクト/メソッド要求が作られ、ウインドウ用/
ビューシステムの他のコンポーネント及びレンダリングエンジンにより適切に実
行される。
レンダリングエンジン260は、画像レンダラー262、多角形レンダラー2
64、及びフオントレンダラー266等のレンダリング用ツールを用いて、要求
されたオブジェクトを作成する。レンダリングエンジン付きで含まれるレンダリ
ングツールのタイプは、サポートされるアプリケーション・フレームワークの特
定の要求に従い、様々なものが考えられるということを、当業者は容易に理解す
るであろう。
画像レンダラー262は、画像データを受信して圧縮解凍を行う。その画像は
次に、ディスプレイの所定コンポーネント内で表示される。多角形レンダラー2
64は、ベクトルベースの画像を表示するための加速器を提供する。弧、線、楕
円、多角形、長方形の描画向け等に事前に定義された描画タイプがサポートされ
ることになる。フォントレンダラー266は、テキストを表示するための要求を
管理する。
ウインドウサーバとオブジェクト実行
ウインドウサーバ/ウインドウ用システム(図12参照)は、Java仮想マ
シンから最も遠い地点に在る。オブジェクト実行機構(即ちランタイム)から送
信されるコマンドを頼りとしているため、ウインドウサーバ/ウインドウ用シス
テムはソフトウェア層からコマンドを直接は決して受信しない。そうしたものな
ので、ウインドウサーバは、ソフトウェアレベルからの直接的なインターフェー
スを有していない。
これは、JavaがPC上で作動する方法にほぼ等しい。ピアオブジェクトは
通常、ランタイムの外部でリソースをコンパイルするJavaプロセッサからの
要求をマップするために作成される。このことはウインドウズ’95/NT又は
他の最新式OSにとって、標準的なウインドウ用システムのCコードかアッセン
ブリコードの何れかに呼び出しを行うことを意味する。
このように、これらのオペレーティングシステムで使用されるコンパイルされ
たコードは、システムレベルウインドウ用の要求を行うために必要なプリミティ
ブを生成する。ウインドウは画面上で管理され、標準的なボタン、スライダー、
及び他のOSベースのUIウィジェットは、コーディングを簡素化するため、性
能を上げるため、そしてホストOS自身のインターフェースに整合するユーザー
インターフェースを提供するためにしばしば利用される。サン・マイクロシステ
ムズ社のJDKでは、これはピアインターフェースを使って呼び出され、Jav
aオブジェクトとコンパイルされた固有コードとの間の機能をマップするソフト
ウェアベースのクラススタブのセットを採用している。
本発明は、ピアという観念を漠然と使用している。しかし、ピア装置は、ゲー
トレベルの装置に全面的に提供され、他のASICベースの機能(即ちハードコ
ード型Javaオブジェクト)からのみアクセス可能である。こうすることは多
くの点で意味がある。第1に、ピアベースの描画型は、レジスタ定義レベルで容
易に交換することができ、カスタム又は多数のUI装置の作成を可能にする。
第2に、ASICSのピアを、適切なハードウェアの異なるセクションに適切に
区分することができる。これがハードウェアとソフトウェアの間の違いである。
ソフトウェアでは、論理的な機能上のグループ分けが構築されるが、他方ASI
CSでは、効率性とゲートカウント低減を目指して構築される。
ソフトウェアでは、オブジェクトベースの機能性を、規律正しいやり方で論理
的にグループ分けする。ビューベースオブジェクトの全ては、1つの場所...
1つのフレームワークへとほとんど入っていく。ハードウェアでは、物事を分割
する必要がある。オブジェクト表現をUIオブジェクト毎にウインドウサーバで
構築することもできよう。しかし、これは効率的でもなく必要でもないことが判
明している。
必要性の点から見ると、できるなら、最小ゲートカウントのためには優雅さを
犠牲にすべきで、そうすると図12のシナリオはより魅力的な設計になるといえ
る。
ウインドウ用システムの本装置では、標準的なJava「ピア」オブジェクト
に匹敵するオブジェクトはほんの数個しかない点に注意されたい。それらオブジ
ェクトは、機能がより要約されたセットをサポートするので、ソフトウェア専用
Java装置でのピアとはかなり異なる。ソフトウェア装置は、UIオブジェク
ト毎(例えば、ボタン、スライダー、テキストコンポーネント等)に1つのピア
を割り当てるが、本発明では、コンポーネント関係描画の全要求を扱う単一コン
ポーネントピアを採用している。
どのようにレンダリングエンジンが働くか
レンダリングエンジン511は、ここで、実際の描画コードの全てをカプセル
化して、フレームインスタンス512、グラフィックインスタンス513、コン
ポーネントインスタンス514、ストリングインスタンス515を翻訳するため
のレンダラー/ハンドラーを提供する。レンダリングエンジンは、通常これらの
インスタンスに、メモリリファレンスによるか又は固定サイズのデータストリー
ム(30バイト)を経由してかのどちらかによってアクセスされる。インスタン
スは、コマンドバイトを保有しており、オブジェクトに対してどの方法を実行す
べきかをレンダリングエンジンに命令する。
レンダリングエンジンはインスタンスを受信すると、まず送信中のオブジェク
トのタイプをサポートされる4つのオブジェクトのタイプの内の一つにデコード
する。オブジエクトタイプが一旦分かると、特定オブジェクトタイプ用のデコー
ダーまでリファレンスが伝えられる。実行方法(例えばcomponent:paint( ))が
確定すると、その方法が実行される。
レンダリング・コンポーネント・インスタンス
Component:paint( )につき、オブジェクトは、表示されるべきコンポーネント
のタイプを見分けるために更に照会を受ける。現時点でレンダリングエンジンの
コンポーネントセクションは、図13に示す画面ベースウィジェットのタイプを
どうレンダーするのかを知っている。
一旦、レンダリングエンジンが、自身が描くコンポーネントのタイプに気づく
と、インスタンスは、ウィジェットの位置や寸法等の情報について問い合わせを
受ける。次にコンポーネントは、ディスプレイ上にレンダーされる。
オブジェクトはかなり小さいので、コンポーネントインスタンス内でストリン
グを伝送することは不可能である。本発明の場合がそうであるが、固定サイズの
インスタンスは30バイトであり、これはストリング自身のサイズより小さいも
のである。このため、ストリング又はストリングに対する最少リファレンスが、
実際のコンポーネントを送る前に、レンダリングエンジンに送られる。
ストリングはレンダリングエンジンにより蓄積される。ストリング情報を保有
する固定バイトオブジェクトに対するストリーム又はリファレンスが、普通はレ
ンダリングエンジンに送られる。このストリングに、別のストリングを保有する
別の固定ブロックが続いてもよい。後続の送信は、コンポーネントインスタンス
が到着するまで、ストリングの最後尾に連鎖して続く。一旦、コンポーネントが
到着すると、ため込まれたストリングはコンポーネントに関連づけられ、次にそ
のコンポーネントはそのストリングを付けてレンダーされる。連鎖は、非常に大
きなストリングを有するテキストフィールドの場合、特に必要である。
最終的なASIC形態では、連鎖処理(図14参照)は、連鎖型ストリング自
身の代わりに、レンダーされるストリングを保有する固定ブロックに対する累積
されたポインターから成ることに留意されたい。こうしたことが必要な理由は、
コンポーネントによっては、従来型のJava上では32キロバイト又はそれよ
り大きいかもしれないテキストエリアのような非常に大型のテキストコンテンツ
を有してもよいからである。テキストエリアは本質的にはテキストエディタオブ
ジェクトである。本発明の縮小バージョンでは、小型メモリフットプリント付き
のデバイス上での効率的使用を保証するために、許容されるテキスト文字の最大
数を任意に指定できるであろう。
一旦、コンポーネントがそのストリングと共にレンダーされると、ストリング
自身は、次のストリング/コンポーネントの組み合わせに備えて、零に設定され
る。
グラフィックインスタンスのレンダリング
グラフィックインスタンスは、コンポーネントインスタンスとは異なる。グラ
フィックインスタンスは、低級プリミティブを描くことに責任を負い、そこでは
コンポーネントはこれを駆動させるか、又は編集可能なテキストエリアのような
ものを描くために、線、充填エリア、及びテキストを始めとして、何百というプ
リミティブさえも駆動させる。グラフィックオブジェクトは、一般型のプリミテ
ィブ描画をサポートする。図15に示すレンダリングの型は、レンダリングエン
ジンのグラフィックオブジェクトでサポートされる。
レンダリングエンジンのグラフィックピア装置は、幾分複雑ではあるが、実際
にはコンポーネントピアよりもはるかに単純である。グラフィックは、非常に低
級な描画を供給するが、他方コンポーネントは通常、先のパラグラフで説明した
ように、グラフィック描画動作のセットを単一のマクロへと組み合わせる。
レンダリング・フレーム・インスタンス
フレームは、フレームが行うことから見ると、比較的簡単である。これはある
種のフレームピア装置であり、ウインドウを特定タイプのスクリーン上に描く。
ウインドウディスプレイのタイプは、装置次第で変わるので、多様性タイプをサ
ポートしてもよく、レンダリングエンジンの場合は全面的にこのタイプのもので
ある。
一般的にフレームは、タイトルバー、アイコン画像、及びカーソルタイプをフ
レームに組み入れている。フレームは、コンポーネントとグラフィックがするの
と同じやり方で動作するが、フレームが保有するUIの裏に描かれる。
フレームは、標準Java装置のコンテナの一タイプである。しかし、これは
フレームピアのようなものなので、他の何れのオブジェクトとも直接的な関係を
持たない。レンダリングエンジンに限ればウインドウは、特定のセットの線等を
描くマクロ付きの特別オブジェクトにすぎない。フレームは、コンポーネントが
このレベルで動作するのに非常に似たやり方で行動する。
図16は、本発明による、JavaAWT加速器オブジェクト管理を示すブロ
ック図である。オブジェクト要求は、実行エンジン270の入力/出力要求待ち
行列108に並んで、処理の順番待ちの状態となる。1つのオブジェクトが作動
すると、そのオブジェクトは能動オブジェクトリスト122に加えられる。
図16では、入力/出力要求待ち行列の最初のオブジェクト要求は、フレーム
オブジェクト272を作成することである。フレームオブジェクトが作成される
と、それは能動オブジェクトリスト274に加えられる。次のオブジェクト要求
276は、イベントオブジェクトを作成するというものであるが、この要求が次
に入力/出力要求待ち行列の一番上に移動する。イベントオブジェクトが作成さ
れると、それはまた能動オブジェクトリストに加えられる。
オブジェクトは、オブジェクトJava仮想マシン不要情報コレクタの基準カ
ウントがゼロに下がるまで、アクティブのままである(図9参照)。更にオブジ
ェクトは、必要に応じ、お互いに対するリファレンスを保有することもある。例
えば、ウインドウの中の関係、ウインドウ内のボタン、及びボタン上に表示され
るテキストが、こうしたリファレンスにより表示される。
図17は本発明による、JavaAWT加速器ウインドウ/ビューシステム2
52内の機能を説明したものである。Java.AWTアプリケーション・フレ
ームワークのハードウェア同等物用のマイクロコードが、汎用グラフィックコン
トローラ82で実行される。本発明の好適実施例の場合、汎用グラフィックコ
ントローラが実行する機能には、以下が含まれる。
フレーム(即ちウインドウ)を作成すること、
コンポーネント(即ち画面)を作成すること、
画像データを画像レンダラーに渡すこと、
テキストをフォントレンダラーに渡すこと、
形を多角形レンダラーに渡すこと、
フレームとコンポーネント向けに選択(焦点)を準備すること、
フレームとコンポーネントをディスプレイから物理的に削除すること、
ペイント方法が画面に呼ばれた時にオブジェクト階層を横断すること、
フレームとコンポーネントのチェーンを介して、マウスとキーボードのイ
ペントを「渡す」ことで、それらを操作すること、
ウインドウマネジャー254が実行する機能には、以下が含まれる。
多角形レンダラーの多角形描画を使用してウインドウを描くこと、
ウインドウが重なるようにウインドウを管理すること、
イベントが起きたフレームを確定して、フレーム更新が必要かもしれない
ことを適切なレイアウト管理インスタンスに通知すること、
各フレーム内のコンテナ階層を監督すること、
ウインドウ/ビューシステムにも、レイアウトマネジャー256とコンポーネ
ントマネジャー258が含まれている。レイアウトマネジャーはフレームに属し
て(フレームによって照会され)、以下の機能を果たす
フレームの範囲内でコンテナ階層を管理すること、
イベントが起きたコンテナを確定して、必要ならコンテナに更新の指示を
出すこと、
コンポーネントマネジャーが実行する機能には、以下が含まれている。
コンテナの範囲内でコンポーネント階層を管理すること、
イベントが起きるコンポーネントを確定して、必要ならコンポーネントに
更新するよう指示を出すこと、
図18は本発明による、Javaアブストラクトウインドウ用ツールキット、
即ちウインドウ/コンテナ/ビューインスタンス階層290の1例のブロック図
である。フレーム292は、1つ又はそれ以上のコンテナ294、296を保有
できる。そして各コンテナは、1つ又はそれ以上の、タイプの異なるコンポーネ
ントを保有できる。
図19は、本発明によりサポートされるJavaNETオブジェクトのブロッ
ク図である。ユーザーが、事前に実在しているコンポーネントを:Ready.
NET/IOフレームワーク154から集めることにより、Java.NETと
Java.IOフレームワークのオブジェクトとメソッドを作成することができ
るように、オーサリングツールを提供してもよい。
本発明の好適実施例でサポートされるJava.NETクラス320には、
DatagramPacket324、
DatagramSocket326、
HttpURLConnection328、
InetAddress330、
MulticastSocket332、
ServerSocket334、
Socket336、
SocketImpl338、
URL340、
URLConnection342、
URLEncoder344、
URLStreamHandler326、
が含まれる。
本発明の好適実施例でサポートされるJava.IOクラス322には、
BufferInputStream348、
BufferOutputStream350、
ByteArreyOutputStream352、
DataInputStream354、
DataOutputStream356、
LineInputStream358、
PrintStream360、
<Generalized Method>362、
<Generalized Functionalities>364、
が含まれる。
多数の冗長なサポートオブジェクトは、ネットワキーング機能の損失を起こす
ことなく、Java.NET加速器から排除されている。
図20は、本発明によるJava.NET加速器の機能ブロック図である。J
ava.NETアプリケーション・フレームワークのインスタンスとメソッドを
含むスレッドは、Java仮想マシン16からJava.NETソフトウェアス
タブ52を通じてハードウェアオブジェクト管理システム22へと、オフロード
される。レジスタインターフェース64は、ホストCPUとハードウェア管理シ
ステムの間の全入力/出力転送を指揮して同期させる。
Java.NETオブジェクト要求は受信されると、入力/出力要求待ち行列
108に処理順番待ちのまま記憶される。タスクプロセッサ150は次に、各リ
クエストをハードウェアNET加速器370に向ける。加速器は、ネットワーキ
ングシステム372と接続エンジン382を含んでいる。接続エンジンは要求を
実行し、例えばIP384、TCP/IP386、及びUDP388等のネット
ワークプロトコルを使って、ネットワーク接続を確立させ、保守し、又は終結さ
せる。
Java.NET加速器用のマイクロコードは、ネットワークコントローラ3
74で実行される。ウインドウ用/ビューシステムも、ネットワーク照会機構3
76、ソケットマネジャー378、及びストリームマネジャー380を含んでい
る。
図21は、本発明による、Java.NET加速器のウインドウ用/ビューシ
ステム372内の機能を説明したものである。ネットワークコントローラ374
の機能には、
DNS照会を合図すること、
ソケット作成を合図し、多数のソケットを同時に作成させること、
ネットワーク入力/出力を指揮すること、
ソケットの閉鎖を合図すること、
TCPとUDPプロトコルを通してアブストラクション層として働くこと、
が含まれる。
ネットワークコントローラは、同期又は非同期のいずれでも作動できる。ネッ
トワーク照会機構376は、DNSルックアップを実行し、その結果をネットワ
ークコントローラに報告する。
ソケットマネジャー378は、アプリケーションが使っているソケットを管理
する。この菅理には、ソケット接続の開閉が含まれる。ソケットマネジャーはま
た、イベントが起きたコンテナを確定して、必要ならコンテナに更新するよう通
知する。要求の起きた時、ソケット状態はネットワークコントローラに転送され
る。
ストリームマネジャー380は、文字/ストリームに基づく入力と出力を、T
CP/IP又はUDPリンク上で往復させる。ストリームマネジャーは、アプリ
ケーションの使用毎に異なる入力/出力ストリームの選択枝を提供する。更に、
要求の起きた時、ストリームマネジャーは、バッファをネットワークコントロー
ラに転送する。
ここでは好適実施例を参照しながら発明について説明したが、当業者には、本
発明の精神と範囲を逸脱することなく、他のアプリケーションをここに述べたも
のに代えることもできるということが容易に理解できるであろう。
例えば本発明の好適実施例では、任意の数のサポートされるアプリケーション
・フレームワークに対して、1つのハードウェアオブジェクト管理システムだけ
がASIC上で必要である。しかし、代替実施例では多数のハードウェアオブジ
ェクト管理システムが提供される。例えばASIC等の分離型アプリケーション
・フレームワークが、サポートされるアプリケーション・フレームワークそれぞ
れに提供されることもあり、その場合には各ハードウェアコンポーネントは、専
用のハードウェアオブジェクト管理システムを持つことになる。
本発明は、コンピュータシステムの一部として形成されてもよく、又PCIカ
ード等の挿入可能なデバイスの一部として形成されてもよい。
当業者は、よく知られているプログラミング用技術と装置を使用して、本発明
に必要とされるハードウェアとソフトウェアを、容易に構築することができるで
あろう。
よって、本発明は、以下の請求項目によってのみ限定されるべきである。
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,CY,
DE,DK,ES,FI,FR,GB,GR,IE,I
T,LU,MC,NL,PT,SE),OA(BF,BJ
,CF,CG,CI,CM,GA,GN,ML,MR,
NE,SN,TD,TG),AP(GH,GM,KE,L
S,MW,SD,SZ,UG,ZW),EA(AM,AZ
,BY,KG,KZ,MD,RU,TJ,TM),AL
,AU,BA,BB,BG,BR,CA,CN,CU,
CZ,EE,GE,GW,HU,ID,IL,IS,J
P,KP,KR,LC,LK,LR,LT,LV,MG
,MK,MN,MX,NO,NZ,PL,RO,SG,
SI,SK,SL,TR,TT,UA,UZ,VN,Y
U
(72)発明者 コヤマ リョウ
アメリカ合衆国 カリフォルニア州
94301 パロ アルト ホーソーン 343
【要約の続き】
フレームワーク専用型ハードウェア加速器によって実行
される。アプリケーション・フレームワーク・クラス
は、必要に応じ共通メモリから検索され、実行された命
令は、中央演算処理ユニットによりアクセスできる共通
メモリに記憶される。サポートされないアプリケーショ
ン・フレームワーク命令の中央演算処理ユニットによる
処理は、ハードウェア加速器がハードウェアオブジェク
ト管理システムの要求を実行している間も、継続され
る。
Claims (1)
- 【特許請求の範囲】 1.オブジェクト指向型プログラミング言語を実行するプロセッサを加速するた めの装置において、前記オブジェクト指向型プログラミング言語の少なくとも 1つのアプリケーション・フレームワークを実行するためのハードウェア加速 器と、前記ハードウェア加速器を前記プロセッサにインターフェースするため のソフトウェアスタブとから成ることを特徴とする装置。 2.前記オブジェクト指向型プログラミング言語がJavaであることを特徴と する、上記請求項1に記載の装置。 3.前記アプリケーション・フレームワークのインスタンスと前記インスタンス に割り当てられた値の状態を管理するためのハードウェアオブジェクト管理シ ステムを更に含んでいることを特徴とする、上記請求項1に記載の装置。 4.前記ハードウェア加速器が、前記命令を受信して、各命令を実行待ちの状態 にしたままシーケンシャルに記憶するための入力/出力要求待ち行列と、前記 命令を処理するためのタスクプロセッサと、あるインスタンスに対する基準カ ウント数を追跡するための、そして使用中でないインスタンスを割り振らない ための能動オブジェクトリストとから成ることを特徴とする、上記請求項1に 記載の装置。 5.前記ハードウェ加速器が、Java.AWTアプリケーション・フレームワ ークを実行することを特徴とする、上記請求項1に記載の装置。 6.ウインドウ用/ビューシステムと、レンダリングエンジンとを更に含むこと を特徴とする、上記請求項5に記載の装置。 7.前記ウインドウ用/ビューシステムが、フレームとコンポーネントを作成す るための、そしてデータを前記レンダリングエンジンに伝達するための、汎用 グラフィックコントローラと、前記フレームを管理するためのウインドウマネ ジャーと、前記フレーム内でコンテナ階層を管理するためのレイアウトマネジ ャーと、前記コンテナ内でコンポーネント階層を管理するためのコンポーネン トマネジャーとから成ることを特徴とする、上記請求項6に記載の装置。 8.前記ハードウェア加速器が、Java.NETとJava.IOのアプリ ケーション・フレームワークを装備することを特徴とする、上記請求項1に記 載の装置。 9.ウインドウ用/ビューシステムと、接続エンジンとを更に含むことを特徴と する、上記請求項8に記載の装置。 10.前記ウインドウ用/ビューシステムが、前記ハードウェアオブジェクト管理 システムに応答するネットワークコントローラであって、前記ネットワークコ ントローラはJava.NETフレームワークの同等物にとってのマイクロコ ードを実行し、前記ネットワークコントローラは前記接続エンジンにサポート されるプロトコルを通じてアブストラクト層として働く、そのようなネットワ ークコントローラと、DNSルックアップを実行するための、そして前記ネッ トワークコントローラに結果を報告するためのネットワーク照会機構と、アプ リケーションが使っているソケットを管理するためのソケットマネジャーと、 入力/出力データを、前記プロトコルによりサポートされるリンクを介して往 復させるためのストリームマネジャーとから成ることを特徴とする、上記請求 項9に記載の装置。 11.前記ハードウェア加速器が、アプリケーション専用型集積回路の一部として 形成されていることを特徴とする、上記請求項1に記載の装置。 12.Javaプログラミング言語を実行するプロセッサを加速させるための装置 において、少なくとも1つのJavaアプリケーション・フレームワークを実 行するためのハードウェア加速器と、アプリケーション・フレームワークのイ ンスタンスと前記インスタンスに割り当てられた値の状態を管理するためのハ ードウェアオブジェクト管理システムであって、前記ハードウェアオブジェク ト管理システムは、前記命令を受信して、各命令を実行待ちの状態にしたまま 記憶するための入力/出力要求待ち行列と、前記命令を処理するためのプロセ ッサと、あるインスタンスに対する基準カウント数を追跡するための、そして 使用中でないインスタンスを割り振らないための能動オブジェクトリストとか ら成る、そのようなハードウェアオブジェクト管理システムと、前記ハードウ ェアオブジェクト管理システムを前記プロセッサにインターフェースするため のソフトウェアスタブとから成ることを特徴とする装置。 13.前記ハードウェア加速器が、Java.AWTアプリケーション・フレーム ワークを実行することを特徴とする、上記請求項12に記載の装置。 14.ウインドウ用/ビューシステムと、レンダリングエンジンとを更に含むこと を特徴とする、上記請求項13に記載の装置。 15.前記ウインドウ用/ビューシステムが、フレームとコンポーネントを作成す るための、そしてデータを前記レンダリングエンジンに伝達するための汎用グ ラフィックコントローラと、前記フレームを管理するためのウインドウマネジ ャーと、前記フレーム内でコンテナ階層を管理するためのレイアウトマネジャ ーと、前記コンテナ内でコンポーネント階層を管理するためのコンポーネント マネジャーとから成ることを特徴とする、上記請求項14に記載の装置。 16.前記ハードウェア加速器が、Java.NETとJava.IOのアプリケ ーション・フレームワークを実行することを特徴とする、上記請求項12に記 載の装置。 17.ウインドウ用/ビューシステムと、接続エンジンとを更に含むことを特徴と する、上記請求項16に記載の装置。 18.前記ウインドウ用/ビューシステムが、前記ハードウェアオブジェクト管理 システムに応答するネットワークコントローラであって、前記ネットワークコ ントローラはJava.NETフレームワークの同等物にとってのマイクロコ ードを実行し、前記ネットワークコントローラは前記接続エンジンにサポート されるプロトコルを通じてアブストラクト層として働く、そのようなネットワ ークコントローラと、DNSルックアップを実行するための、そして前記ネッ トワークコントローラに結果を報告するためのネットワーク照会機構と、アプ リケーションが使っているソケットを管理するためのソケットマネジャーと、 入力/出力データを、前記プロトコルによりサポートされるリンクを介して往 復させるためのストリームマネジャーとから成ることを特徴とする、上記請求 項17に記載の装置。 19.前記ハードウェア加速器が、アプリケーション専用型集積回路の一部として 形成されていることを特徴とする、上記請求項12に記載の装置。 20.オブジェクト指向型プログラミング言語を実行するプロセッサを加速する ための方法において、前記オブジェクト指向型アプリケーション・フレームワ ークの少なくとも1つのアプリケーション・フレームワークをハードウェア加 速器により実行する段階と、前記ハードウェア加速器を前記プロセッサにソフ トウェアスタブによりインターフェースする段階とから成ることを特徴とする 方法。 21.前記オブジェクト指向型プログラミング言語が、Javaであることを特徴 とする、上記請求項20に記載の方法。 22.前記アプリケーション・フレームワークのインスタンスと、前記インスタン スに割り当てられた値の状態を、ハードウェアオブジェクト管理システムを使 って管理する段階を更に含んでいることを特徴とする、上記請求項20に記載 の方法。 23.少なくとも1つのアプリケーション・フレームワークを実行する前記段階が 、前記命今を受信して、各命令を実行待ちの状態にしたまま入力/出力要求待 ち行列にシーケンシャルに記憶する段階と、前記命令をタスクプロセッサで処 理する段階と、あるインスタンスに対する基準カウント数を追跡し、使われて ないインスタンスを能動オブジェクトリストにより割り振らない段階とから成 ることを特徴とする、上記請求項20に記載の方法。 24.前記ハードウェア加速器が、Java.AWTアプリケーション・フレーム ワークを実行することを特徴とする、上記請求項20に記載の方法。 25.ウインドウとビューをウインドウ用/ビューシステムで作成して表示する段 階と、前記ウインドウとビューを、レンダリングエンジンでディスプレイ上に 描く段階とを更に含むことを特徴とする、上記請求項24に記載の方法。 26.フレームとコンポーネントを作成するための、そしてデータを前記レンダリ ングエンジンに伝達するための、汎用グラフィックコントローラを提供する段 階と、前記フレームを管理するためのウインドウマネジャーを提供する段階と 、前記フレーム内でコンテナ階層を管理するためのレイアウトマネジャーを提 供する段階と、前記コンテナ内でコンポーネント階層を管理するためのコンポ ーネントマネジャーを提供する段階とを更に含むことを特徴とする、上記請求 項25に記載の方法。 27.前記ハードウェア加速器が、Java.NETとJava.IOのアプリケ ーション・フレームワークを実行することを特徴とする、上記請求項20に記 載の方法。 28.ウインドウ用/ビューシステムにより、ウインドウとビューを作成して表示 する段階と、接続エンジンを使ってネットワーク接続を管理する段階とを更に 含むことを特徴とする、上記請求項27に記載の方法。 29.前記ハードウェアオブジェクト管理システムに応答するネットワークコント ローラであって、前記ネットワークコントローラはJava.NETフレーム ワークの同等物にとってのマイクロコードを実行し、前記ネットワークコント ローラは前記接続エンジンにサポートされるプロトコルを通じてアブストラク ト層として働く、そのようなネットワークコントローラを提供する段階と、D NSルックアップを実行するための、そして前記ネットワークコントローラに 結果を報告するためのネットワーク照会機構を提供する段階と、前記アプリケ ーションが使っているソケットをソケットマネジャーで管理する段階と、入力 /出力データを、前記プロトコルによりサポートされるリンクを介してストリ ームマネジャーで往復させる段階とを更に含むことを特徴とする、上記請求項 28に記載の方法。 30.前記ハードウェア加速器が、アプリケーション専用型集積回路の一部として 形成されていることを特徴とする、上記請求項20に記載の方法。 31.前記ハードウェアオブジェクト管理システムが、オブジェクトIDを呼び出 し用システムに折り返し提供し、前記オブジェクトIDが可変ビット長でもよ いことを特徴とする、上記請求項22に記載の方法。 32.前記ハードウェアオブジェクト管理システムが前記オブジェクト識別オブジ ェクトを識別するために呼び出し用システムからオブジェクトIDを受け入れ ることができ、更に、ベースオブジェクトIDをベースリファレンスレジスタ に記憶し、前記ベースオブジェクトIDをフリーオブジェクトロケーションと 関連づける段階と、前記オブジェクトIDを或るオブジェクトロケーションに 関連づけるために、他のオブジェクトID全部について前記ベースリファレン スレジスタを参照する段階とを含むことを特徴とする、上記請求項22に記 載の方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US4595197P | 1997-05-08 | 1997-05-08 | |
US60/045,951 | 1997-05-08 | ||
US08/965,540 US6330659B1 (en) | 1997-11-06 | 1997-11-06 | Hardware accelerator for an object-oriented programming language |
US08/965,540 | 1997-11-06 | ||
PCT/US1998/008719 WO1998050852A1 (en) | 1997-05-08 | 1998-04-30 | Hardware accelerator for an object-oriented programming language |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000514944A true JP2000514944A (ja) | 2000-11-07 |
Family
ID=26723394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10548207A Pending JP2000514944A (ja) | 1997-05-08 | 1998-04-30 | オブジェクト指向プログラミング言語のためのハードウェア加速器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6983357B2 (ja) |
EP (1) | EP0980544A1 (ja) |
JP (1) | JP2000514944A (ja) |
KR (1) | KR20010020250A (ja) |
CN (1) | CN1266512A (ja) |
AU (1) | AU734115B2 (ja) |
CA (1) | CA2287413A1 (ja) |
WO (1) | WO1998050852A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010061648A (ja) * | 2008-09-04 | 2010-03-18 | Internatl Business Mach Corp <Ibm> | ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、およびプログラム |
Families Citing this family (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098297B2 (en) * | 1997-05-08 | 2015-08-04 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
US6687758B2 (en) | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US6470415B1 (en) | 1999-10-13 | 2002-10-22 | Alacritech, Inc. | Queue system involving SRAM head, SRAM tail and DRAM body |
US6427171B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6697868B2 (en) | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6427173B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Intelligent network interfaced device and system for accelerated communication |
US7237036B2 (en) | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US7076568B2 (en) | 1997-10-14 | 2006-07-11 | Alacritech, Inc. | Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket |
US7042898B2 (en) | 1997-10-14 | 2006-05-09 | Alacritech, Inc. | Reducing delays associated with inserting a checksum into a network message |
US6807581B1 (en) | 2000-09-29 | 2004-10-19 | Alacritech, Inc. | Intelligent network storage interface system |
US6591302B2 (en) | 1997-10-14 | 2003-07-08 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US8782199B2 (en) | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
US6389479B1 (en) | 1997-10-14 | 2002-05-14 | Alacritech, Inc. | Intelligent network interface device and system for accelerated communication |
US7284070B2 (en) | 1997-10-14 | 2007-10-16 | Alacritech, Inc. | TCP offload network interface device |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6658480B2 (en) | 1997-10-14 | 2003-12-02 | Alacritech, Inc. | Intelligent network interface system and method for accelerated protocol processing |
US6757746B2 (en) | 1997-10-14 | 2004-06-29 | Alacritech, Inc. | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory |
US6480205B1 (en) | 1998-07-22 | 2002-11-12 | Nvidia Corporation | Method and apparatus for occlusion culling in graphics systems |
US6332215B1 (en) | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US6826749B2 (en) * | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
AU7060300A (en) | 1999-08-16 | 2001-03-13 | Iready Corporation | Internet jack |
ATE390788T1 (de) | 1999-10-14 | 2008-04-15 | Bluearc Uk Ltd | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen |
US7209140B1 (en) | 1999-12-06 | 2007-04-24 | Nvidia Corporation | System, method and article of manufacture for a programmable vertex processing model with instruction set |
US6844880B1 (en) | 1999-12-06 | 2005-01-18 | Nvidia Corporation | System, method and computer program product for an improved programmable vertex processing model with instruction set |
WO2002059757A1 (en) * | 2001-01-26 | 2002-08-01 | Iready Corporation | Communications processor |
US7379475B2 (en) | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
KR100425681B1 (ko) * | 2001-07-23 | 2004-04-03 | 엘지전자 주식회사 | 디에스엠-씨씨 기반 장치의 에이피아이 구현 장치 및 방법 |
US8769508B2 (en) | 2001-08-24 | 2014-07-01 | Nazomi Communications Inc. | Virtual machine hardware for RISC and CISC processors |
KR100487739B1 (ko) * | 2001-12-27 | 2005-05-06 | 한국전자통신연구원 | 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법 |
US7543087B2 (en) | 2002-04-22 | 2009-06-02 | Alacritech, Inc. | Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device |
US7457822B1 (en) | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
US7149752B2 (en) * | 2002-12-03 | 2006-12-12 | Jp Morgan Chase Bank | Method for simplifying databinding in application programs |
US8032439B2 (en) * | 2003-01-07 | 2011-10-04 | Jpmorgan Chase Bank, N.A. | System and method for process scheduling |
US7130987B2 (en) * | 2003-01-24 | 2006-10-31 | Mistletoe Technologies, Inc. | Reconfigurable semantic processor |
US7415596B2 (en) * | 2003-01-24 | 2008-08-19 | Gigafin Networks, Inc. | Parser table/production rule table configuration using CAM and SRAM |
US7424571B2 (en) | 2004-07-27 | 2008-09-09 | Gigafin Networks, Inc. | Array machine context data memory |
US20050281281A1 (en) * | 2003-01-24 | 2005-12-22 | Rajesh Nair | Port input buffer architecture |
US20060259508A1 (en) * | 2003-01-24 | 2006-11-16 | Mistletoe Technologies, Inc. | Method and apparatus for detecting semantic elements using a push down automaton |
US7379998B2 (en) * | 2003-03-31 | 2008-05-27 | Jp Morgan Chase Bank | System and method for multi-platform queue queries |
KR100479175B1 (ko) * | 2003-04-23 | 2005-03-25 | 에스케이 텔레콤주식회사 | 자바 가속칩을 이용하는 무선 인터넷 서비스 플랫폼이탑재된 이동 단말기 및 이를 이용한 그래픽 가속 방법 |
US7814073B2 (en) * | 2003-05-02 | 2010-10-12 | Jp Morgan Chase Bank | Utility for identifying differences between two Java objects |
US20040230602A1 (en) * | 2003-05-14 | 2004-11-18 | Andrew Doddington | System and method for decoupling data presentation layer and data gathering and storage layer in a distributed data processing system |
US7366722B2 (en) * | 2003-05-15 | 2008-04-29 | Jp Morgan Chase Bank | System and method for specifying application services and distributing them across multiple processors using XML |
US7509641B2 (en) * | 2003-05-16 | 2009-03-24 | Jp Morgan Chase Bank | Job processing framework |
US7853507B2 (en) * | 2003-06-23 | 2010-12-14 | Omx Technology Ab | Method for organizing financial instruments in a CSD-system |
US8572289B1 (en) | 2003-12-19 | 2013-10-29 | Nvidia Corporation | System, method and computer program product for stateless offloading of upper level network protocol operations |
US8549170B2 (en) | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US20050144174A1 (en) * | 2003-12-31 | 2005-06-30 | Leonid Pesenson | Framework for providing remote processing of a graphical user interface |
US20050222990A1 (en) * | 2004-04-06 | 2005-10-06 | Milne Kenneth T | Methods and systems for using script files to obtain, format and disseminate database information |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
WO2005102016A2 (en) * | 2004-04-26 | 2005-11-03 | Jp Morgan Chase Bank | System and method for routing messages |
DE102004021975A1 (de) * | 2004-05-04 | 2005-12-01 | Carl v. Ossietzky Universität Oldenburg, vertreten durch den Kanzler | Verfahren zur Bestimmung von Verklemmungen in nebenläufigen Prozessen |
US7398356B2 (en) | 2004-07-22 | 2008-07-08 | Mistletoe Technologies, Inc. | Contextual memory interface for network processor |
US7451268B2 (en) * | 2004-07-27 | 2008-11-11 | Gigafin Networks, Inc. | Arbiter for array machine context data memory |
US20070043871A1 (en) * | 2005-07-19 | 2007-02-22 | Mistletoe Technologies, Inc. | Debug non-terminal symbol for parser error handling |
US20060031555A1 (en) * | 2004-08-05 | 2006-02-09 | Somsubhra Sikdar | Data context switching in a semantic processor |
US20070019661A1 (en) * | 2005-07-20 | 2007-01-25 | Mistletoe Technologies, Inc. | Packet output buffer for semantic processor |
US7957379B2 (en) | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US20070016906A1 (en) * | 2005-07-18 | 2007-01-18 | Mistletoe Technologies, Inc. | Efficient hardware allocation of processes to processors |
US20070022225A1 (en) * | 2005-07-21 | 2007-01-25 | Mistletoe Technologies, Inc. | Memory DMA interface with checksum |
US20070022275A1 (en) * | 2005-07-25 | 2007-01-25 | Mistletoe Technologies, Inc. | Processor cluster implementing conditional instruction skip |
US20070157155A1 (en) * | 2005-12-30 | 2007-07-05 | Peters Eric C | System and method for software generation and execution |
US7610172B2 (en) * | 2006-06-16 | 2009-10-27 | Jpmorgan Chase Bank, N.A. | Method and system for monitoring non-occurring events |
GB0619380D0 (en) * | 2006-10-02 | 2006-11-08 | Transitive Ltd | Method and apparatus for program code conversion from a register window based subject computing architecture |
US9043553B2 (en) * | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8266387B2 (en) * | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US20090006507A1 (en) * | 2007-06-27 | 2009-01-01 | Mingnan Guo | System and method for ordering reclamation of unreachable objects |
US8176253B2 (en) * | 2007-06-27 | 2012-05-08 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8477143B2 (en) | 2008-03-04 | 2013-07-02 | Apple Inc. | Buffers for display acceleration |
US8289333B2 (en) * | 2008-03-04 | 2012-10-16 | Apple Inc. | Multi-context graphics processing |
US9418171B2 (en) * | 2008-03-04 | 2016-08-16 | Apple Inc. | Acceleration of rendering of web-based content |
US8539513B1 (en) | 2008-04-01 | 2013-09-17 | Alacritech, Inc. | Accelerating data transfer in a virtual computer system with tightly coupled TCP connections |
GB0806183D0 (en) * | 2008-04-04 | 2008-05-14 | Picsel Res Ltd | Presentation of objects in 3D displays |
US8341286B1 (en) | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
CN102224476B (zh) * | 2008-10-14 | 2017-08-01 | 奥布隆工业有限公司 | 多进程交互***和方法 |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
KR101572262B1 (ko) | 2009-01-02 | 2015-11-27 | 삼성전자주식회사 | 모바일 응용프로그램 모델의 동작방법 및 장치 |
US20100325565A1 (en) * | 2009-06-17 | 2010-12-23 | EchoStar Technologies, L.L.C. | Apparatus and methods for generating graphical interfaces |
US8990802B1 (en) * | 2010-05-24 | 2015-03-24 | Thinking Software, Inc. | Pinball virtual machine (PVM) implementing computing process within a structural space using PVM atoms and PVM atomic threads |
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
WO2014142836A1 (en) | 2013-03-13 | 2014-09-18 | Empire Technology Development, Llc | Memory allocation accelerator |
KR102273023B1 (ko) | 2014-10-16 | 2021-07-05 | 삼성전자주식회사 | 화질 개선 알고리즘 처리 방법 및 장치 |
US10719303B2 (en) * | 2015-06-07 | 2020-07-21 | Apple Inc. | Graphics engine and environment for encapsulating graphics libraries and hardware |
CN105677491B (zh) * | 2015-12-31 | 2019-07-23 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
US10853125B2 (en) | 2016-08-19 | 2020-12-01 | Oracle International Corporation | Resource efficient acceleration of datastream analytics processing using an analytics accelerator |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04314133A (ja) * | 1991-04-11 | 1992-11-05 | Nec Corp | 情報処理装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4695949A (en) * | 1984-07-19 | 1987-09-22 | Texas Instruments Incorporated | Method for efficient support for reference counting |
US4807111A (en) * | 1987-06-19 | 1989-02-21 | International Business Machines Corporation | Dynamic queueing method |
US4839851A (en) * | 1987-07-13 | 1989-06-13 | Idaho Research Foundation, Inc. | Programmable data path device |
US5218698A (en) * | 1991-11-22 | 1993-06-08 | Aerojet-General Corporation | Garbage collection system for a symbolic digital processor |
US5877764A (en) * | 1992-10-23 | 1999-03-02 | International Business Machines Corporation | Graphical user interface for managing text i/o between a user and a parallel program |
EP0672277B1 (en) * | 1992-12-01 | 1998-05-13 | Microsoft Corporation | A method and system for in-place interaction with embedded objects |
US5596702A (en) * | 1993-04-16 | 1997-01-21 | International Business Machines Corporation | Method and system for dynamically sharing user interface displays among a plurality of application program |
US5621434A (en) * | 1993-08-11 | 1997-04-15 | Object Technology Licensing Corp. | Cursor manipulation system and method |
AU6023994A (en) * | 1993-11-02 | 1995-05-23 | Taligent, Inc. | Object-oriented graphic system |
JPH09507109A (ja) * | 1993-11-02 | 1997-07-15 | パラコム コーポレイション | コンピュータデータベースに関するトランザクションの処理を促進させるための装置 |
AU6018294A (en) * | 1993-12-02 | 1995-06-19 | Taligent, Inc. | Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system |
US5650941A (en) * | 1994-09-07 | 1997-07-22 | Intel Corporation | Computer architecture for creating and manipulating displayable objects |
US5664162A (en) * | 1994-05-23 | 1997-09-02 | Cirrus Logic, Inc. | Graphics accelerator with dual memory controllers |
US5680605A (en) * | 1995-02-07 | 1997-10-21 | Torres; Robert J. | Method and apparatus for searching a large volume of data with a pointer-based device in a data processing system |
US5870622A (en) * | 1995-06-07 | 1999-02-09 | Advanced Micro Devices, Inc. | Computer system and method for transferring commands and data to a dedicated multimedia engine |
US5918051A (en) * | 1995-07-19 | 1999-06-29 | Ricoh Company, Ltd. | Object-oriented communication system with support for multiple remote machine types |
US5778178A (en) * | 1995-11-13 | 1998-07-07 | Arunachalam; Lakshmi | Method and apparatus for enabling real-time bi-directional transactions on a network |
US5946487A (en) * | 1996-06-10 | 1999-08-31 | Lsi Logic Corporation | Object-oriented multi-media architecture |
US5754556A (en) * | 1996-07-18 | 1998-05-19 | Teradyne, Inc. | Semiconductor memory tester with hardware accelerators |
US5854750A (en) * | 1996-09-03 | 1998-12-29 | Insession, Inc. | System and method for processing transactions in an environment containing a number of object oriented applications |
US5923892A (en) * | 1997-10-27 | 1999-07-13 | Levy; Paul S. | Host processor and coprocessor arrangement for processing platform-independent code |
-
1998
- 1998-04-30 KR KR1019997009848A patent/KR20010020250A/ko not_active Application Discontinuation
- 1998-04-30 AU AU73648/98A patent/AU734115B2/en not_active Ceased
- 1998-04-30 EP EP98920921A patent/EP0980544A1/en not_active Withdrawn
- 1998-04-30 CN CN98804866A patent/CN1266512A/zh active Pending
- 1998-04-30 WO PCT/US1998/008719 patent/WO1998050852A1/en not_active Application Discontinuation
- 1998-04-30 CA CA002287413A patent/CA2287413A1/en not_active Abandoned
- 1998-04-30 JP JP10548207A patent/JP2000514944A/ja active Pending
-
2001
- 2001-06-20 US US09/886,167 patent/US6983357B2/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04314133A (ja) * | 1991-04-11 | 1992-11-05 | Nec Corp | 情報処理装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010061648A (ja) * | 2008-09-04 | 2010-03-18 | Internatl Business Mach Corp <Ibm> | ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
WO1998050852A1 (en) | 1998-11-12 |
AU734115B2 (en) | 2001-06-07 |
US20020078115A1 (en) | 2002-06-20 |
EP0980544A1 (en) | 2000-02-23 |
KR20010020250A (ko) | 2001-03-15 |
AU7364898A (en) | 1998-11-27 |
US6983357B2 (en) | 2006-01-03 |
CA2287413A1 (en) | 1998-11-12 |
CN1266512A (zh) | 2000-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000514944A (ja) | オブジェクト指向プログラミング言語のためのハードウェア加速器 | |
US9098297B2 (en) | Hardware accelerator for an object-oriented programming language | |
US6330659B1 (en) | Hardware accelerator for an object-oriented programming language | |
RU2371758C2 (ru) | Интерфейс программирования для компьютерной платформы | |
US6519605B1 (en) | Run-time translation of legacy emulator high level language application programming interface (EHLLAPI) calls to object-based calls | |
US7546602B2 (en) | Application program interface for network software platform | |
EP0777943B1 (en) | Extensible, replaceable network component system | |
EP0836139A2 (en) | Object-oriented system, method and article of manufacture for a client-server graphical user interface framework in an interprise computing framework system | |
EP0834804A2 (en) | Object-oriented system, method and article of manifacture for a client-server state machine in an interprise computing framework system | |
EP0827074A2 (en) | A system, method and article of manufacture for a distributed computer system framework | |
EP0822491A2 (en) | Object-oriented system, method and article of manufacture for migrating a client-server application | |
EP0844558A2 (en) | Object-oriented system, method and article of manufature for a client-server event driver message framework in an interprise computing framework system | |
EP0827075A2 (en) | Object-oriented system, method and article of manufacture for a client-server state machine framework | |
US20010020255A1 (en) | Method and system for remote control and interaction with a run time environment component | |
EP0822489A2 (en) | Object-oriented system, method and article of manufacture for a client-server system with a client program cache | |
EP0827073A2 (en) | Object-oriented system, method and article of manufacture for a client-server-centric enterprise computing framework system | |
US20020166000A1 (en) | Method for inverting program control flow | |
WO1998038573A1 (en) | Asynchronous-event opening component of a network component system | |
EP0827076A2 (en) | Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system | |
US7730500B2 (en) | Application programming interface techniques for accessing operating system resources | |
CA2255133A1 (en) | Method and apparatus for efficient representation of variable length identifiers in a distributed object system | |
JP2009506467A (ja) | 仮想マシンにおける並行タスクのためのイベント処理 | |
EP1011042B1 (en) | Applet and application display in embedded systems using bufferless child graphics contexts | |
Satoh | Mobile agent-based compound documents | |
TW448407B (en) | Hardware accelerator for an object-oriented programming language |