[go: up one dir, main page]

JP3051438B2 - How to give enhanced graphics capabilities - Google Patents

How to give enhanced graphics capabilities

Info

Publication number
JP3051438B2
JP3051438B2 JP27515790A JP27515790A JP3051438B2 JP 3051438 B2 JP3051438 B2 JP 3051438B2 JP 27515790 A JP27515790 A JP 27515790A JP 27515790 A JP27515790 A JP 27515790A JP 3051438 B2 JP3051438 B2 JP 3051438B2
Authority
JP
Japan
Prior art keywords
graphics
processor
processor system
function
subprogram
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.)
Expired - Fee Related
Application number
JP27515790A
Other languages
Japanese (ja)
Other versions
JPH03208187A (en
Inventor
エイ デニオ マイケル
エス イーグル ウィリアム
シー クローフォード ダグラス
ディー アサル マイケル
ショート グレイアム
ジー リトルトン ジェイムズ
アール ヴァン アーカン ジェリー
Original Assignee
テキサス インスツルメンツ インコーポレイテッド
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
Priority claimed from US07/420,409 external-priority patent/US5269021A/en
Priority claimed from US07/420,491 external-priority patent/US5247678A/en
Application filed by テキサス インスツルメンツ インコーポレイテッド filed Critical テキサス インスツルメンツ インコーポレイテッド
Publication of JPH03208187A publication Critical patent/JPH03208187A/en
Application granted granted Critical
Publication of JP3051438B2 publication Critical patent/JP3051438B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Image Generation (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は全体として、コンピュータ処理、殊に、ホス
トプロセッサとグラフィックプロセッサを共に備えるシ
ステム用のソフトウエアインターフェースに関する。
Description: FIELD OF THE INVENTION The present invention relates generally to computer processing, and more particularly to a software interface for a system having both a host processor and a graphics processor.

[従来の技術] 今日の、グラフィックディスプレイを使用するコンピ
ュータシステムは、相異なる一連のアーキテクチャを有
している。システムによってホストプロセッサとディス
プレイコントローラを備えるものがある。これらは本質
上、ハードワイアド・ビットマップシステムであって、
ホストプロセッサが全てのグラフィック処理を実行する
ことが要求される。しかし、かかるシステムの欠点は、
解像度の如き図形に課される要求が厳しくなるにつれ
て、ホストプロセッサに対する処理上の負担もまた大き
くなり、その結果、処理速度が低下することである。
2. Description of the Related Art Computer systems using graphic displays today have a different set of architectures. Some systems include a host processor and a display controller. These are essentially hardwired bitmap systems,
It is required that the host processor performs all graphics processing. However, the disadvantage of such a system is that
As the demands placed on graphics, such as resolution, increase, the processing burden on the host processor also increases, resulting in reduced processing speed.

ディスプレイコントローラに代わる選択肢として、他
のシステムではグラフィック処理の任務をグラフィック
処理サブシステムに委ねているものがある。かかるシス
テムにはグラフィック機能の実行を専らハードウエアが
行うという形に依存しているものもある。その他のグラ
フィック処理サブシステムはプログラマブルグラフィッ
クプロセッサを使用して、プログラマが機能性を追加で
きるようにしたものがある。
As an alternative to the display controller, other systems delegate the responsibility of graphics processing to the graphics processing subsystem. Some such systems rely on the hardware performing the graphics function exclusively. Other graphics processing subsystems use programmable graphics processors to allow programmers to add functionality.

グラフィックプロセッササブシステムは高い解像度と
高速な実行を可能にするければも、かかるシステムの多
くの欠点は、ハードワイヤド方式のものであれ、プログ
ラマブルなものであれ、それらの拡張が容易でないとい
う点である。プログラマブルプロセッサを有するサブシ
ステムでさえ、ホストシステムとそのアプリケーション
プログラムとを統合することは困難であり、この理由か
ら、それらは本質上、固定機能システムとなっている。
かかるシステムはできる限り、汎用的であろうと努めて
いるため、余りに多くの機能をサブシステムに追加する
ためにその機能性は効率性を犠牲にして得られることに
なり、いわゆる「輪廻」効果を有することになりがちで
ある。固定された組の機能を有するか、拡張困難なシス
テムの有するもう一つの問題点は、それらが、新たなグ
ラフィックアルゴリズムが間断なく開発されているグラ
フィックソフトウエアと歩調をあわせることができない
点である。
While the graphics processor subsystem allows for high resolution and fast execution, many disadvantages of such a system, whether hardwired or programmable, are that it is not easy to extend them. It is. Even subsystems with programmable processors have difficulty integrating the host system with its application programs, and for this reason they are essentially fixed function systems.
Since such systems strive to be as versatile as possible, their functionality comes at the expense of efficiency in order to add too much functionality to the subsystem, thus reducing the so-called "reincarnation" effect. Tend to have. Another problem with systems that have a fixed set of features or are difficult to scale is that they cannot keep pace with the graphics software for which new graphics algorithms are constantly being developed. .

拡張可能性の他に、グラフィックシステムを設計する
際に考慮すべきもう一つの問題は規格化の問題である。
ハードウエアメーカの観点からは、グラフィック規格の
目的は、1つのグラフィックシステムが多くのアプリケ
ーションプログラムと共に使用できるようにすることで
ある。ソフトウエア開発者の観点からは、一つの規格は
一つのプログラムがどんなグラフィックシステム上でも
走ることができるようにしなければならない。
Besides scalability, another issue to consider when designing a graphics system is that of standardization.
From a hardware manufacturer's point of view, the purpose of a graphics standard is to allow one graphics system to be used with many application programs. From a software developer's point of view, one standard must allow one program to run on any graphic system.

CGA、EGA、VGAの如き多くの規格は、グラフィックサ
ブプロセッサシステムよりも単一のプロセッサシステム
に対して向けられたものであり、それらはソフトウエア
とグラフィックハードウエアのインターフェースをとる
点では成功しているけれども、ホストとグラフィックシ
ステム間のインターフェースを提供することには成功し
ていない。
Many standards, such as CGA, EGA, and VGA, are directed toward a single processor system rather than a graphics sub-processor system, and they have succeeded in interfacing software and graphics hardware. However, providing an interface between the host and the graphics system has not been successful.

そのため、効率性を落とさずに拡張可能性を提供でき
るグラフィックサブシステムインターフェースに対する
ニーズが存在している。更に、拡張可能性を実現するた
めの機構は、適用業務プログラマーとハードウエアメー
カの双方が彼らの製品を対象とすることの可能なインタ
ーフェースを提供する必要がある。上記インターフェー
スは、規格化を促進するだけの十分に高い水準にある
が、しかも処理速度を促進するに十分低いレベルになけ
ればならない。
Therefore, there is a need for a graphics subsystem interface that can provide scalability without sacrificing efficiency. In addition, mechanisms for achieving scalability need to provide an interface that allows both application programmers and hardware manufacturers to target their products. The interface must be at a sufficiently high level to facilitate standardization, but at a low enough level to facilitate processing speed.

[発明が解決しようとする課題][課題を解決するため
の手段] 本発明を一面から述べると、グラフィックプロセッサ
サブシステムにより実行されるが、ホストプロセッサシ
ステム上を走るメインプログラムから呼出される関数を
拡張する方法に関する。上記方法の基本的なステップ
は、グラフィックプロセッサにより実現されるサブプロ
グラムをつくりだし、同サブプログラムを定義すること
によってその引き数がランタイム時にパスできるように
し、サブプログラムをグラフィックプロセッサ用にコン
パイル又はアセンブリし、そのサブプログラムをグラフ
ィックプロセッサへロードし、同じサブプログラムを先
にロードされた関数にリンクすることである。
[Problems to be Solved by the Invention] [Means for Solving the Problems] According to one aspect of the present invention, a function executed by a graphic processor subsystem but called from a main program running on a host processor system is described. How to extend. The basic steps of the above method are to create a subprogram implemented by the graphics processor, define the subprogram so that its arguments can be passed at runtime, and compile or assemble the subprogram for the graphics processor. Loading the subprogram into the graphics processor and linking the same subprogram to the previously loaded function.

本発明をもう一つの面から表現すると、ホストコンピ
ュータシステム中にグラフィックサブシステムを使用す
る方法に関する。同方法は、グラフィックサブシステム
を使用して組の原始コア関数を提供し、ホストシステム
を使用して拡張関数をグラフィックサブシステムへダウ
ンロードし、ソフトウエアインターフェースを用いてホ
ストシステムからサブシステムへ引数をパスし、更にグ
ラフィックサブシステムを用いて拡張関数とコア関数を
実行する基本的ステップより構成される。
In another aspect, the invention relates to a method of using a graphics subsystem in a host computer system. The method provides a set of primitive core functions using a graphics subsystem, downloads extended functions to a graphics subsystem using a host system, and passes arguments from the host system to the subsystem using a software interface. It consists of the basic steps of passing and further executing the extension and core functions using the graphics subsystem.

本発明をハードウエアの面から見ると、第1のプロセ
ッサ上で単一のソフトウエアプログラムを実行すること
によってそのプログラムが第2のプロセッサによって実
行さるべき指定関数を呼出すことができるようにした多
重処理コンピュータシステムである。同システムは、プ
ログラマブルホストプロセッサシステムと、プログラマ
ブルグラフィックプロセッサシステムより成り、上記ホ
ストシステムは、拡張関数がグラフィックプロセッサへ
ダウンロードされ実行可能にするソフトウエアインター
フェースを使用している。
From a hardware standpoint, the present invention is a multiplex that executes a single software program on a first processor so that the program can call a designated function to be executed by a second processor. Processing computer system. The system comprises a programmable host processor system and a programmable graphics processor system, which uses a software interface that allows extended functions to be downloaded and executed on the graphics processor.

本発明をもう一つの面から見ると、多重処理コンピュ
ータシステムのホストプロセッサとグラフィックプロセ
ッササブシステムとのインターフェースをとるためのソ
フトウエアインターフェースである。本発明は、種々の
ソフトウエアプログラムを含み、それらが一つのアプリ
ケーションプログラムによって提供されるデータを処理
することによってそのアプリケーションプログラムがグ
ラフィックプロセッサにより実行される関数を呼出すこ
とができるようになっている。
In another aspect, the present invention is a software interface for interfacing a host processor and a graphics processor subsystem of a multi-processing computer system. The present invention includes various software programs, which process data provided by an application program so that the application program can call functions executed by a graphics processor.

[発明の効果] 本発明の技術的な利点は、それがグラフィックサブシ
ステムを効率的であると共に容易に拡張可能とする点で
ある。
A technical advantage of the present invention is that it makes the graphics subsystem efficient and easily scalable.

実行速度は、ソフトウエア開発者がゆのアプリケーシ
ョンに最も良く適合するグラフィック関数のカスタム集
合をつくりだすことができるために最適化される。本発
明のもう一つの利点は、それが、グラフィックサブシス
テムの機能性を拡張するために使用される方法を標準化
できる点である。本発明は、ハードウエアメーカとソフ
トウエア開発者の双方が対象とする彼らの製品に対する
インターフェースを提供するものである。
Execution speed is optimized because software developers can create custom sets of graphic functions that best fit their applications. Another advantage of the present invention is that it can standardize the methods used to extend the functionality of the graphics subsystem. The present invention provides an interface to both hardware manufacturers and software developers for their products.

[実施例] 本発明がオペレートするハードウエア環境は、一般的
に表現すれば、ホストプロセッサとグラフィック処理用
プロセッサの少なくとも2個のプロセッサを有する多重
処理コンピュータシステムである。かかるシステムの適
用業務は、コンピュータ支援設計(CAD)、デスクトッ
プパブリッシング、画像処理、プレゼンテーショングラ
フィックスの如き高解像度グラフィック処理である。本
発明のハードウエア的側面は、図3に関して詳論する。
Embodiment The hardware environment operated by the present invention is, in general terms, a multi-processing computer system having at least two processors, a host processor and a graphics processor. Applications for such systems are computer-aided design (CAD), desktop publishing, image processing, and high-resolution graphics processing such as presentation graphics. The hardware aspects of the present invention will be described in detail with reference to FIG.

本発明の利点の一つは、一つの言語で掻かれたメイン
ソフトウエアプログラムをホストシステム上で走られる
ことができるが、グラフィックプロセッサにより実行さ
るべく指名された関数を呼出すことができることであ
る。それ故、暗黙上、本発明の場合に使用されるプロセ
ッサは高水準言語でプログラミングすることが可能であ
り、上記言語は両プロセッサについて同一の言語とする
ことができる。かくして、各プロセッサは、それ自身の
命令集合とコンパイラと関わりあうことによって、その
プロセッサの低水準言語がつくりだされる。
One of the advantages of the present invention is that the main software program, which is scratched in one language, can be run on the host system, but can call the named functions to be executed by the graphics processor. Therefore, implicitly, the processor used in the present invention can be programmed in a high-level language, which can be the same language for both processors. Thus, each processor interacts with its own instruction set and compiler to create the processor's low-level language.

本発明の基本にある思想は、グラフィックサブシステ
ム上で実行されるべきグラフィック関数がコア原始関数
と拡張関数の2つのグループで最もよく実行されるとい
うことである。
The idea underlying the invention is that the graphics functions to be performed on the graphics subsystem are best performed in two groups: core primitive functions and extension functions.

コア原始関数は、常時、グラフィックプロセッサから
利用可能である。これらのコア原始関数は、少数の基本
グラフィックユーティリティ関数を含んでいるが、同時
に、システム初期化、グラフィック属性制御、メモリ管
理、スクリーンクリア、カーソル操作、通信、および拡
張用の関数をも備えている。拡張関数は、必要に応じて
ロードされ、アプリケーションプログラムにより使用さ
れるグラフィック関数を提供する。
The core primitive functions are always available from the graphic processor. These core primitives include a few basic graphics utility functions, but also provide functions for system initialization, graphics attribute control, memory management, screen clear, cursor manipulation, communication, and expansion. . Extension functions provide graphics functions that are loaded as needed and used by application programs.

本発明のソフトウエア的側面に関する以下の記述は、
主として、C言語で書かれたプログラムを対象とするの
である。然しながら、本発明がオペレートするプログラ
ミング環境はC言語に固有なものではなく、本文中に解
説したプログラミング構造と関数性は任意の高水準言語
へ容易に翻訳することが可能である。
The following description of the software aspects of the present invention:
It mainly targets programs written in C language. However, the programming environment in which the present invention operates is not specific to the C language, and the programming structure and functionality described in the text can be easily translated into any high-level language.

その特殊なインプリメーションは、本明細書を検討す
れば、当該技術分野において通常の技能を有するプログ
ラマの能力の範囲内にあると考えられる。本発明の開示
は種々の適用業務に対して今日利用可能な無数の言語と
システムで本発明を実施するために行うものである。
That particular implementation is considered to be within the capabilities of a programmer of ordinary skill in the art, upon review of this specification. The present disclosure is provided to implement the present invention in the myriad languages and systems available today for a variety of applications.

また拡張関数もアセンブラ言語で容易にプログラミン
グでき、その場合にはそれらは同様な方法で呼出され
る。拡張関数コードがコンパイルされるのではなくアセ
ンブルされる点を除いては同じ方法が使用される。それ
故、本解説上“アセンブル”は“コンパイル”と置換す
ることが可能である。
Extension functions can also be easily programmed in assembler language, in which case they are called in a similar manner. The same method is used, except that the extension function code is assembled rather than compiled. Therefore, "assembly" can be replaced with "compile" in this explanation.

本発明の「ユーザ」は、一つの多重処理システムの諸
々の一部を提供する種々の人物であって差支えない。例
えば、ユーザはソフトウエア開発者で、システム上で使
用するために作成中のアプリケーション又はドライバに
対する拡張関数を追加したいと欲しているものであって
もよい。あるいは、単に他のプログラマが使用できるよ
うにするために拡張関数を提供するプログラマであって
もよい。その代わりに、ボードメーカの如きハードウエ
アメーカがグラフィックシステム用の関数をプログラミ
ングすることもできる。また、上記ユーザは、そのイン
ターフェースを使用するプログラムを実際に実行させる
者であってもよい。更に、計算方法とプログラムの性質
によっては、ユーザは、コンピュータ上でランする他の
ソフトウエアであってもよい。
The "users" of the present invention can be various persons who provide various parts of one multiprocessing system. For example, the user may be a software developer who wants to add an extension function to the application or driver being created for use on the system. Alternatively, the programmer may simply provide an extension function for use by another programmer. Alternatively, a hardware manufacturer, such as a board manufacturer, can program the functions for the graphics system. Further, the user may be a person who actually executes a program using the interface. Further, depending on the calculation method and the nature of the program, the user may be other software running on the computer.

本発明の目的上、一人のユーザが多重処理システムに
付加したいと希望しているようなサブプログラムは「拡
張関数」と称することにする。メインプログラムを実行
するシステムは「ホストプロセッサシステム」あるいは
「ホストシステム」と称することにする。そして、その
際、そのプロセッサは「ホストプロセッサ」と称する。
拡張関数がその上で実行されるシステムは、「グラフィ
ック処理システム」であり、そのプロセッサは「グラフ
ィックプロセッサ」又は「グラフィックシステムプロセ
ッサ」(GSP)と称することにする。
For the purposes of the present invention, a subprogram that a user wishes to add to a multiprocessing system will be referred to as an "extended function". The system that executes the main program will be referred to as a “host processor system” or “host system”. At that time, the processor is referred to as a “host processor”.
The system on which the extension functions are executed is a "graphics processing system", the processor of which is referred to as a "graphics processor" or a "graphics system processor" (GSP).

図1は、マルチプロセッサシステムと共に使用される
拡張関数をつくりだす基本的ステップを示すブロック線
図であって、上記システムはホストプロセッサとグラフ
ィックプロセッサを備えている。この方法を使用して、
コア原始関数内に含まれないグラフィック関数を一人の
プログラマがつくりだすことができる。これらの拡張関
数はダイナミックロードモジュール(DLM)内に組込ま
れ、エンドユーザによって使用され、エンドユーザは普
通、それらを初期化時にグラフィックシステムへダウン
ロードする。その後、それらはホストシステム上で実行
中のメインプログラムから呼出すことができる。
FIG. 1 is a block diagram illustrating the basic steps of creating an extension function for use with a multiprocessor system, the system including a host processor and a graphics processor. Using this method,
One programmer can create graphic functions that are not included in the core primitive functions. These extension functions are built into the Dynamic Load Module (DLM) and used by the end user, who typically downloads them to the graphics system at initialization. They can then be called from the main program running on the host system.

上記方法の基本的ステップは、グラフィックプロセッ
サが実行するに適当なサブプロセッサを作成し、同サブ
プログラムをその引数が実行中にパス可能なように定義
し、グラフィックプロセッサ用にコンパイルし、そのサ
ブプログラムを一部リンクしてDLMを形成することであ
る。最終的に、DLMはグラフィックプロセッサへダウン
ロードされ、そこで現存のサブプロセッサ関数とコア原
始関数とリンクされる。
The basic steps of the above method are to create a sub-processor suitable for execution by the graphics processor, define the sub-program so that its arguments can be passed during execution, compile for the graphics processor, and Is linked to form a DLM. Finally, the DLM is downloaded to the graphics processor, where it is linked to existing sub-processor functions and core primitives.

ステップ11において、プログラマは、グラフィックプ
ロセッサが実行するに適当な、少なくとも一つの、通常
は一連の関数を有するサブプログラムを開発する。これ
らの関数は、高水準言語又はアセンブラ言語で書くこと
ができる。本発明の特徴の一つは、拡張関数がメインプ
ログラムと同一の言語で記述され、グラフィックプロセ
ッサ用にコンパイルまたはアンセブル可能な点である。
関数定数は、本文中では、本発明を実施するために使用
されるその他のコンピュータプログラミングと同様に、
その“コード”と称することにする。
In step 11, the programmer develops a subprogram having at least one, usually a set of functions, suitable for execution by a graphics processor. These functions can be written in a high-level language or an assembler language. One of the features of the present invention is that the extension function is described in the same language as the main program, and can be compiled or unseated for a graphic processor.
Function constants are used throughout the text, as well as other computer programming used to implement the invention.
Let's call it the "code".

ステップ12では、サブプログラムはランタイム中にサ
ブプログラム引数がグラフィックプロセッサへパスでき
るような形に定義される。ステップ13は、メインプログ
ラム中のサブプログラムの呼出しがステップ12の定義に
よって理解可能な形に表現されなければならない点でス
テップ12と関連している。ステップ12と13を実行するに
は少なくとも2つの異なる方法が存在する。これらの方
法は、「マルチプロセッサプロセッサにおけるソフトウ
エアパーティショニング」(米国特許第5,216,095
号)、及び「通信バッファ手段による他のプロセッサ上
の関数の拡張ソフトウエア呼出しシステム(米国特許第
5,404,519号)ウエア関数」に解説されている。米国特
許第5,216,095号は、拡張関数をマルチプロセッサシス
テムに付加するパケット法を記述し、米国特許第5,404,
519号はダイレクト法について記述している。
In step 12, the subprogram is defined such that the subprogram arguments can be passed to the graphics processor during runtime. Step 13 is related to step 12 in that the invocation of the subprogram in the main program must be expressed in a form understandable by the definition of step 12. There are at least two different ways to perform steps 12 and 13. These methods are described in "Software Partitioning in Multiprocessor Processors" (US Pat. No. 5,216,095).
US Patent No. 6,098,056) and "Extended software call system for functions on other processors by means of communication buffers"
No. 5,404,519). U.S. Pat. No. 5,216,095 describes a packet method for adding extension functions to a multiprocessor system, and U.S. Pat.
No. 519 describes the direct method.

上記パケット法は、ユーザ側でのプログラミング労力
量が最小になるようにグラフィックシステムを拡張でき
るように設計されている。同方法によれば、C言語のよ
うな高水準言語で記述された関数をホストシステム上で
ラン中のメインプログラムから呼出してグラフィックシ
ステムによって実行することができる。事実、上記米国
特許第5,216,095号中に説明されているように、パケッ
ト法によれば、一人のユーザがホストシステム上をラン
中の一関数をグラフィックシステムに移動させ、それを
同じパラメータによって呼出すことができる。パケット
法では、関数の引数は、送られるデータのサイズと型を
記述するパケットの形で送られる。
The packet method is designed so that the graphics system can be extended to minimize the amount of programming effort on the part of the user. According to this method, a function written in a high-level language such as the C language can be called from a running main program on a host system and executed by a graphic system. In fact, as described in the above-mentioned U.S. Pat. No. 5,216,095, the packet method allows one user to move a function running on a host system to a graphics system and call it with the same parameters. Can be. In the packet method, function arguments are sent in packets describing the size and type of data to be sent.

ダイレクト法は、パケット法のように引数をスタック
上に配置することはない。関数は、1個の引数と共にグ
ラフィックサブシステムにより呼出される。上記引数
は、通信バッファのポインタで、そこにホストは関数の
引数をダウンロードする。上記関数は、付加ロードを含
み、同コードは、グラフィックプロセッサに対して上記
バッファからパラメータを得て、それらを局所的変数と
突合わせるように指令する。上記関数は、直接入口点法
を用いてメインプログラムから呼出される。入口点は関
数の引数のフォーマットと復帰条件を判断する。これら
の直接入口点については米国特許第5,216,095号に詳説
されている。ステップ14はグラフィックプロセッサ用に
サブプログラムをコンバイルする。もし、サブプログラ
ムがグラフィックプロセッサ用にアセンブラ言語で書か
れていれば、ステップ14はそのコードをアセンブリする
ことはいうまでもない。コンパイルとアセンブルの技法
は周知の通りである。
The direct method does not place arguments on the stack unlike the packet method. The function is called by the graphics subsystem with one argument. The above argument is a pointer to the communication buffer, where the host downloads the function argument. The function includes an additional load, which directs the graphics processor to get the parameters from the buffer and match them with local variables. The above function is called from the main program using the direct entry point method. The entry point determines the format of the function arguments and the return condition. These direct entry points are detailed in U.S. Patent No. 5,216,095. Step 14 compiles the subprogram for the graphics processor. If the subprogram is written in an assembler language for a graphic processor, it goes without saying that step 14 assembles the code. Compiling and assembling techniques are well known.

ステップ15−17は、サブプログラムの一部リンクとロ
ードを喚起する。これらステップの実行については、図
7を参照して後述する。本発明の重要な特徴点は特定の
アプリケーションプログラムの要求に応じてランタイム
時に拡張関数がロードされリングできる点にあるため、
上記リンク・ロードのステップは、本文中、「ダイナミ
ックダウンローディング」と称することにする。
Steps 15-17 call for a partial link and load of the subprogram. The execution of these steps will be described later with reference to FIG. An important feature of the present invention is that extension functions can be loaded and ringed at runtime according to the requirements of a specific application program.
The link loading step will be referred to as "dynamic downloading" in the text.

図7を参照して後述するロードタイムリンカの方法論
に従って、ステップ15はサブプログラムを一部リンクし
てDLMを形成する。この一部リンキングステップによっ
てサブプログラム内部の変数と関数に対する参照が全て
解決される。サブプログラムにより外部参照されたそれ
らの変数と関数は解決されないままにとどまる。ステッ
プ16はDLMをグラフィックシステムにロードする。ラン
タイム中にロードが行われることによって、アプリケー
ションプログラムは、それと共に使用されるハードウエ
アとは別個に市販することができるようにすることが望
ましい。ステップ17は、DLMのリンクを完了し、サブプ
ロセッサシステム中に常駐する外部参照変数と関数を全
て解決する。これらの常駐関数はコア原始関数であるの
が通常であろうが、本発明の方法によりロードされる他
の拡張関数であってもよい。ソフトウエア開発段階中に
おいて、ステップ16と17は、当該アプリケーションが最
終的に使用されることになるグラフィックサブシステム
上でなく、特殊なテストグラフィックサブシステム上で
行われることができる。にもかかわらず、上記テストシ
ステムは、グラフィックプロセッサとエミュレークを備
えるものと想定され、上記方法は基本的に同一である。
エンドユーザは、また、ランタイム時にステップ16と17
を実行することもできる。
Step 15 partially links the subprograms to form a DLM, according to the methodology of the load time linker described below with reference to FIG. This partial linking step resolves all references to variables and functions within the subprogram. Those variables and functions externally referenced by the subprogram remain unresolved. Step 16 loads the DLM into the graphics system. It is desirable that the loading be performed during runtime so that the application program can be marketed separately from the hardware used with it. Step 17 completes the linking of the DLM and resolves all external reference variables and functions residing in the sub-processor system. These resident functions will typically be core primitive functions, but may be other extension functions loaded by the method of the present invention. During the software development phase, steps 16 and 17 can be performed on a special test graphics subsystem, rather than on the graphics subsystem where the application will ultimately be used. Nevertheless, the test system is assumed to comprise a graphics processor and an emulation, and the method is basically the same.
End-users should also be aware that steps 16 and 17
Can also be performed.

図2は、本発明の第2の面であるホストコンピュータ
システム中にグラフィックサブシステムを使用する方法
を示す。図2は、システムフローダイアグラムの形をと
っており、その方法のステップはそれらを実行するソフ
トウエアプログラムと関連している。全体として、図2
は、ホストメモリ210とグラフィックソモリ220内に共に
常駐するソフトウエアより構成される。メモリ210内に
常駐するソフトウエアは、通信ドライバ211と、アプリ
ケーションプログラムオブジェクトファイル214と、拡
張関数オブジェクトファイル216であり、後者は以下に
論ずるようにグラフィックメモリ220へロードされる。2
12と215の番号をふったコンポーネントは、アプリケー
ションファイル214と拡張関数DLMファイル216がソース
コードモジュールからコンパイルされたことを示す。ア
プリケーションファイル214の一つは、メインプログラ
ム213である。メモリ220内に常駐するソフトウエアは、
コマンド実行ルーチン221と、拡張関数定義の実行可能
ファイル226と、インクルードファイル225と、コア原始
関数222、223、224である。これらコンポーネントは図
4に関連して更に解説する。
FIG. 2 illustrates a second aspect of the present invention, a method of using a graphics subsystem in a host computer system. FIG. 2 is in the form of a system flow diagram, wherein the steps of the method are associated with the software programs that execute them. As a whole, FIG.
Is composed of software resident in the host memory 210 and the graphics memory 220 together. The software resident in memory 210 is a communication driver 211, an application program object file 214, and an extended function object file 216, the latter being loaded into graphic memory 220 as discussed below. Two
Components numbered 12 and 215 indicate that the application file 214 and extension function DLM file 216 have been compiled from source code modules. One of the application files 214 is a main program 213. The software resident in the memory 220
A command execution routine 221, an executable file 226 for defining an extended function, an include file 225, and core primitive functions 222, 223, and 224. These components are further described in connection with FIG.

図2の方法は、プロセッサどうしの間の交信手段を備
える多種処理コンピュータシステム上で使用するための
ものである。従って、かかるシステムのブロック線図で
ある図3を参照することによって最も良く理解すること
ができる。同システムはホストプロセッサシステム310
と、グラフィックプロセッササブシステム320を共に備
えている。グラフィックシステム320は、グラフィック
プロセッサ321がホストプロセッサ311と平行してラン
し、グラフィック情報を計算・処理する一方、ホストプ
ロセッサ311が他の処理タスクを続行処理可能なように
構成することが望ましい。
The method of FIG. 2 is for use on a multi-processing computer system that includes communication means between processors. Therefore, it can best be understood by referring to FIG. 3, which is a block diagram of such a system. The system is a host processor system 310
And a graphics processor subsystem 320. Preferably, the graphics system 320 is configured so that the graphics processor 321 runs in parallel with the host processor 311 to calculate and process graphic information, while the host processor 311 can continue processing other processing tasks.

ホストプロセッサ311は、インテル社製の80286と8038
6プロセッサの如き周辺制御用に最適化されるのが普通
である。これらのプロセッサはDOSをベースとしたパー
ソナルコンピュータシステムと共に使用されるが、本発
明はDOSオペレーティングシステムに限定されるもので
はない。事実、本文中に解説した方法とメカニズムは各
種のプロセッサとオペレーティングシステムを使用して
実施することが可能である。ホストコンピュータ311と
関係するメモリ210は、ランダムアクセスメモリ(RAM)
を備えることによって、同メモリがその処理を指示する
プログラムにアクセス可能とすることができる。
Host processor 311 is Intel 80286 and 8038
It is usually optimized for peripheral control such as six processors. While these processors are used with DOS-based personal computer systems, the invention is not limited to DOS operating systems. In fact, the methods and mechanisms described herein may be implemented using various processors and operating systems. The memory 210 associated with the host computer 311 is a random access memory (RAM)
Is provided, the memory can be made accessible to a program instructing the processing.

グラフィックプロセッサ321はグラフィック処理用に
設計され、プログラミング可能である。かかるプロセッ
サの一例は、テキサス・インスツルメント社製の34010
グラフィックプロセッサであって、同プロセッサは、デ
ィスプレイ装置制御とリフレッシュ操作用のハードウエ
アと共に、グラフィック処理用の命令集合を拡張した32
ビットマイクロプロセッサである。メモリ220はRAMメモ
リを備えることによって、グラフィックプロセッサ321
が同メモリに如何にしてグラフィック情報を処理すべき
かを命令するプログラムを格納することができるように
なっている。
Graphics processor 321 is designed for graphics processing and is programmable. One example of such a processor is the Texas Instruments 34010.
A graphics processor, which extends the set of graphics processing instructions, along with hardware for display device control and refresh operations.
It is a bit microprocessor. The memory 220 includes a RAM memory so that the graphic processor 321 can be used.
Can store a program for instructing how to process graphic information in the same memory.

上記2個のプロセッサどうしの間の通信手段は、バス
330と通信バッファ323により具体化する。バス330は双
方向性であって、データ通路と制御ラインを提供する。
通信バッファ323は、両方のプロセッサシステム310と32
0とによってアクセス可能であり、図5に関して詳説す
る。通信手段のその他のハートウエア製作も可能であっ
て、その場合の第一次的な要求条件は、各プロセッサ31
1と321とが、通信バッファ323にアクセスでき、同バッ
ファ323が、プロセッサどうしの間をハンドシェイクさ
せるためのメッセージデータと、呼出し中の関数を識別
するための識別空間と、コマンド引数と追加データをパ
スするためのデータ空間より構成されていることであ
る。図3に示す形は、プロセッサ間の交信を可能にする
ための数多くの手段のうちの一つにすぎず、その他の手
段も容易に開発することができる。更に、図3は2プロ
セッサシステム310、320で別々のメモリ210と220を備え
たものを示しているが、通信手段は共用メモリであって
も差支えない。
The communication means between the two processors is a bus
This is realized by 330 and the communication buffer 323. Bus 330 is bidirectional and provides data paths and control lines.
The communication buffer 323 is used for both processor systems 310 and 32
0 and is described in detail with respect to FIG. Other heartware fabrication of the communication means is also possible, in which case the primary requirement is that each processor 31
1 and 321 can access the communication buffer 323, which is used for message data for handshaking between processors, identification space for identifying the function being called, command arguments and additional data. In a data space for passing The form shown in FIG. 3 is only one of many means for enabling communication between processors, and other means can be easily developed. Further, while FIG. 3 shows a two-processor system 310, 320 with separate memories 210 and 220, the communication means may be a shared memory.

図3のマルチプロセッサシステムは、種々の標準的な
周辺操作群、殊に、ディスプレイ340、大容量メモリ35
0、およびキーボードやマウスの如き入力装置360と共に
動作する。これらの入出力装置とその他のホストシステ
ム310部分間でホストシステムバス314を介して適当な形
で情報を交信するためにI/O回路313を使用する。入力装
置360よってユーザは、ホストプロセッサシステム310と
対話することができる。ディスプレイ340は、周知の制
御技法と入出力技法を介してグラフィックプロセッサ32
1へ接続される。
The multiprocessor system of FIG. 3 includes a variety of standard peripheral operations, specifically, a display 340,
0, and works with input devices 360 such as keyboards and mice. An I / O circuit 313 is used to communicate information between these input / output devices and the other host system 310 via the host system bus 314 in an appropriate manner. Input device 360 allows a user to interact with host processor system 310. The display 340 is connected to the graphics processor 32 through well-known control and input / output techniques.
Connected to 1.

再び図2について見ると、上記方法は、DLMファイル2
16からグラフィックサブシステム320へ拡張関数をダウ
ンロードし、上記拡張関数をメインプログラム213から
呼出し、同関数の引数をホストシステム310からサブシ
ステム320へパスし、拡張関数を実行するという基本的
なステップ構成される。コア原始関数は、メインプログ
ラム213がサブシステム320内に常駐する関数を呼出す前
に、グラフィックサブシステム320内へロードされる。
このことによってロードとリンクがグラフィックプロセ
ッサ321によって実行されることが可能になると共に、
拡張関数によって一定の基本的なグラフィックタスクを
呼出すことが可能になる。
Referring again to FIG. 2, the above method is used for DLM file 2
A basic step configuration that downloads an extension function from 16 to the graphics subsystem 320, calls the extension function from the main program 213, passes arguments of the function from the host system 310 to the subsystem 320, and executes the extension function Is done. The core primitive functions are loaded into the graphics subsystem 320 before the main program 213 calls a function resident in the subsystem 320.
This allows loading and linking to be performed by the graphics processor 321 and
Extension functions allow you to call certain basic graphic tasks.

図2の方法は、一つのアプリケーションプログラムが
実行されることになるまで行われる必要はないから、同
方法2はランタイム法と称することになる。然しなが
ら、上記アプリケーションプログラムは再びその拡張関
数をロードしリンクすることなく再実行可能な点を理解
されたい。
Since the method of FIG. 2 does not need to be performed until one application program is executed, the method 2 is referred to as a runtime method. However, it should be understood that the application program can be re-executed without loading and linking the extension function again.

かくして、ステップ22では、拡張関数DLM216がグラフ
ィックメモリ220へロードされ、同関数をそれが呼出す
他の任意のコードとリンクされる。このことは、コア関
数であるダイナミックリンカ224によって実現される。
同リンカ224は、図1に関して先に説明したロードとリ
ンクのステップを実行する。
Thus, in step 22, the extension function DLM 216 is loaded into the graphics memory 220 and linked to any other code that calls it. This is achieved by the dynamic linker 224, which is a core function.
The linker 224 performs the load and link steps described above with respect to FIG.

殊に、ステップ22のロードとリンクによって拡張関数
DLM216がメモリ220へロードされ、ランタイム時に他の
拡張関数とコア原始関数にリンクされ、実行可能ファイ
ル226を形成することが可能になる。ダイナミックリン
カ224は、インクルードファイル225の一部である記号テ
ーブルファイルを用いて拡張関数を含む実行可能なファ
イル226をつくりだし、システム残部に対する関数を識
別する。本発明の特徴の一つは、拡張関数がコードモジ
ュール215としてホストシステム310上で開発され、オブ
ジェクトファイル216へとコンパイルされ、グラフィッ
クシステム320へダウンロードできる点である。
In particular, the extension function by loading and linking in step 22
DLM 216 is loaded into memory 220 and linked to other extension functions and core primitives at run time to form executable 226. The dynamic linker 224 uses a symbol table file that is part of the include file 225 to create an executable file 226 containing the extended functions and identify functions for the rest of the system. One of the features of the present invention is that an extension function can be developed on the host system 310 as a code module 215, compiled into an object file 216, and downloaded to the graphics system 320.

ステップ23では、現在は実行可能なファイル226の形
をとった拡張関数がホストシステム310上をランするメ
インプログラム213から呼出される。メインプログラム2
13はオブジェクトファイル214から導出される実行可能
ファイルである。
In step 23, an extension function in the form of a currently executable file 226 is called from the main program 213 running on the host system 310. Main program 2
13 is an executable file derived from the object file 214.

ステップ24では拡張関数226の引数がホストシステム3
10からサブシステム320へパスされる。ステップ24を実
行するために、ホストシステム310は通信ドライバ211を
供給され、グラフィックシステム320は、コマンド実行
プログラム221を供給される。通信ドライバ211の詳細
は、図4と図5に関して以下に説明するが、要するに、
通信ドライバ211は、ホストシステム310とグラフィック
システム320間を交信するために使用されるプログラム
を格納している。また、コマンド実行プログラム221
も、図4に関して以下に説明する。通信ドライバ211と
コマンド実行プログラム221双方の働きは、パケット法
又は引数をパスするダイレクト法の何れか一方、又はそ
の両方を包含する。ステップ25では、グラフィックサブ
システム310を用いて拡張関数226が実行される。もし拡
張関数226がコアアプリケーション原始関数223を呼出す
場合には、ステップ25はその原始関数の実行を伴うこと
になる。
In step 24, the argument of the extension function 226 is set to the host system 3
Passed from 10 to subsystem 320. To perform step 24, the host system 310 is provided with a communication driver 211 and the graphics system 320 is provided with a command execution program 221. The details of the communication driver 211 will be described below with reference to FIGS. 4 and 5, but in short,
The communication driver 211 stores a program used for communicating between the host system 310 and the graphic system 320. In addition, the command execution program 221
Is also described below with respect to FIG. The functions of both the communication driver 211 and the command execution program 221 include either the packet method or the direct method of passing an argument, or both. In step 25, the extension function 226 is executed using the graphics subsystem 310. If the extension function 226 calls the core application primitive 223, step 25 will involve the execution of that primitive.

ステップ26では、グラフィックサブシステム320を使
用してコア原始関数222、223、224をサブシステム320内
へロードする。上記関数は常に呼出し可能である。コア
原始関数は、システム原始関数222と、アプリケーショ
ン原始プログラム223の2つの基本的な関数型にグルー
プ分けすることができる。システム原始関数222は、サ
ブシステム初期化、出力、メモリ管理、通信、および拡
張の如き処理を実行するための関数を含む。システム原
始関数の後者の型、拡張関数は、拡張関数をロードし、
リンクすることに関連して使用され、ダイナミックリン
カ224として別個に命令する特殊プログラムを含んでい
る。アプリケーション原始関数223は、図1の方法によ
りリンクされた後に、メインプログラム213から呼出し
て利用される。コア原始関数222、223、224のインプリ
メンテーションの特殊例は、“TOGA−340インターフェ
ースユーザガイド”(テキサス・インスツルメント社
刊)と題する刊行物に見ることができる。
In step 26, the core primitive functions 222, 223, 224 are loaded into the subsystem 320 using the graphics subsystem 320. The above functions are always callable. Core primitive functions can be grouped into two basic function types: system primitive functions 222 and application primitive programs 223. The system primitive functions 222 include functions for executing processes such as subsystem initialization, output, memory management, communication, and extension. The latter type of system primitive function, the extension function, loads the extension function,
It includes a special program that is used in connection with linking and that separately orders as dynamic linker 224. The application primitive function 223 is called from the main program 213 and used after being linked by the method of FIG. Specific examples of implementations of the core primitive functions 222, 223, 224 can be found in a publication entitled "TOGA-340 Interface User Guide" (Texas Instruments).

図4は、メモリ210と220を有する図3のプロセッサ31
1と321の如き2個の異なるプロセッサにロードされる一
連のソフトウエア案を示したものである。この解説はス
タック群を使用することを対象としているが、本発明の
他の実施例では、Iスタック以外の構造を使用すること
もできよう。その本質的な特徴は、メモリの一エリアが
両方のプロセッサ311と321とにとって同一に見える点で
ある。上記構造はまた、一つの共用メモリとすることも
可能であろう。メモリとメモリ内容の共用性によって、
ファンクションコールが両プロセッサ311と321により容
易に更新しあえ、了解可能となる。
FIG. 4 shows the processor 31 of FIG.
FIG. 4 shows a series of software plans loaded on two different processors, such as 1 and 321. FIG. Although this discussion is directed to using stacks, other embodiments of the present invention could use structures other than the I-stack. Its essential feature is that an area of memory looks identical to both processors 311 and 321. The above structure could also be a single shared memory. Due to the commonality of memory and memory contents,
The function call can be easily updated by both processors 311 and 321 and can be understood.

全体として、図4は、第1のプロセッサシステム310
にロードされアプリケーションインターフェースライブ
ラリ217とリンクされる、実行可能なコード形式214のア
プリケーションプログラムを示す。ホストシステム310
は同時に通信ドライバ211と1スタック414を備えてい
る。拡張関数定義226は、グラフィックシステム320のメ
モリ220内にロードされ、コマンド実行ルーチン221によ
ってアクセスされる。また、グラフィックシステム320
は1スタック423を備えている。図3について説明した
ように、通信バッファ323は、データをプロセッサどう
しの間でパスしあうためのスペースを備えている。引数
ハンドラ441aと441bとは、拡張関数のパケット形に関連
して使用される。
In general, FIG.
Shows an application program in an executable code format 214 that is loaded into the application program and linked with the application interface library 217. Host system 310
Has a communication driver 211 and a stack 414 at the same time. The extended function definition 226 is loaded into the memory 220 of the graphic system 320 and accessed by the command execution routine 221. The graphic system 320
Has one stack 423. As described with respect to FIG. 3, the communication buffer 323 provides space for passing data between processors. The argument handlers 441a and 441b are used in connection with the packet form of the extension function.

本発明のホストグラフィックインターフェースは、ア
プリケーションインターフェース417と、通信ドライバ2
11と、コマンド実行ルーチン221と、拡張関数をインス
トールするために使用されるコア原始関数の5つの基本
的部分から構成される。もし関数定義のパケット形が使
用される場合には、インターフェースの第5番目のコン
ポーネントが441aと441bとして示すような引数ハンドラ
となる。
The host graphic interface of the present invention includes an application interface 417 and a communication driver 2
11; a command execution routine 221; and five basic parts of a core primitive function used to install an extension function. If a function-defined packet form is used, the fifth component of the interface will be an argument handler as shown as 441a and 441b.

アプリケーションインターフェース217は、ヘッダフ
ァイルとアプリケーションインターフェースライブラリ
より成る。ヘッダファイルは、コアと拡張関数の定義22
3、226を参照する。それらは同時に、コアと拡張ファン
クションの呼出しを適当な入口点呼出しにマッピングし
なおす。これらの入口点呼出しは、ステップ12に関して
上記したように、関数にパスされるパラメータ型に応じ
て、ダイレクト又はパケット型のものとすることができ
る。
The application interface 217 includes a header file and an application interface library. The header file defines the core and extension functions.
See 3,226. They also remap core and extension function calls to appropriate entry point calls at the same time. These entry point calls may be of the direct or packet type, depending on the parameter type passed to the function, as described above with respect to step 12.

アプリケーションインターフェースライブラリは、ア
プリケーションオブジェクトファイルとリンクされて、
実行可能なアプリケーションファイルを形成する。上記
アプリケーションインターフェースライブラリは、アプ
リケーションプログラム用の手段を提供して、情報を通
信ドライバ211間でパスさせる。アプリケーションによ
り行われる最初のファンクションコールは、初期化作用
である。この作用によって既にメモリ内に常駐している
通信ドライバ211に対してその入口点ジャンプテーブル
の出発点メモリをパスすることが知らされる。このテー
ブルは、通信ドライバ211により提供される各通信入口
点のアドレスのリストである。一たんアプリケーション
インターフェース217がジャンプテーブルのアクセスを
知るや、アプリケーションにより呼出された適当な入口
点関数へジャンプすることが可能になる。
The application interface library is linked with the application object file,
Form an executable application file. The application interface library provides a means for application programs to pass information between communication drivers 211. The first function call made by the application is an initialization action. This action informs the communication driver 211 already resident in the memory that it will pass through the entry point memory of the entry point jump table. This table is a list of addresses of each communication entry point provided by the communication driver 211. Once the application interface 217 knows about the jump table access, it can jump to the appropriate entry point function called by the application.

通信ドライバ211は、アプリケーションプログラム212
からデータを受取り、それを通信バッファ323へ送る。
同バッファ323はグラフィックシステム320へアクセス可
能である。通信ドライバ211は、ホストシステム310上を
ランする終端・ステー常駐(TSR)プログラムであるこ
とが望ましいが、TSRコンフィギュレーションは必ずし
も必要な特徴ではない。通信ドライバ211は、グラフィ
ックシステム310のハードウエアに特有のものである
が、インターフェースをポータブルにすることによって
異なるハードウエア向けに変形することもできる。
The communication driver 211 is the application program 212
And sends it to the communication buffer 323.
The buffer 323 can access the graphic system 320. The communication driver 211 is preferably a terminal and stay resident (TSR) program that runs on the host system 310, but the TSR configuration is not a necessary feature. The communication driver 211 is specific to the hardware of the graphics system 310, but can be modified for different hardware by making the interface portable.

通信ドライバ211の特性は、それが幾つかのコマンド
系列を待ち行列状態にする能力を備え、非割当バッファ
リングシステムを可能にするという点である。通信ドラ
イバ211により使用される通信バッファ323の基本形は、
図5に示す。基本エリアはコマンドバッファ510とデー
タバッファ520であり、通信ドライバ211により実行され
るハンドシェイクルーチンと共に使用される。ホストと
グラフィックハードウエア間を交信するために使用され
る定義済みメッセージは以下の通りである。
A characteristic of the communication driver 211 is that it has the ability to queue some command sequences, enabling an unallocated buffering system. The basic form of the communication buffer 323 used by the communication driver 211 is
As shown in FIG. The basic areas are a command buffer 510 and a data buffer 520, which are used together with a handshake routine executed by the communication driver 211. The predefined messages used to communicate between the host and the graphics hardware are as follows:

GSP_ホスト間の通信メッセージ GSP_IDLE −0;GSPはコマンドを待機中。GSP_Host communication message GSP_IDLE −0; GSP is waiting for a command.

GSP_BUSY =1;GSPはコマンドを実行中。 GSP_BUSY = 1; GSP is executing a command.

GSP_FINISHED=2;GSPはコマンドを完了した。 GSP_FINISHED = 2; GSP has completed the command.

GSP_UNINIT =3;GSPは初期化されていない。 GSP_UNINIT = 3; GSP has not been initialized.

GSP_ホスト間の通信メッセージ HST_LDLE=0;ホストはGSPを待機中。Communication message between GSP_host HST_LDLE = 0; host is waiting for GSP.

HST_CMD =1;ホストはセットアップコマンドレディ状
態。
HST_CMD = 1; host is ready for setup command.

HST_INIT=3;ホストはGSPの初期化を期待中。 HST_INIT = 3; Host is expecting GSP initialization.

上記_INITコマンドはドライバ初期中に使用される。 The _INIT command is used during the initial stage of the driver.

再び図5について述べると、メッセージフィールドを
使用してコマンドを次の如く処理する。
Referring again to FIG. 5, the command is processed as follows using the message field.

(1)ホストは呼出し中の関数のパラメータをデータバ
ッファ内に配置する。それと同時にこの関数のコマンド
識別子をコマンド識別フィールド内へ書込む。この識別
子はダイレクト法又はパケット法の何れかと、呼出し中
の関数を含むDLMに対応するモジュール番号と、DLM内の
適当な関数を識別する関数番号とを用いて実行中の入口
点呼出しの型を指定する。その後、このホストはHST_CM
Dメッセージをメッセージフィールド内にセットする。
(1) The host places the parameters of the function being called in the data buffer. At the same time, the command identifier of this function is written into the command identification field. This identifier identifies the type of entry point call being performed using either the direct method or the packet method, the module number corresponding to the DLM containing the function being called, and the function number identifying the appropriate function in the DLM. specify. After that, this host is HST_CM
Set the D message in the message field.

(2)GSPはGSP_BUSYをGSPメッセージフィールド内にセ
ットしてコマンドを実行する。
(2) The GSP sets GSP_BUSY in the GSP message field and executes the command.

(3)GSPはホストメッセージフィールド内のCOMMAND_P
ENDINGをクリアして、GSPメッセージフィールドフィー
ルド内にGSP_FINISHEDメッセージをセットする。
(3) GSP is COMMAND_P in the host message field.
Clear ENDING and set the GSP_FINISHED message in the GSP message field field.

(4)ホストはGSP_FINISHEDメッセージをチェックし
て、それをクリアした後、なんらかの復帰パラメータを
読み取るか、バッファを再使用する。
(4) The host checks the GSP_FINISHED message, clears it, and then reads some return parameters or reuses the buffer.

ハンドシェイクは2ワードを使用して行われる。その
うち1ワードはホストからのメッセージに対してのもの
で、もう一つはGSPからのメッセージに対するものであ
る。ホストはGSPからのメッセージをクリア働きを行
い、GSPはホストメッセージをクリアする。このことに
よって「メッセージ肯定応答」や「肯定応答確認」のタ
イプのメッセージをやりとりする必要なく完全なハッド
シェイクが確認できる。メモリが使用されるため、シス
テムは一時に活動可能なコマンド待ち行列の数に限定さ
れない。
The handshake is performed using two words. One word is for messages from the host and the other is for messages from the GSP. The host clears the message from the GSP, and the GSP clears the host message. This allows a complete hadshake to be confirmed without having to exchange messages of the type "message acknowledgment" or "acknowledgement". Because memory is used, the system is not limited to the number of command queues that can be active at one time.

再び、図4について述べると、コマンド実行ルーチン
221は全体としてホストシステム310からデータを受取り
グラフィックプロセッサ321に対してグラフィック処理
を実行するように命ずるソフトウエアプログラムであ
る。普通の場合、コマンド実行ルーチン221はメモリ220
のRAM内に常駐し、パワーアップ後にロードされるが、
このことは必要条件ではない。通信ドライバ211と同様
に、コマンド実行ルーチン221は、インターフェースが
異なるハードウエアシステムとポート接続できるように
修飾することが可能である。
Referring again to FIG. 4, the command execution routine
A software program 221 receives data from the host system 310 as a whole and instructs the graphic processor 321 to execute graphic processing. Normally, the command execution routine 221 is stored in the memory 220
Resident in RAM and loaded after power up,
This is not a requirement. Like the communication driver 211, the command execution routine 221 can be modified so that the interface can be port-connected to different hardware systems.

コマンド実行ルーチン221は通信ドライバ211に対する
スレープとしてグラフィックシステム310上でランし、
ホストGSPハシドシェイキングのGSP側を処理し、ホスト
により送られるコマンドを受取り、それらがパケット法
コマンドであるかダイレクト法コマンドであるかを判断
し、それによって呼出された関数を呼出す。ダイレクト
モードコマンドの場合、コマンド実行ルーチン221は、
関数に対するパラメータデータの大域的ポインタをセッ
トアップして、関数を呼出す。パケットコマンドの場
合、コマンド実行ルーチン221は、引数ハンドラ441bを
呼出す。同ハンドラ441bはダイレクト法と同一の大域的
データポインタを使用して上記説明したようにデータを
配列しなおす。コア原始関数とアセンブリ言語関数は同
一の方法で呼出すことができる。
The command execution routine 221 runs on the graphics system 310 as a slave to the communication driver 211,
The GSP side of the host GSP hasidic shaking is processed to receive commands sent by the host, determine whether they are packet or direct commands, and invoke the called function accordingly. In the case of the direct mode command, the command execution routine 221
Set up a global pointer to the parameter data for the function and call the function. In the case of a packet command, the command execution routine 221 calls the argument handler 441b. The handler 441b rearranges the data as described above using the same global data pointer as the direct method. Core primitive functions and assembly language functions can be called in the same way.

引数ハンドラ441aと441b内に含まれる引数ハンドラプ
ログラムは特殊な引数をパスするプログラムで、引数を
ホストシステム310のスタック414から除去してそれらを
グラフィックシステム320へパスし、それらがパスされ
た後にそれらをアセンブリしなおすことによって高水準
言語のフォーマットでグラフィックシステム320のスタ
ック423へブッシュできるようにするランタイムタスク
を実行する。図4の実施例では、引数ハンドラは、シス
テム310と320上に常駐し、単方向通信用に設計される。
然しながら、引数ハンドラどうしを対称形にすることに
よって2方向パラメータ交換を可能にすることもできる
ことを理解すべきである。その後、各々の引数ハンドラ
は、パケットを再構成してスタックにプッシュすること
と、それらをスタックから解析することの両方を実行す
ることができよう。更に、統合型マルチプロセッサシス
テムの場合、システム内の全プロセッサについて一個の
引数ハンドラが存在するようにすることもできよう。か
くして、図4では、引数ハンドラ441aは通信ドライバ21
1にリンクされ、スタック414と交信する。引数ハンドラ
441bはコマンド実行ルーチン221にリンクされ、スタッ
ク423と連絡する。
The argument handler programs included in the argument handlers 441a and 441b are programs that pass special arguments, remove the arguments from the stack 414 of the host system 310, pass them to the graphics system 320, and pass them to the graphics system 320 after they are passed. Performs a runtime task that allows the bus to be rebuilt into the stack 423 of the graphics system 320 in a high-level language format. In the embodiment of FIG. 4, the argument handler resides on systems 310 and 320 and is designed for one-way communication.
However, it should be understood that bi-directional parameter exchange may be possible by making the argument handlers symmetrical. Each argument handler could then perform both reassembling and pushing packets onto the stack and parsing them from the stack. Further, in the case of an integrated multiprocessor system, there could be one argument handler for all processors in the system. Thus, in FIG. 4, the argument handler 441a
Linked to 1 and communicates with stack 414. Argument handler
441b is linked to command execution routine 221 and communicates with stack 423.

プログラミングの利便性上、インターフェースは一定
のインクルードファイルを備えることによって反復定義
を回避するようにすることも可能である。これらのイン
クルードファイルは次の2つのグループに分割できる。
即ち、(1)ホストシステム310上でランするように設
計されたソースファイル内に包含されるファイルと、
(2)グラフィックシステム320上でランするソースフ
ァイル内に包含されるファイル、である。第1のグルー
プのインクルードファイルは、アプリケーションインタ
ーフェース412の一部であり、第2のグループは、参照
番号225を有する図2のグラフィックシステム320を構築
するために使用される。ホストシステム310のインクル
ードファイルは以下の通りである。
For programming convenience, the interface can be provided with certain include files to avoid repetitive definitions. These include files can be divided into two groups:
(1) files included in a source file designed to run on the host system 310;
(2) A file included in a source file that runs on the graphic system 320. The first group of include files is part of the application interface 412 and the second group is used to build the graphics system 320 of FIG. The include files of the host system 310 are as follows.

extend.h 拡張原始関数を呼出す。 extend.h Calls an extension primitive function.

graphics.b パケット法の場合に使用されるデータ型
を定義する。
graphics.b Defines the data type used for the packet method.

typedefs.h インターフェースに関して使用される構
造定義用。
typedefs.h For structure definitions used for interfaces.

グラフィックシステム320用のインクルードファイル2
25は以下の通りである。
Include file 2 for graphics system 320
25 is as follows.

gspextend.h 拡張原始関数の外部宣言 gspglobals.h 大域的変数全ての外部宣言 gspregs.h グラフィックシステムレジスタの定
義 gspgraphics.h コア原始関数全ての外部宣言 通信ドライバ211とコマンド実行ルーチン221に関して
先に示した如く、本発明の特徴は、それがハードウエア
依存性であるということである。この特徴は、一部はコ
ア原始関数224の一部であるインクワイアリ関数により
実現され、通信ドライバ211やコマンド実行ルーチン221
の修飾を要しない。上記インクワイアリ関数によって、
アプリケーションプログラムはグラフィックシステム32
0の構成を求める。インクワイアリ関数に応答して、グ
ラフィックシステム320は、ビット表現によるピクセル
深度や、水平方向と垂直方向の解像度や、グラフィック
システム上のランダムアクセスメモリ量等の情報を復帰
させる。その後、アプリケーションプログラムはその出
力をスケーリングして任意のディスプレイ解像度にフィ
ットさせることができる。
gspextend.h External declaration of extended primitive functions gspglobals.h External declaration of all global variables gspregs.h Definition of graphic system registers gspgraphics.h External declaration of all core primitive functions The communication driver 211 and command execution routine 221 are shown above As such, a feature of the present invention is that it is hardware dependent. This feature is partially realized by the inquiry function which is a part of the core primitive function 224, and the communication driver 211 and the command execution routine 221
Does not require qualification. By the above inquiry function,
Application program is graphic system 32
Find the configuration of 0. In response to the inquiry function, the graphics system 320 returns information such as pixel depth in bit representation, horizontal and vertical resolutions, and the amount of random access memory on the graphics system. The application program can then scale its output to fit any display resolution.

表Aは2個の関数、get_configとset_configを使用し
てこのハードウエア依存特徴の一実施例である。関数ge
t_configは、グラフィックシステム320とモードに特有
の情報を全て含む構造変数を復帰させる。set_config関
数は、デフォルトグラフィックモードにパスされるイン
デクスにより選択されるグラフィックモードをセットす
る。その場合、グラフィックシステム320は次のset_con
figに対する呼出しが行われるまで残留する。set_confi
gについて、もしgraphics_mode引数が妥当であるなら
ば、関数は新たなグラフィックモードをセットアップ
し、適当なGSPレジスタを初期化する。もしinit_drawプ
ラグが真であれば、関数は作図環境を初期化する。
Table A is an example of this hardware dependent feature using two functions, get_config and set_config. Function ge
t_config returns a structural variable containing all information specific to the graphics system 320 and mode. The set_config function sets the graphics mode selected by the index passed to the default graphics mode. In that case, the graphics system 320 sets the next set_con
Remains until a call to fig is made. set_confi
For g, if the graphics_mode argument is valid, the function sets up a new graphics mode and initializes the appropriate GSP registers. If the init_draw plug is true, the function initializes the drawing environment.

「コア原始関数」は、サブプロセッサシステム中に永
久的にインストールされ常時ロード用に利用可能な基本
的関数である。これらのコア原始関数は、システム原始
関数とアプリケーション原始関数との2つの基本的関数
型へグループ分けできる。システム原始関数は、サブシ
ステム初期化、出力、メモリ管理、通信、および拡張の
如き処理を実行する関数を含んでいる。後者のタイプの
システム原始関数である拡張関数は、本発明の方法と関
連して使用され、以下により詳細に論ずることにする。
アプリケーション原始関数は、もしそれが本発明を使用
してリンクされた場合、ホスト上を走るアプリケーショ
ンプログラムから呼出されて利用される。
A "core primitive function" is a basic function that is permanently installed in a sub-processor system and is always available for loading. These core primitive functions can be grouped into two basic function types: system primitive functions and application primitive functions. System primitive functions include functions that perform processes such as subsystem initialization, output, memory management, communication, and expansion. Extension functions, which are the latter type of system primitive, are used in connection with the method of the present invention and will be discussed in more detail below.
An application primitive is called and used by an application program running on a host if it is linked using the present invention.

本発明の以下の説明は、第一義的にはCプログラミン
グ言語を対象としたものであるが、本発明を実施するた
めのプログラミングは、C言語に固有のものではなく、
本文中に解説したプログラミング構造と関数は任意の高
水準言語へ容易に翻訳することができる。本発明を実施
するために必要な実際の言語とプログラムは、本発明が
実施される特定のシステムに依存する。その特定のプロ
グラムは、本発明を検討した後に当該技術分野における
通常の技能を有するプログラマの能力の範囲内にあると
考えられる。
Although the following description of the present invention is primarily directed to the C programming language, the programming for practicing the present invention is not specific to the C language,
The programming structures and functions described in the text can be easily translated into any high-level language. The actual languages and programs required to implement the invention will depend on the particular system on which the invention is implemented. That particular program is considered to be within the capabilities of a programmer of ordinary skill in the art after reviewing the present invention.

本発明の前提は、サブプロセッサシステムはそれがそ
のコア原始関数とは独立にロード、リンク、ならびに使
用可能な拡張関数を備えた場合に最もよく活用できると
いうことである。この前提に従って、本発明は、他のマ
ルチプロセッサシステムのプログラミング有する拡張関
数を組込む方法を提供することができる。上記方法は、
何時また何処で関数がコーディングされたかに関わりな
く、一つのアプリケーションプログラムに使用される種
々の関数をダイナミックにリンクするソフトウエアアメ
リカニズムを実装することができる。
The premise of the present invention is that a sub-processor system can be best utilized if it has load, link, and available extension functions independent of its core primitive functions. In accordance with this premise, the present invention can provide a method for incorporating extension functions with programming of other multiprocessor systems. The above method
Regardless of when and where the functions are coded, software americanism can be implemented that dynamically links the various functions used in an application program.

図6は、サブシステムプロセッサ用の拡張関数を開発
したいと欲しているプログラマの見地から本発明の方法
を図解したものである。これら拡張関数は、最終的にア
プリケーションプログラム内で呼出されてユーザに対し
て一定のタスクを実行する関数群より構成される。基本
的に、そのステップは一組の拡張関数と、各関数に対す
るアドレス参照セクションをつくりだす。拡張関数をセ
クション参照とリンクすることによって一つのロードモ
ジュールがつくりだされ、同モジュールは、一部、現存
のコードにリンクされ、参照をランタイムに解決される
他のコードに任せることが可能になる。
FIG. 6 illustrates the method of the present invention from the perspective of a programmer wanting to develop an extension function for a subsystem processor. These extension functions are constituted by a group of functions that are finally called in the application program and execute a certain task for the user. Basically, the steps create a set of extension functions and an address reference section for each function. Linking an extension function with a section reference creates a load module that can be partially linked to existing code, leaving the reference to other code that will be resolved at runtime. .

本発明のリンクとロードのステップに関して、以下の
記述はこれらのタスクを実行するソフトウエアプログラ
ミングに共通な処理と構造に関するものである。殊に、
リンカは当該技術分野では周知のフォーマットである共
通のオブジェクトファイルフォーマットでオブジェクト
ファイルをつくりだすものと想定される。このフォーマ
ットは各モジュールがセクションと称される小さなコー
ドとデータのブロックを有するモジュラープログラミン
グヲ有利にするものである。1セクションは1オブジェ
クトファイルの最も小さな再配置可能な単位であって、
最終的に、それがロードされるメモリ内に隣接する空間
を占めることになろう。COFFフォーマットによれば、拡
張関数を数多くの高水準言語のうちの一つ、又はアセン
ブラ言語で書くことができる。然しながら、COFFは、再
配置可能な、一部リンクされた関数モジュールをつくり
だすために十分なオブジェクトフォーマットのただ一つ
の形にすぎないことを理解すべきである。
With respect to the link and load steps of the present invention, the following description relates to processes and structures common to software programming that perform these tasks. In particular,
It is envisioned that the linker creates object files in a common object file format, a format well known in the art. This format favors modular programming, where each module has small blocks of code and data called sections. One section is the smallest relocatable unit of one object file,
Eventually, it will occupy adjacent space in the memory where it is loaded. The COFF format allows extension functions to be written in one of a number of high-level languages, or in assembler language. However, it should be understood that COFF is only one form of object format sufficient to create relocatable, partially linked function modules.

ステップ111では、拡張関数を含むプログラムコード
のモジュールがつくりだされる。通常の場合、この関数
の集合は、如何なる関数が必要となっても特定アプリケ
ーションプログラムの指定タスクを実行することになろ
う。ステップ111では拡張関数がコーディングされる
が、それは拡張関数がホスト上を走るアプリケーション
プログラムから呼出されサブプロセッサによって実行可
能なものであればどんな形でも実行することが可能であ
る。かかる一連の方法は、関数定義によって関数の実パ
ラメータがホストからサブプロセッサへパスされ何れの
戻り値もホストに復帰できるということを第一次的な要
求条件として活用することができよう。
In step 111, a module of the program code including the extension function is created. Usually, this set of functions will perform the specified task of the particular application program, whatever the function is needed. In step 111, the extension function is coded, which can be executed in any manner that the extension function is called from an application program running on the host and can be executed by the sub-processor. Such a series of methods could utilize as a primary requirement that the actual parameters of the function are passed from the host to the sub-processor by the function definition and any return value can be returned to the host.

マルチプロセッサシステムに拡張関数を加えるこのよ
うな方法の例は、米国特許第5,216,095号に記述された
パケット法と、米国特許第5,404,519号に記述されたダ
イレクト法である。
Examples of such methods for adding extension functions to a multiprocessor system are the packet method described in US Pat. No. 5,216,095 and the direct method described in US Pat. No. 5,404,519.

関数が定義された後、それらは集められ、コンパイル
又はアセンブルされて一連の共通のオブジェクトファイ
ルの如き一定形のロード可能なコードにリンクされる。
ステップ111の結果の例を一つあげると、myfuncs.objと
称されるファイルであって、my_func1とmy_func2の2つ
の関数を含む。
After the functions are defined, they are collected, compiled or assembled and linked into a form of loadable code, such as a series of common object files.
One example of the result of step 111 is a file called myfuncs.obj, which contains two functions, my_func1 and my_func2.

本発明の利点は、拡張関数のモジュールが、それらを
使用するアプリケーションプログラムをつくりだす同じ
プログラマによってつくりだすことができる点である。
そのため、特定の1アプリケーションの実行中にロード
されて使用されるべきモジュールはそのアプリケーショ
ンにより必要とされる関数を含むだけで足りる。更に、
その関数を呼出しそれをパラメータ化する方法は、プロ
セッサどうしの間でのパラメータのパスに執拗とされる
何れかの特殊技法に従ってプログラマが選択することが
できる。
An advantage of the present invention is that the modules of the extension functions can be created by the same programmer who creates the application programs that use them.
Thus, a module to be loaded and used during the execution of a particular application need only include the functions required by that application. Furthermore,
The method of calling the function and parameterizing it can be selected by the programmer according to any special technique that is reliant on the path of parameters between processors.

ステップ112では参照セクションがつくりだされ、ス
テップ111でつくりだされるモジュール内のそれぞれの
拡張関数についてアドレス参照が宣言される。ステップ
112の一例は次のプログラミングで、my−func1とmy−fu
nc2の2個の関数を参照する。
In step 112, a reference section is created, and an address reference is declared for each extension function in the module created in step 111. Steps
An example of 112 is the following programming, where my-func1 and my-fu
Refers to two functions of nc2.

外部参照 コマンド数は特定命令中で定義されるべきロードモジ
ュール内の関数を宣言する。これは関数を参照する手段
を提供する。殊に、一つの関数のコマンド番号はその関
数を呼出すアプリケーションプログラム内のファンクシ
ョンコール内に組込むことができる。参照セクション
は、コンバイル又はアセンブルされて、例えば、ext.ob
j.の如き共通のオブジェクトフォーマットファイルが生
成される。
External reference The number of commands declares a function in the load module to be defined in a specific instruction. This provides a means to refer to the function. In particular, the command number of a function can be embedded in a function call in an application program that calls that function. The reference section is assembled or assembled, for example, ext.ob
A common object format file such as j. is generated.

ステップ113では、ステップ111でつくりだされたモジ
ュールを、ステップ112でつくりだされたセクションが
一部リンクされて一つのロードモジュールが形成され
る。このモジュールは、モジュール内に参照値を有する
関数を含んでいてもよい。このリンクステップはモジュ
ール内のこのような関数間の参照値を解決する。このモ
ジュールはまた、モジュール外部の関数を参照する又は
同関数によって参照される関数を含むことができる。も
しこのような外部参照が存在すれば、そのリンキングは
部分的にしかすぎず、これらの外部参照は未解決である
ことになる。一部リンクされたファイルは配置替え情報
と記号情報を備えていなければならない。一部リンキン
グは出力セクションの形成に関係し、配分には関係しな
い。割当て、束縛、メモリ指令は全て次のリンクでのラ
ンタイム時に実行される。
In step 113, the module created in step 111 and the section created in step 112 are partially linked to form one load module. This module may include a function that has a reference value in the module. This link step resolves reference values between such functions in the module. The module may also include functions that reference or are referenced by functions outside the module. If such external references exist, their linking is only partial and these external references will be unresolved. Partially linked files must have relocation and symbol information. Some linking concerns the formation of the output section, not the distribution. Allocation, binding, and memory directives are all performed at runtime on the next link.

一部リンキングの例は、モジュールがコア原始関数を
呼出す関数を有する場合である。未解決の参照は、サブ
プロセッサシステム内に既にストアされているモジュー
ルの外部にあり、参照関数はそれに対するアドレスを有
しない。ステップ113で使用されるリンカの本質的特徴
は、それがランタイムまで解決不可能な呼出しを関数に
対して持たせることができるという点である。図2、図
3、図4に関して以下に説明するように、関数がサブプ
ロセッサシステムのメモリ内にロードされる時は、これ
らの呼出しは解決される。ダイナミックリンカはアドレ
スをコード内にインサートすることによって呼出しを解
決する。
An example of partial linking is when a module has a function that calls a core primitive function. An unresolved reference is outside of a module already stored in the sub-processor system, and the reference function does not have an address for it. An essential feature of the linker used in step 113 is that it can have calls to functions that cannot be resolved until runtime. These calls are resolved when the function is loaded into the memory of the sub-processor system, as described below with respect to FIGS. 2, 3, and 4. The dynamic linker resolves calls by inserting addresses into the code.

以下は、リンカを一固有するコンピュータを使用して
ステップ113を実行するためのコマンドの一例である。
その場合、ステップ111中で定義された2つの関数と、
ステップ112でつくりだされたセクションとがリンクさ
れることになっている。一例として、リンカは以下のコ
マンドで呼出される。
The following is an example of a command for executing step 113 using a computer that is unique to the linker.
In that case, the two functions defined in step 111,
The section created in step 112 is to be linked. As an example, the linker is invoked with the following command:

Iink LOAD MOD myfuns.obj ext.obj その結果はLOAD.MODと題する再配置可能なロードモジ
ュールで、ステップ111と112でつくりだされたオブジェ
クトモジュールの組合せである。
Iink LOAD MOD myfuns.obj ext.obj The result is a relocatable load module entitled LOAD.MOD, which is a combination of the object modules created in steps 111 and 112.

その後、ロードモジュールは一連の相異なる方法で使
用できる。それが本発明の利点の一つである。例えば、
モジュールは他のモジュールへ供給され、モジュールを
メインプログラムにリンクしたりサブシステムにロード
してコア原始関数とリンクさせることができる。その代
わり、同じユーザはロードモジュールを使用して、マル
チプロセッサシステム用のアプリケーションプログラム
を開発することができる。かくして、図4に示すよう
に、次のステップは114aとなり、モジュールをサブシス
テムにロードしたり、あるいはステップ114bとなってモ
ジュールをアプリケーションプログラムへリンクさせた
りすることができる。エンドユーザの観点からすると、
ロードモジュールは一部リンクされた状態でユーザのホ
ストシステムメモリ内に常駐し、最終的にサブプロセッ
サシステムへダウンロードされ、図2に関して以下に説
明するように、特定のアプリケーションプログラムと共
に使用することができる。
Thereafter, the load module can be used in a series of different ways. That is one of the advantages of the present invention. For example,
Modules are supplied to other modules, and modules can be linked into the main program or loaded into subsystems and linked with core primitive functions. Instead, the same user can use the load module to develop an application program for a multiprocessor system. Thus, as shown in FIG. 4, the next step is 114a, where the module can be loaded into the subsystem or step 114b can be linked to the application program. From an end-user perspective,
The load module resides, partially linked, in the user's host system memory and is ultimately downloaded to the sub-processor system and can be used with a particular application program, as described below with respect to FIG. .

図2、3、および7は、本発明の第2の面であるコン
ピュータを使用してマルチプロセッサシステム内に拡張
関数をロードしダイナミックにリンクする方法を示した
ものである。上記リンキングは拡張関数がつくりだされ
る時に拡張関数が呼出すその他の関数のアドレスが未知
であるという意味でダイナミックである。これらのアド
レスは、アプリケーションプログラムが走るまで未知の
状態にある。
FIGS. 2, 3, and 7 illustrate a second aspect of the present invention, a method of using a computer to load and dynamically link extension functions in a multiprocessor system. The above linking is dynamic in the sense that the addresses of other functions called by the extension function when the extension function is created are unknown. These addresses are in an unknown state until the application program runs.

本発明のダイナミックダウンロード法のステップは、
図7に示す。一般的にいって、上記方法は、ホストプロ
セッサシステム310をサブプロセッサシステム320へ一組
の拡張関数をロードし、この時未解決な拡張関数の参照
をリンクするステップより構成される。
The steps of the dynamic download method of the present invention include:
As shown in FIG. In general, the method comprises loading the host processor system 310 into the sub-processor system 320 with a set of extension functions, and then linking references to the unresolved extension functions.

まず、ステップ141−143では、ダイナミックリンカ22
4はそれが必要とする2個のファイル、即ち、記号テー
ブルファイル225と、先にリンクされたオブジェクトフ
ァイル216のように現在メモリ210内にストアされたロー
ドモジュール215とが存在することをチェックする。記
号テーブルファイル225は、コア原始関数222内の記号テ
ーブル関数によって維持され、サブプロセッサシステム
320のメモリ220に既にロードされた関数と、それぞれの
関数について関連するメモリアドレスを表現する記号情
報を格納する。かくして、もし先につくりだされたロー
ドモジュールが使用される場合には、それらはロードさ
れ、それらの記号とアドレスは記号テーブルファイル22
5内に配置される必要がある。かくして、本発明の方法
を実行するに先立ち、記号テーブルファイル225は、ロ
ードモジュール215外部の関数を表わす。即ち、それら
はロードモジュール215内で定義されない。このタスク
を実行する記号テーブル関数の例は次のC言語関数であ
る。
First, in steps 141-143, the dynamic linker 22
4 checks that there are two files it needs: a symbol table file 225 and a load module 215 currently stored in memory 210, such as an object file 216 linked earlier. . The symbol table file 225 is maintained by the symbol table function in the core primitive
It stores the functions already loaded in the memory 220 of 320 and the symbolic information representing the memory addresses associated with each function. Thus, if previously created load modules are used, they are loaded and their symbols and addresses are stored in the symbol table file 22.
Need to be placed within 5. Thus, prior to performing the method of the present invention, symbol table file 225 represents functions external to load module 215. That is, they are not defined in the load module 215. An example of a symbol table function that performs this task is the following C language function:

int create_symhol_file(name) char farname; 但し、nameは関数を含むファイルの通路名である。記
号とそれらの各々の絶対アドレスは、それらが続くロー
ダの呼出し中にアクセスできるような具合にストアされ
る。
int create_symhol_file (name) char far * name; where name is the path name of the file containing the function. The symbols and their respective absolute addresses are stored in such a way that they can be accessed during subsequent calls to the loader.

記号テーブルファイル225のインテグリティを確保す
るために、ダイナミックリンカ224は、コマンド実行ル
ーチン221に対して制限呼出しを実行し、上記ルーチン2
21は特殊でコアシステム原始関数を使用してサブプロセ
ッサシステムメモリ220内にインストールされたモジュ
ールの状態について問合わせる。このステップの目的
は、かかるモジュールと記号テーブルファイル225内の
モジュール記号との間の乖離が存在するかどうかを判断
することである。もし存在すれば、記号テーブルファイ
ル225は、それに従って調節される。もし存在しなけれ
ば、エラーメッセージがユーザに対して伝達される。
In order to ensure the integrity of the symbol table file 225, the dynamic linker 224 executes a restricted call to the command execution routine 221 and executes the routine 2
21 queries the status of the modules installed in the sub-processor system memory 220 using a special core system primitive function. The purpose of this step is to determine if there is a divergence between such a module and the module symbol in the symbol table file 225. If present, the symbol table file 225 is adjusted accordingly. If not, an error message is communicated to the user.

ステップ144では、ダイナミックリンカ224は、所望の
ロードモジュールオブジェクトファイル216に対して必
要とされるメモリサイズを取得する。上記リンカはコア
システム原始関数から特殊な割当て関数を呼出してロー
ドモジュールを格納するに十分な大きなメモリブロック
を取得する。かかる割当て関数を表うわすコマンドの例
は以下の通りである。
In step 144, the dynamic linker 224 obtains the required memory size for the desired load module object file 216. The linker calls a special allocation function from the core system primitive function to obtain a large memory block large enough to store the load module. An example of a command expressing such an assignment function is as follows.

long alloc(size) long size: 但しlong sizeとはバイト表現によるモジュールの大
きさである。この関数は指定サイズのサブプロセッサシ
ステムメモリ220のブロックを割当て、ポインタを復帰
させる。
long alloc (size) long size: where long size is the size of the module in bytes. This function allocates a block of sub-processor system memory 220 of the specified size and returns the pointer.

ステップ145−146において、ダイナミックリンカ224
は、サブプロセッサシステム320により実行されるオブ
ジェクトファイルを実行可能なイメージファイル226内
へ結合するというその第一次的な任務を実行する。ダイ
ナミックリンカ224が実行可能ファイル226をつくりだす
と、オブジェクトファイル216をメモリ220へロードし、
外部参照を解決する。そうする際、上記リンカは、アプ
リケーション原始ファイル223と共にロードファイル216
を入力として受取る。殊に、ダイナミックリンカ224は
所望のCOFFセクションをサブシステムのメモリマップ内
へ再配置する。先に未解決の外部関数即ち、ロードモジ
ュール215内で定義されなかった関数に対する参照を解
決するために、ダイナミックリンカ224は記号テーブル
ファイル225を参照してその関数を表わす記号を発見す
る。その後、ダイナミックリンカ224はロードモジュー
ル216内の参照を参照された関数のアドレスと置換す
る。このようにして、ダイナミックリンカ224は、ロー
ドモジュール216の参照セクション内にリストされた全
ての拡張関数をサブプロセッサシステム320内にロード
されたその他のコードにリンクする。同様にして、ダイ
ナミックリンカ224はロードモジュール216内で定義され
た関数を表わす記号を記号テーブルファイル225へ付加
することによって、続いてインストールされたロードモ
ジュールがロードモジュール216へアクセスできるよう
になっている。
In steps 145-146, the dynamic linker 224
Performs its primary task of combining the object files executed by sub-processor system 320 into executable image file 226. When the dynamic linker 224 creates the executable file 226, it loads the object file 216 into the memory 220,
Resolve external references. In doing so, the linker loads the load file 216 along with the application source file 223.
As input. In particular, the dynamic linker 224 relocates the desired COFF section into the subsystem memory map. To resolve references to previously unresolved external functions, ie, functions not defined in the load module 215, the dynamic linker 224 refers to the symbol table file 225 to find a symbol representing the function. Thereafter, the dynamic linker 224 replaces the reference in the load module 216 with the address of the referenced function. In this manner, the dynamic linker 224 links all extension functions listed in the reference section of the load module 216 with other code loaded in the sub-processor system 320. Similarly, the dynamic linker 224 adds symbols representing the functions defined in the load module 216 to the symbol table file 225 so that subsequently installed load modules can access the load module 216. .

概して、ステップ146をリンクするプログラミング方
法は、一プロセッサシステムの場合に使用されるその他
のダイナミックリンクツールのそれと同様なプログラミ
ング手法を使用する。いうまでもなく、それらのシステ
ムは本発明によって行われるような2個のプロセッサシ
ステムどうしを関連づけるという余分な任務を必要とし
ない。
In general, the programming method linking step 146 uses a programming technique similar to that of other dynamic link tools used in the case of a one processor system. Of course, those systems do not require the extra task of associating two processor systems as performed by the present invention.

ステップ147でロードモジュール216がメモリ220内に
ロードされ終った後に、ダイナミックリンカ224に、ロ
ードモジュールの参照セクション内の情報を活用してモ
ジュール内の関数がアプリケーションプログラム212か
ら呼出すことができるようにする。殊に、ダイナミック
リンカ224はコマンド実行ルーチン221により使用される
拡張関数アドレスを表わすテーブ(図示せず)を構築す
る。
After the load module 216 has been loaded into the memory 220 at step 147, the dynamic linker 224 utilizes the information in the reference section of the load module to allow the functions in the module to be called from the application program 212. . In particular, the dynamic linker 224 builds a table (not shown) representing the extended function address used by the command execution routine 221.

ステップ148では、ダイナミックリンカ224は、現在、
アプリケーションプログラムによって必要とされない関
数でメモリ220へロードされたものが存在するかどうか
判断する。もし存在するならば、これらの関数は活動中
のメモリから廃棄される。
In step 148, the dynamic linker 224 now
It is determined whether any functions not needed by the application program are loaded into the memory 220. If present, these functions are discarded from active memory.

最後に、ステップ149において、ダイナミックリンカ2
24は、モジュール識別子をアプリケーションプログラム
へ復帰させる。上記モジュール識別子はアプリケーショ
ンプログラム212から拡張関数に対する呼出しに際して
使用され、それらの関数を呼出す。例として、モジュー
ル識別子は図1に関して論じた参照セクション中のモジ
ュール数と同一とすることができる。ステップ148は一
個以上のモジュールがサブプロセッサシステム320上に
ロードされることになっている場合に有益である。
Finally, in step 149, the dynamic linker 2
24 returns the module identifier to the application program. The module identifier is used when calling an extension function from the application program 212, and calls those functions. By way of example, the module identifier may be the same as the number of modules in the reference section discussed with respect to FIG. Step 148 is useful when one or more modules are to be loaded on sub-processor system 320.

図2に示すダイナミックリンキングは、インストール
プロセスの一部であって、その間に、ユーザはコンピュ
ータを使用してインストールプロシージャを呼出し、同
プロシージャ自体は今度はダイナミックリンカ224を呼
出すことが望ましい。インストール命令の例はC言語で
書かれた次の関数である。
The dynamic linking shown in FIG. 2 is part of the installation process during which the user invokes the installation procedure using a computer, which in turn preferably invokes the dynamic linker 224. An example of an installation instruction is the following function written in C language.

int install_lm(lm_name) char forlm_mame: 但し、lm_nameはロードモジュール名である。上記ス
テップに続いて、この関数は、ロードモジュール名によ
り指定されるロードモジュールは何れもインストールし
てモジュール識別子を復帰させる。
int install_lm (lm_name) char for * lm_mame: where lm_name is the name of the load module. Following the above steps, this function installs any load module specified by the load module name and returns the module identifier.

ひとたびロードモジュール216がダウンロードされリ
ンクされると、マルチプロセッサシステムのランタイム
処理は2個のプロセッサシステム間の一定種類のパラメ
ータパス手法の使用を喚起する。図1に関して上記した
如く、このことは引数データと復帰データがプロセッサ
システム間を転送され両プロセッサ311と321とによって
理解できるように設計された特殊関数定義と呼出しと共
にプログラミング段階で行うことができる。
Once the load module 216 has been downloaded and linked, the run-time processing of the multi-processor system calls for the use of a certain type of parameter path approach between the two processor systems. As described above with respect to FIG. 1, this can be done in the programming phase with special function definitions and calls designed so that argument data and return data are transferred between the processor systems and understood by both processors 311 and 321.

上記した如く、一個以上のロードモジュール216がロ
ード可能で、その各々はそれ自身のモジュール識別番号
を受取る。ダイナミックリンカ224をプログラミングす
ることによって、モジュールと同じモジュール内の拡張
関数とを共に識別する識別子を復帰させることができ
る。識別を可能にする一つの方法例は、それがインスト
ールされる順序に従って各ロードモジュール215にモジ
ュール番号を付与することである。この識別子は、モジ
ュール内の一関数がプログラムから呼出されることにな
っている場合には常に、図6のステップ112で付与され
たような関数番号をモジュール識別子に接続することに
よって使用される。C言語の場合、このことはビット毎
のOR演算子によって実行することができる。その後リン
キングは全てのロードモジュールを含むことになろう。
As described above, one or more load modules 216 can be loaded, each of which receives its own module identification number. By programming the dynamic linker 224, an identifier that identifies both a module and an extension function in the same module can be returned. One example of a method that allows identification is to assign a module number to each load module 215 according to the order in which it is installed. This identifier is used by connecting the function number as given in step 112 of FIG. 6 to the module identifier whenever a function in the module is to be called from the program. In the case of the C language, this can be done with a bitwise OR operator. Then the linking will include all load modules.

本発明の代替例では、拡張関数ではなく、アプリケー
ションプログラムにより使用される割込みサービスルー
チンがマルチプロセッサシステムに追加される。図1に
示す方法は、ロードモジュールが割込みサービスルーチ
ンを格納する点を除いては本質上同一である。後者は、
サブシステムの割込みハンドラを介して割込みを受ける
とすぐ呼出される。ステップ12では、モジュール内の全
ての割込みサービスルーチンについて2つの入口を含む
参照セクションがつくりだされる。これらの入口は割込
みサービスルーチンに対するアドレス参照と、同ルーチ
ンの割込み数を指定する。例えば、my_inf1とmy_inf2の
2個のルーチンがステップ11のモジュール内に格納され
ている場合、セクション宣言は以下のようになろう。
In an alternative embodiment of the present invention, instead of an extension function, an interrupt service routine used by the application program is added to the multiprocessor system. The method shown in FIG. 1 is essentially the same, except that the load module stores an interrupt service routine. The latter is
Called as soon as an interrupt is received via the subsystem's interrupt handler. In step 12, a reference section is created containing two entry points for all interrupt service routines in the module. These entry points specify the address reference to the interrupt service routine and the number of interrupts in that routine. For example, if two routines my_inf1 and my_inf2 are stored in the module in step 11, the section declaration would be as follows:

割込みサービスルーチンを追加することに関連するロ
ードタイム方法もまた、図2に関して上記したものと本
質上同一である。もう1つ余分に考慮すべき点は、各ル
ーチンと関連する優先順位の情報がモジュールの優先順
位リストにアクセスすることによって検索可能なことで
ある。かくして、同じ割込みレベルに鎖状結合された割
込みサービスルーチンは特別にアクセス又は参照可能と
なる。
The load time method associated with adding an interrupt service routine is also essentially the same as described above with respect to FIG. Another extra consideration is that the priority information associated with each routine can be retrieved by accessing the module's priority list. Thus, interrupt service routines cascaded to the same interrupt level can be specifically accessed or referenced.

以上の記載に関して以下の各項を開示する。 The following items are disclosed with respect to the above description.

1. ホストプロセッサシステムとグラフィックプロセッ
サシステムを共に備え、ホスト上を走るメインプログラ
ムにより呼出され上記グラフィックプロセッサにより実
行可能な関数を拡張するためのマルチプロセッサシステ
ムにおいて使用される方法において、 上記グラフィックプロセッサにより実行されるサブプ
ログラムをつくりだし、 上記サブプログラムを定義することによってその引数
がランタイム時に上記グラフィックプロセッサシステム
にパスできるようにし、 上記メインプログラム内のサブプログラムに対してサ
ブプログラムにより使用されるパラメータを含む呼出し
を宣言し、 上記サブプログラムをコンパイルして上記グラフィッ
クプロセッサシステム上で実行し、 上記サブプログラムを上記グラフィックプロセッサシ
ステムへロードし、 上記サブプログラムを上記グラフィックプロセッサシ
ステム上にロードされる他のコードにリンクする、 ステップより成る前記方法。
1. A method comprising a host processor system and a graphic processor system for use in a multiprocessor system for extending functions executable by the graphic processor that are called by a main program running on a host, the method being executed by the graphic processor. A subprogram in the main program that contains the parameters used by the subprogram in the main program by defining the subprogram so that its arguments can be passed to the graphics processor system at runtime. And compile the subprogram and execute it on the graphic processor system. Loads to, linking the subprogram to other code that is loaded onto the graphics processor system, said method consisting step.

2. ホストプロセッサシステムとグラフィックプロセッ
サシステムを備えることによって上記ホストコンピュー
タ上を走るメインプログラムによって呼出されグラフィ
ックプロセッサによって実行される拡張関数を実行する
マルチプロセッサコンピュータシステムを使用する方法
において、 上記拡張関数を上記グラフィックプロセッサシステム
へロードし、 上記メインプログラムから上記拡張関数を呼出し、 上記ホストシステムから上記グラフィックシステムへ
上記拡張関数の引数をパスし、 上記拡張関数を上記グラフィックプロセッサによって
実行する、ステップより成る前記方法。
2. A method of using a multi-processor computer system, comprising a host processor system and a graphics processor system, for executing an extended function called by a main program running on the host computer and executed by a graphics processor, comprising: Loading to a graphics processor system, calling the extension function from the main program, passing arguments of the extension function from the host system to the graphics system, and executing the extension function by the graphics processor. .

3. 第1のプロセッサ上で一つのソフトウエアプログラ
ムを実行することによって同プログラムが第2のプロセ
ッサにより実行さるべき指定拡張関数を呼出すことがで
きるようにしたマルチプロセッサコンピュータシステム
において、 プログラマブルホストプロセッサと、 上記ホストプロセッサによりアクセス可能なメモリ
と、 プログラマブルグラフィックプロセッサと、 上記グラフィックプロセッサによりアクセス可能なメ
モリと、 を備え、上記ホストプロセッサとグラフィックプロセッ
サがソフトウエアインターフェースによりプログラミン
グされ、同インターフェースによって上記拡張関数が上
記グラフィックプロセッサメモリにダイナミックにダウ
ンロードされ、上記グラフィックプロセッサにより実行
できるようになった前記システム。
3. In a multiprocessor computer system, wherein a single software program is executed on a first processor so that the program can call a designated extension function to be executed by a second processor. A memory accessible by the host processor, a programmable graphic processor, and a memory accessible by the graphic processor, wherein the host processor and the graphic processor are programmed by a software interface, and the extended function is executed by the interface. The system dynamically downloaded to the graphics processor memory and executable by the graphics processor; Temu.

4. ホストプロセッサシステムとグラフィックプロセッ
サシステムを備え、ホストシステム上を走るメインプロ
グラムにより呼出されグラフィックプロセッサにより実
行される拡張関数を実行するマルチプロセッサコンピュ
ータシステムと共に使用されるソフトウエアインターフ
ェースにおいて、 上記拡張関数を上記グラフィックプロセッサシステム
上にロードされた他のコードへダイナミックにダウンロ
ードしリンクするリンカと、上記ホストシステムから引
数を受取り、上記拡張関数を識別し、上記拡張関数を呼
出すコマンド実行ルーチンと、から成り、 上記コマンド実行ルーチンとリンカとが一体となった
ツールの集合を備え、拡張関数をダイナミックにダウン
ロードしてそれらの引き数を上記ホストプロセッサシス
テムから受取る前記インターフェース。
4. A software interface for use with a multi-processor computer system that includes a host processor system and a graphics processor system and executes an extended function that is called by a main program running on the host system and executed by the graphic processor, the software interface comprising: A linker that dynamically downloads and links to other code loaded on the graphics processor system, receives an argument from the host system, identifies the extension function, and executes a command execution routine that calls the extension function; A set of tools in which the command execution routine and the linker are integrated, before dynamically downloading extension functions and receiving their arguments from the host processor system Interface.

5. ホストプロセッサとサブプロセッサとを備えるマル
チプロセッサシステム内にサブシステムプロセッサのメ
モリにロードされる拡張関数を追加する方法において、 上記サブプロセッサにより実行さるべき少なくとも一
つの関数を備えるロードモジュールをプログラミング
し、 上記ロードモジュールに対する再配置可能なアドレス
参照を含む上記モジュールの参照セクションをつくりだ
し、 上記ロードモジュールを部分的にリンクして内部参照
が全て解決され、外部参照が未解決のまま残されること
によって上記ロードモジュールがランタイム時に完全に
リンクできるようにする、ステップより成る前記方法。
5. A method for adding an extension function to be loaded into a memory of a subsystem processor in a multiprocessor system comprising a host processor and a subprocessor, comprising: programming a load module comprising at least one function to be executed by the subprocessor. Create a reference section of the module, including a relocatable address reference to the load module, and partially link the load module to resolve all internal references and leave external references unresolved. Said method comprising the steps of allowing a load module to be fully linked at runtime.

6. サブシステムプロセッサにより実行さるべき拡張関
数をロードすることによって同関数がホストプロセッサ
システム上を走るアプリケーションプログラムから呼出
せるうにマルチプロセッサシステムにおいて使用される
方法において、 上記サブプロセッサシステム内のメモリを上記拡張関
数の定義を含むロードモジュールに対して割当て、 上記ロードモジュールを上記サブプロセッサシステム
にロードし、 上記ロードモジュールを上記サブプロセッサシステム
にロードされる他のコードにリンクすることによって上
記ロードモジュールの未解決の参照が解決されるように
する、 ステップより成る前記方法。
6. A method used in a multi-processor system to load an extended function to be executed by a subsystem processor so that the function can be called from an application program running on a host processor system. Assigning the load module to the load module containing the definition of the extension function, loading the load module into the sub-processor system, and linking the load module to another code to be loaded into the sub-processor system. Said method comprising: resolving a resolution reference.

7. 拡張関数をサブプロセッサシステムへロードしリン
クすることによって上記関数がホストプロセッサシステ
ム上を走るアプリケーションプログラムと共に使用可能
になったマルチプロセッサコンピュータシステムにおい
て、プログラマブルホストプロセッサと、 上記ホストプロセッサによりアクセス可能なメモリ、
より成り、 上記サブプロセッサが上記ホストプロセッサのメモリ
内へロードされる拡張関数を上記第2のプロセッサのメ
モリへダウンロードして上記拡張関数を上記サブプロセ
ッサ上にロードされた他のコードにダイナミックにリン
クするようにプログラミングされる前記システム。
7. In a multiprocessor computer system in which the extended functions are loaded and linked to a subprocessor system so that the functions can be used with an application program running on the host processor system, the multiprocessor computer system is accessible by the programmable host processor and the host processor. memory,
Wherein the sub-processor downloads an extension function loaded into the memory of the host processor to the memory of the second processor and dynamically links the extension function to other code loaded on the sub-processor. The system programmed to:

8.ホストプロセッサシステム上を走るアプリケーション
プログラムのロード中にサブシステムプロセッサにより
実行されるべき拡張関数を上記サブシステムプロセッサ
の他のコードにリンクするためのマルチプロセッサシス
テム中に使用されるダイナミックリンカプログラミング
機構において、 上記アプリケーションプログラムのロードに呼応して
実行開始の呼出しを受取る入口点と、 上記拡張関数を含むロードモジュールのメモリサイズ
を取得する命令と、 上記ホストのメモリから上記サブプロセッサシステム
のメモリ内へ上記ロードモジュールを再配置するための
命令と、 上記ロードモジュール外部の関数に対する未解決の参
照を解決するための命令と、より成り、 上記入口点と命令とが上記サブシステムプロセッサに
より実行可能な一つの構文と文とへ構成される前記機
構。
8. A dynamic linker programming mechanism used in a multiprocessor system for linking extension functions to be executed by a subsystem processor during loading of an application program running on a host processor system with other codes of the subsystem processor. An entry point for receiving a call for starting execution in response to loading of the application program; an instruction for acquiring a memory size of a load module including the extension function; and a memory from the host to the memory of the sub-processor system. An instruction for relocating the load module; and an instruction for resolving an unresolved reference to a function outside the load module, wherein the entry point and the instruction are executable by the subsystem processor. Said mechanism composed into one syntax and sentence.

9. ホストプロセッサシステムとグラフィックプロセッ
サシステムを有するマルチプロセッサコンピュータシス
テムと共に使用されるインターフェースによって拡張関
数がホストシステム又は別のシステム上で開発され、次
いでグラフィックプロセッサシステムにロードすること
が可能になる。上記インターフェースは、ホストシステ
ム側とグラフィックシステム側に常駐するソフトウエア
により成り、ランタイムにオペレートして上記関数がホ
スト上を走るメインプログラムから呼出すことが可能に
なる。関数の引数はグラフィックシステムにパスされる
ことによって、同関数はグラフィックプロセッサによっ
て実行される。
9. An interface used with a multiprocessor computer system having a host processor system and a graphics processor system allows extension functions to be developed on the host system or another system and then loaded into the graphics processor system. The interface is made up of software resident on the host system side and the graphic system side, and can be operated at run time so that the functions can be called from a main program running on the host. The function arguments are passed to the graphics system so that the function is executed by the graphics processor.

【図面の簡単な説明】[Brief description of the drawings]

第1図は、グラフィックサブシステムの機能性を拡張段
階を示すフローダイアグラム、 第2図は、ホストプロセッサとグラフィックプロセッサ
を有するコンピュータシステムを使用するステップを示
すフローダイアグラム、 第3図は、ホストプロセッサとグラフィックプロセッサ
を有するマルチプロセッサコンピュータシステムのブロ
ック線図、 第4図は、図3のマイクロプロセッサシステムと共に使
用されるソフトウエアインターフェースを示すブロック
線図、 第5図は、ホストプロセッサとグラフィックプロセッサ
間の通信用に使用される通信バッファの構造を示す図、 第6図は、サブプロセッサシステムに共に使用される拡
張関数を格納するモジュールをつくりだすステップを示
す図、 第7図は、拡張関数を第1のプロセッサから第2のプロ
セッサへロードし、未解決の参照をダイナミックにリン
クするステップを示す図。 [符号の説明] 212……アプリケーションプログラム 211……通信ドライバ 216……オブジェクトファイル 215……拡張関数 224……ダイナミックリンカ 233……コアアプリケーション原始関数 225……インクルードファイル 222……コアシステム原始関数 423……スタック 323……バッファ。
FIG. 1 is a flow diagram showing the stages of extending the functionality of the graphics subsystem, FIG. 2 is a flow diagram showing the steps of using a computer system having a host processor and a graphics processor, FIG. FIG. 4 is a block diagram of a multiprocessor computer system having a graphics processor, FIG. 4 is a block diagram showing a software interface used with the microprocessor system of FIG. 3, FIG. 5 is a communication diagram between the host processor and the graphics processor. FIG. 6 shows the structure of a communication buffer used for the sub-processor system, FIG. 6 shows the steps of creating a module for storing an extension function used together with the sub-processor system, and FIG. From the processor Loads to 2 processors, shows the step of linking the unresolved references dynamically. [Description of Signs] 212 Application program 211 Communication driver 216 Object file 215 Extended function 224 Dynamic linker 233 Core application primitive function 225 Include file 222 Core system primitive function 423 …… Stack 323 …… Buffer.

フロントページの続き (72)発明者 ウィリアム エス イーグル アメリカ合衆国 テキサス州 77478 シュガーランド ノース メディオ リ ヴァー サークル 1418 (72)発明者 ダグラス シー クローフォード アメリカ合衆国 テキサス州 77479 シュガーランド ペムブロク ストリー ト 11 (72)発明者 マイケル ディー アサル アメリカ合衆国 テキサス州 77479 シュガーランド ウエスト ラングクレ スト プレイス 3207 (72)発明者 グレイアム ショート アメリカ合衆国 テキサス州 77479 シュガーランド グランツ レイク 2808 アパートメント404 (72)発明者 ジェイムズ ジー リトルトン アメリカ合衆国 テキサス州 77099 ヒューストン ボカ コート 10303 (72)発明者 ジェリー アール ヴァン アーカン アメリカ合衆国 テキサス州 77478 シュガーランド ファーンヒル 13563 (56)参考文献 特開 平1−240923(JP,A) Computer Language Vol.6,No.5 p59−74 M ay 1989 Michael Drag anza「Dynamic Link Libraries Under Wi ndows」 NIKKEI BYTE FEBRU ARY 1987 p168−182 Carre ll R.Killebrew Jr. 「TMS34010:グラフィックス・シス テム・プロセサーパイプライン方式のビ ット・アドレス可能な高速グラフィック ス・エンジン」 (58)調査した分野(Int.Cl.7,DB名) G06F 15/177 670 G06F 15/16 620 G06T 11/00 INSPEC(DIALOG) JICSTファイル(JOIS) WPI(DIALOG)Continued on the front page (72) Inventor William S. Eagle United States of America 77478 Sugarland North Media River Circle 1418 (72) Inventor Douglas Sea Crawford United States of America 77479 Sugarland Pembroke Street 11 (72) Inventor Michael Dee Assal United States Texas 77479 Sugarland West Langcrest Place 3207 (72) Inventor Graham Short United States Texas 77479 Sugarland Grants Lake 2808 Apartment 404 (72) Inventor James G Littleton United States Texas 77099 Houston Boca Court 10303 (72) Invented Jerry Earl Van Arkan Texas United States 77478 Sugarland Fernhill 13563 (56) Flat 1-240923 (JP, A) Computer Language Vol. 6, No. 5 p59-74 May 1989 Michael Draganza "Dynamic Link Libraries Under Windows" NIKKEI BYTE FEBRUARY 1987 p168-182 Carrell R. Killble Jr. “TMS34010: A high-speed graphics engine capable of bit addressing using a graphics system processor pipeline” (58) Fields investigated (Int. Cl. 7 , DB name) G06F 15/177 670 G06F 15/16 620 G06T 11/00 INSPEC (DIALOG) JICST file (JOIS) WPI (DIALOG)

Claims (3)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】マルチプロセッサシステムによって実行す
るための拡張グラフィック機能を与える方法であって、
前記マルチプロセッサシステムは、主アプリケーション
プログラムを実行するためのホストプロセッサシステム
と、コア原始グラフィック機能を含むグラフィックプロ
グラムを実行するためのグラフィックプロセッサシステ
ムを有する方法において、 拡張グラフィック機能サブプログラムソースコードを、
前記グラフィックプロセッサシステムによって実行可能
な形態のサブプログラムに変換し、内部参照を解決する
ように前記実行可能な形態のサブプログラムを部分的に
リンクし、 前記実行可能な形態の部分的にリンクしたサブプログラ
ムを前記ホストプロセッサシステムに記憶し、 前記実行可能な形態の部分的にリンクしたサブプログラ
ムを、通信ドライバを介して前記ホストプロセッサシス
テムから前記グラフィックプロセッサシステムにダウン
ロードし、 前記命令エグゼキュティブを介して前記グラフィックプ
ロセッサシステムにおいて、前記ダウンロードしたサブ
プログラムを受信し、 前記ダウンロードしたサブプログラムを、前記サブプロ
グラムをダウンロードし受信することに応答して、外部
参照を解決するように、前記グラフィックプロセッサシ
ステムで実行するリンカを介して、前記グラフィックプ
ロセッサシステムにロードされた前記コア原始グラフィ
ック機能にリンクし、 前記ダウンロードし、リンクしたサブプログラムを前記
グラフィックプロセッサシステムのメモリに記憶し、 前記ホストプロセッサシステムで実行する前記主アプリ
ケーションプログラムから拡張グラフィック機能を呼び
出し、 前記拡張機能呼び出しを、前記ホストプロセッサシステ
ムから通信ドライバを介して前記グラフィックプロセッ
サシステムに送信し、 前記ホストプロセッサシステムからの前記各拡張能呼び
出しを、前記命令エグゼキュティブを介して前記グラフ
ィックプロセッサシステムで受信し、 前記ダウンロードし、リンクしたサブプログラムを実行
することによって、前記グラフィックプロセッサシステ
ムで前記拡張グラフィック機能を実行することを特徴と
する方法。
1. A method for providing enhanced graphics capabilities for execution by a multiprocessor system, the method comprising:
The multiprocessor system includes a host processor system for executing a main application program and a graphic processor system for executing a graphic program including a core primitive graphic function.
Converting the executable form of the subprogram into a subprogram in an executable form by the graphic processor system, and partially linking the executable form of the subprogram to resolve an internal reference; Storing the program in the host processor system; downloading the executable form of the partially linked subprogram from the host processor system to the graphic processor system via a communication driver; A graphic processor system, receiving the downloaded subprogram; and resolving the external reference in response to downloading and receiving the subprogram. Linking the core primitive graphics functions loaded into the graphics processor system via a linker running on the graphics processor system; storing the downloaded and linked subprograms in a memory of the graphics processor system; Calling an extended graphics function from the main application program executed in the system, transmitting the extended function call from the host processor system to the graphic processor system via a communication driver, and calling each of the extended function calls from the host processor system Receiving at the graphics processor system via the instruction executive, executing the downloaded and linked subprogram Wherein performing said extended graphics capabilities in the graphics processor system.
【請求項2】マルチプロセッサシステムによって実行す
るための拡張グラフィック機能を与える方法であって、
前記マルチプロセッサシステムは、主アプリケーション
プログラムを実行するためのホストプロセッサシステム
と、コア原始グラフィック機能を含むグラフィックプロ
グラムを実行するためのグラフィックプロセッサシステ
ムを有する方法において、 前記拡張グラフィック機能に対して少なくとも1つの呼
び出しを有する前記主アプリケーションプログラムを前
記ホストプロセッサシステムに記憶し、 実行可能な形態の部分的にリンクしたサブプログラムを
前記ホストプロセッサシステムに記憶し、前記実行可能
な形態の部分的にリンクしたサブプログラムは、前記コ
ア原始グラフィック機能に対して少なくとも1つの呼び
出しを有し、前記グラフィックプロセッサシステムによ
って実行可能な形態のサブプログラムに存在し、内部参
照を解決するように部分的にリンクされており、 前記実行可能な形態の部分的にリンクしたサブプログラ
ムを、通信ドライバを介して前記ホストプロセッサシス
テムから前記グラフィックプロセッサシステムにダウン
ロードし、 前記命令エグゼキュティブを介して前記グラフィックプ
ロセッサシステムにおいて、前記ダウンロードしたサブ
プログラムを受信し、 前記ダウンロードしたサブプログラムを、前記サブプロ
グラムをダウンロードし受信することに応答して、外部
参照を解決するように、前記グラフィックプロセッサシ
ステムで実行するリンカを介して、前記グラフィックプ
ロセッサシステムにロードされた前記コア原始グラフィ
ック機能にリンクし、 前記ダウンロードしリンクしたサブプログラムを前記グ
ラフィックプロセッサシステムのメモリに記憶し、 前記ホストプロセッサシステムで実行する前記主アプリ
ケーションプログラムから拡張グラフィック機能を呼び
出し、 前記拡張機能呼び出しを、前記ホストプロセッサシステ
ムから通信ドライバを介して前記グラフィックプロセッ
サシステムに送信し、 前記ホストプロセッサシステムからの前記拡張機能呼び
出しを、前記命令エグゼキュティブを介して前記グラフ
ィックプロセッサシステムで受信し、 前記ダウンロードし、リンクしたサブプログラムを実行
することによって、前記グラフィックプロセッサシステ
ムで前記拡張グラフィック機能を実行することを特徴と
する方法。
2. A method for providing enhanced graphics capabilities for execution by a multiprocessor system, the method comprising:
The method, comprising: a host processor system for executing a main application program; and a graphics processor system for executing a graphics program including a core primitive graphics function, wherein the multi-processor system has at least one Storing the main application program having a call in the host processor system, storing the executable form of the partially linked subprogram in the host processor system, and storing the executable form in the partially linked subprogram Has at least one call to the core primitive graphics function and resides in a subprogram in a form executable by the graphics processor system; Downloading the partially linked subprogram in the executable form from the host processor system to the graphics processor system via a communication driver, via the instruction executive, Receiving, in the graphics processor system, the downloaded subprogram; executing the downloaded subprogram in the graphics processor system to resolve external references in response to downloading and receiving the subprogram; Linking the core primitive graphic function loaded into the graphic processor system via the linker, and downloading and linking the downloaded subprogram to the graphic processor system. Calling an extended graphics function from the main application program executed in the host processor system, transmitting the extended function call from the host processor system to the graphic processor system via a communication driver, Executing the enhanced graphics function on the graphics processor system by receiving the enhanced function call from the host processor system via the instruction executive at the graphics processor system and executing the downloaded and linked subprogram A method comprising:
【請求項3】別々にアクセス可能なメモリを含むサブプ
ロセッサとホストプロセッサを有するマルチプロセッサ
システムにおいて使用され、前記サブプロセッサのメモ
リにロードしリンクするための方法であって、拡張機能
は、前記サブプロセッサによって実行され、その結果前
記機能が、前記ホストプロセッサによって実行されるア
プリケーションプログラムから呼び出すことの出来る方
法において、 前記ホストプロセッサにおいて、サブプロセッサによっ
て実行されるべき拡張機能の定義を含むプログラムモジ
ュールを記憶し、前記ロードモジュール内の前記拡張機
能の他のものに対する前記拡張機能による全ての呼び出
しは、呼び出された機能のメモリアドレスを与えること
によって解決され、 前記サブプロセッサにおいて、前記サブプロセッサによ
ってアクセス可能なメモリにおいて前記プログラムモジ
ュールを記憶するために必要とされるメモリの大きさを
決定し、 前記サブプロセッサにおいて、前記プログラムモジュー
ルのための前記サブプロセッサのメモリを割り当て、 前記プログラムモジュールを、前記ホストプロセッサか
ら前記サブプロセッサへダウンロードし、 前記サブプロセッサにおいて、前記プログラムモジュー
ルをダウンロードし受信することに応答して、前記拡張
機能による読み出しを前記サブプロセッサのメモリに既
に記憶された他の機能にリンクすることを特徴とする方
法。
3. A method for loading and linking a memory of a sub-processor used in a multiprocessor system having a sub-processor including a separately accessible memory and a host processor, wherein the extended function is the sub-processor. A method for executing by a processor so that the functions can be called from an application program executed by the host processor, wherein the host processor stores a program module including a definition of an extended function to be executed by a sub-processor. And all calls by the extension to other ones of the extension in the load module are resolved by providing a memory address of the called function; Determining the size of the memory required to store the program module in a memory accessible by a processor; allocating memory of the sub-processor for the program module in the sub-processor; Downloading from the host processor to the sub-processor, wherein in the sub-processor, in response to downloading and receiving the program module, the read-out by the extended function is stored in another memory of the sub-processor. The method characterized by linking to.
JP27515790A 1989-10-12 1990-10-12 How to give enhanced graphics capabilities Expired - Fee Related JP3051438B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US07/420,409 US5269021A (en) 1989-10-12 1989-10-12 Multiprocessor software interface for a graphics processor subsystem employing partially linked dynamic load modules which are downloaded and fully linked at run time
US420409 1989-10-12
US420491 1989-10-12
US07/420,491 US5247678A (en) 1989-10-12 1989-10-12 Load time linker for software used with a multiprocessor system

Publications (2)

Publication Number Publication Date
JPH03208187A JPH03208187A (en) 1991-09-11
JP3051438B2 true JP3051438B2 (en) 2000-06-12

Family

ID=27024835

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27515790A Expired - Fee Related JP3051438B2 (en) 1989-10-12 1990-10-12 How to give enhanced graphics capabilities

Country Status (1)

Country Link
JP (1) JP3051438B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7671862B1 (en) 2004-05-03 2010-03-02 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US20060095898A1 (en) * 2004-10-28 2006-05-04 International Business Machines Corporation Method for integrating multiple object files from heterogeneous architectures into a set of files
US8141102B2 (en) * 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
CN111190658B (en) * 2020-01-08 2023-02-28 乐鑫信息科技(上海)股份有限公司 System for supporting dynamic loading of application program on SoC (system on chip) without MMU (memory management unit) based on-chip execution

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Computer Language Vol.6,No.5 p59−74 May 1989 Michael Draganza「Dynamic Link Libraries Under Windows」
NIKKEI BYTE FEBRUARY 1987 p168−182 Carrell R.Killebrew Jr.「TMS34010:グラフィックス・システム・プロセサーパイプライン方式のビット・アドレス可能な高速グラフィックス・エンジン」

Also Published As

Publication number Publication date
JPH03208187A (en) 1991-09-11

Similar Documents

Publication Publication Date Title
US5247678A (en) Load time linker for software used with a multiprocessor system
US5269021A (en) Multiprocessor software interface for a graphics processor subsystem employing partially linked dynamic load modules which are downloaded and fully linked at run time
US10367822B2 (en) Restrictive access control for modular reflection
US8271965B2 (en) Apparatus to guarantee type and initialization safety in multithreaded programs
CN107347253B (en) Hardware instruction generation unit for special purpose processors
US6760905B1 (en) Lazy compilation of template-generated classes in dynamic compilation execution environments
US11366643B2 (en) Generating dynamic modular proxies
US6792599B2 (en) Method and apparatus for an atomic operation in a parallel computing environment
US10140119B2 (en) Modular serialization
US20080270979A1 (en) Methods and systems for using type models to generate an implementation of a type
JP2000347871A (en) Automatic stub / adapter generator
US10324693B2 (en) Optimizing multiple invocations of graphics processing unit programs in Java
US20040083467A1 (en) System and method for executing intermediate code
CN115113916B (en) Linux kernel decoupling method and device and readable storage medium
US6684395B2 (en) Multiple image dynamic bind and load procedure for a multi-processor
JP3051438B2 (en) How to give enhanced graphics capabilities
JP2991242B2 (en) How to use a multiprocessor computer system
US8984473B2 (en) Methods for type analysis in systems for code generation
Benson et al. The OpenVMS mixed pointer size environment
Maas et al. A JVM for the Barrelfish Operating System
Hanlon Final Year Project Report
Reid An overview of Fortran 2003
Nordlöv Implementation Aspects of Image Processing
JP2005108126A (en) Intermediate code execution system, equipment with intermediate code execution system
WO2017034652A1 (en) Restrictive access control for modular reflection

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080331

Year of fee payment: 8

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090331

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees