JPH03208187A - Interface for graphic processor sub- system - Google Patents

Interface for graphic processor sub- system

Info

Publication number
JPH03208187A
JPH03208187A JP27515790A JP27515790A JPH03208187A JP H03208187 A JPH03208187 A JP H03208187A JP 27515790 A JP27515790 A JP 27515790A JP 27515790 A JP27515790 A JP 27515790A JP H03208187 A JPH03208187 A JP H03208187A
Authority
JP
Japan
Prior art keywords
function
functions
processor
host
graphics
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.)
Granted
Application number
JP27515790A
Other languages
Japanese (ja)
Other versions
JP3051438B2 (en
Inventor
Michael A Denio
マイケル エイ デニオ
William S Egr
ウィリアム エス イーグル
Douglas C Crawford
ダグラス シー クローフォード
D Asar Michael
マイケル ディー アサル
Graham Short
グレイアム ショート
James G Littleton
ジェイムズ ジー リトルトン
Aken Jerry R Van
ジェリー アール ヴァン アーカン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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,491 external-priority patent/US5247678A/en
Priority claimed from US07/420,409 external-priority patent/US5269021A/en
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
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)

Abstract

PURPOSE: To perform complete linkage on a test graphic sub system by loading a developed extension function and calling a function from a main program at run time. CONSTITUTION: The extension function to be executed by a graphic processor is prepared in steps STs 11 and 12 and definition is made so as to pass the argument to the graphic processor in the run time. Then, the function composed of a high standard language is called from the main program during running on a host system in the STs 13 and 14 and loaded by a graphic system. In this case, one function during running is moved and it is called by the same parameter. Thereafter, the extension function is compiled and executed on the graphic processor in the ST 14. Then, when the extension function is partially linked and a DLM is formed, the complete linkage is performed in the STs 15-17.

Description

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

〔従来の技術〕[Conventional technology]

今日の、グラフィンクディスプレイを使用するコンピエ
ータシステムは、相異なる一連のアーキテクチャをイ丁
している。システムによってはホストプロセソサとディ
スプレイコントローラを備えるものがある。これらは本
質上、ハードヮイアド・ビノ1・マップシステムであっ
て、ホストプロセソサが全てのグラフインク処理を実行
することが要求される。しかし、かかるシステムの欠点
は、解像度の如き図形に課される要求が厳しくなるにつ
れて、ホストプロセソサに対する処理上の負担もまた大
きくなり、その結果、処理速度が低下することである。
Today's computer systems that use graphical displays utilize a different set of architectures. Some systems include a host processor and a display controller. These are essentially hardwired bino1 map systems, requiring the host processor to perform all graph ink processing. However, a drawback of such systems is that as the requirements placed on the graphics, such as resolution, become more stringent, the processing burden on the host processor also increases, resulting in slower processing speed.

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

グラフィックブロセソササブシステムは高い解像度と高
速な実行を可能にするけれども、かかるシステムの多く
の欠点は、ハードワイヤド方式のものであれ、プログラ
マプルなものであれ、それらの拡張が容易でないという
点である。プログラマブルプロセソサを有するサブシス
テムでさえ、ホストシステムとそのアプリケーションプ
ログラムとを統合することは困難であり、この理由から
、それらは本質上、固定機能システムとなっている。
Although graphics processor subsystems allow for high resolution and fast execution, a drawback of many such systems is that they are not easy to extend, whether hardwired or programmable. It is a point. Even subsystems with programmable processors have difficulty integrating the host system and their application programs, and for this reason they are essentially fixed function systems.

かかるシステムはできる限り、汎用的であろうと努めて
いるため、余りに多くの機能をサブシステムに追加する
ためにその機能性は効率性を犠牲にして得られることに
なり、いわゆる「輪廻」効果を有することになりがちで
ある。固定された組のa能を有するか、拡張困難なシス
テムの有するもう一つの問題点は、それらが、新たなグ
ラフインクアルゴリズムが間断なく開発されているグラ
フインクソフトウエアと歩調をあわせることができない
点である。
Because such systems strive to be as general-purpose as possible, adding too much functionality to a subsystem means that functionality is gained at the expense of efficiency, creating the so-called "reincarnation" effect. They tend to have. Another problem with systems that have a fixed set of capabilities or are difficult to scale is that they cannot keep pace with GraphInk software as new GraphInk algorithms are constantly being developed. It is a point.

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

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

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

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

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

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

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

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

実行速度は、ソフトウエア開発者がそのアプリケーショ
ンに最も良く適合するグラフインク関数のカスタム集合
をつくりだすことができるために最適化される。本発明
のもう一つの利点は、それが、グラフィノクサブシステ
ムの機能性を拡張するために使用される方法を標準化で
きる点である。
Execution speed is optimized because software developers can create custom sets of graph ink functions that best fit their applications. Another advantage of the present invention is that it allows standardization of the methods used to extend the functionality of the Graphino subsystem.

本発咽は、ハードウエアメーカとソフトウエア開発者の
双方が対象とする彼らの製品に対するインターフェース
を提供するものである。
This publication is intended for both hardware manufacturers and software developers to provide an interface to their products.

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

本発明の利点の一つは、一つの言語で書かれたメインソ
フトウエアプログラムをホストシステム上で走らせるこ
とができるが、グラフィソクプロセソサにより実行さる
べく指名された関数を呼出すことができることである。
One of the advantages of the present invention is that the main software program written in one language can run on the host system, but call functions designated to be executed by the graphics processor. be.

それ故、暗黙上、本発明の場合に使用されるプロセソサ
は高水準言語でプログラミングすることが可能であり、
上記言語は両プロセッサについて同一の言語とすること
ができる。かくして、各フ“ロセフサは、それ自身の命
令集合とコンパイラと関わりあうことによって、そのプ
ロセッサの低水準言語がつくりだれさる。
Implicitly, therefore, the processor used in the case of the present invention can be programmed in a high-level language;
The language may be the same for both processors. Thus, each processor interacts with its own set of instructions and a compiler to create the low-level language of that processor.

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

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

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

その特殊なインプリメンテーションは、本明細書を検討
すれば、当該技術分野において通常の技能を有するプロ
グラマの能力の範囲内にあると考えられる。本発明の開
示は種々の適用業務に対して今日利用可能な無数の言語
とシステムで本発明を実施するために行うものである。
Its specific implementation is believed to be within the ability of programmers of ordinary skill in the art upon reviewing this specification. The present disclosure is provided for implementing the 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 unassembled rather than compiled. Therefore,
In this explanation, "assemble" can be replaced with "compile".

本発明の「ユーザ」は、一つの多重処理システムの諸々
の一部を提供する種々の人物であって差支えない。例え
ば、ユーザは上記ユーザはソフトウエア開発者で、シス
テム上で使用するために作威中のアプリケーション又は
ドライバに対する拡張関数を追加したいと欲しているも
のであってもよい。あるいは、単に他のプログラマが使
用できるようにするために拡張関数を提供するプログラ
マであってもよい.その代わりに、ボードメーカの如き
ハードウエアメーカが、グラフインクシステム用の関数
をブログラξングすることもできる.また、上記ユーザ
は、そのインターフェースを使用するプログラムを実際
に実行させる者であってもよい。更に、計算方法とプロ
グラムについて特徴的なことであるが、ユーザは、コン
ピュータ上でランする他のソフトウエアであってもよい
A "user" in the present invention can be any number of people who provide different parts of a multi-processing system. For example, the user may be a software developer who wishes to add extensions to an application or driver he is developing for use on the system. Or you may simply be a programmer providing an extension function for use by other programmers. Alternatively, hardware manufacturers, such as board manufacturers, can program functions for graph ink systems. Further, the user may be a person who actually executes a program using the interface. Furthermore, as is typical of computational methods and programs, the user may also be other software running on a computer.

本解説の目的上、一人のユーザが多重処理システムに付
加したいと希望しているようなサブプログラムは「拡張
関数」と称することにする。メインプログラムを実行す
るシステムは「ホストブロセノサシステム」あるいは「
ホストシステム」と称することにする。そして、その際
、そのブロセノサは「ホストブロセソサ」と称する。拡
張関数がその上で実行されるシステムは、「グラフィッ
ク処理システム」であり、そのブロセソサは「グラフィ
ノクプロセノサ」又は「グラフインクシステムプロセノ
サJ  (GSP)と称することにする。
For purposes of this discussion, such subprograms that a user may wish to add to a multiprocessing system will be referred to as "extension functions." The system that executes the main program is the "Host Brocenosa System" or "
This will be referred to as the "host system." In this case, the Brocenosa is referred to as a "host Brocenosa". The system on which the extension functions are executed is a "Graphics Processing System" and its processor will be referred to as a "Graphics Processor" or "Graphics System Processor J (GSP)".

第1図は、マルチブロセソサシステムと共に使用される
拡張関数をつくりだす基本的ステップを示すブロソク線
図であって、上記システムはホストプロセノサとグラフ
インクプロセフサを備えている。この方法を使用して、
コア原始関数内に含まれないグラフィンク関数を一人の
プログラマがつくりだすことができる。これらの拡張関
数はダイナミックロードモジュール(DLM)内に組込
まれ、エンドユーザによって使用され、エンドユーザは
普通、それらを初期化時にグラフィソクシステムへダウ
ンロードする。その後、それらはホストシステム上で実
行中のメインプログラムから呼出すことができる。
FIG. 1 is a block diagram illustrating the basic steps of creating an extension function for use with a multiprocessor system that includes a host processor and a graph ink processor. Using this method,
A single programmer can create graphics functions that are not included within the core primitives. These extension functions are built into dynamic load modules (DLMs) and used by end users, who typically download them to the GraphicSoc system upon 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 suitable subprocessor for the graphics processor to execute, define the subprogram so that its arguments can be passed during execution, compile it for the graphics processor, and then This is to form a DLM by linking some subprograms. Ultimately, the DLM is downloaded to the graphics processor where it is linked with existing subprocessor functions and core primitive functions.

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

ステンプ12では、サブプログラムはランタイム中にサ
ブプログラム引数がグラフインクプロセッナへパスでき
るような形に定義される。ステ・ノプ13は、メインプ
ログラム中のサブプログラムの呼出しがステソプ12の
定義によって理解可能な形に表現されなければならない
点でステップ12と関連している。ステップl2と13
を実行するには少なくとも2つの異なる方法が存在する
In step 12, the subprogram is defined in such a way that subprogram arguments can be passed to the graph ink processor during runtime. Step 13 is related to step 12 in that calls to subprograms in the main program must be expressed in an understandable form by the definition of step 12. Steps l2 and 13
There are at least two different ways to do this.

これらの方法は、それぞれ「マルチプロセッサブロセノ
サにおけるソフトウエアパーティショニング」と「マル
チプロセソサシステム用拡張ソフトウエア関数」(権利
者テキサス・インスッルメント社、ケース番号# 13
625号、および1 14443号)と題する同時係属
出願に解説されている。上記第1の出願は、拡張関数を
マルチブロセソサシステムに付加するパケット法を記述
し、第2の出願はダイレクト法について記述している。
These methods are described in ``Software Partitioning in Multiprocessor Systems'' and ``Extended Software Functions for Multiprocessor Systems'' (Texas Instruments Inc., Case No. 13), respectively.
No. 625, and co-pending application No. 114443). The first application describes a packet method of adding extension functions to a multiprocessor system, and the second application describes a direct method.

上記両出願の開示事項は、参考のため本文中に組込んで
ある。
The disclosures of both of the above applications are incorporated into the text for reference.

上記パケット法は、ユーザ側でのプログラミング労力量
が最小になるようにグラフィソクシステムを拡張できる
ように設計されている。同方法によれば、C言語のよう
な高水準言語で記述された関数をホストシステム上でラ
ン中のメインプログラムから呼出してグラフィックシス
テムによって実行することができる.事実、上記同時係
属出願中に説明されているように、バケソト法によれば
、一人のユーザがホストシステム上をラン中の一関数を
グラフインクシステムに移動させ、それを同じパラメー
タによって呼出すことができる。パケ・ノト法では、関
数の引数は、送られるデータのサイズと型を記述するバ
ケソトの形で送られる。
The packet method is designed to extend the GraphicSoc system with minimal programming effort on the part of the user. According to this method, functions written in a high-level language such as C can be called from a main program running on a host system and executed by a graphics system. In fact, as explained in the co-pending application cited above, the Baquesoto method allows a single user to move a function running on the host system to the GraphInk system and call it with the same parameters. can. In the Paque-Noto method, function arguments are sent in the form of a Baque-Noto that describes the size and type of data to be sent.

ダイレクト法は、バケソト法のように引数をスタソク上
に配置することはない。関数は、1個の引数と共にグラ
フィソクサブシステムにより呼出される。上記引数は、
通信バ・ノファのポインタで、そこにホストは関数の引
数をダウンロードする。
In the direct method, arguments are not placed on the stack as in the bucket method. The function is called by the graphics subsystem with one argument. The above argument is
A communication pointer to which the host downloads the function arguments.

上記関数は、付加ロードを含み、同コードは、グラフィ
ソクプロセソサに対して上記バソファからパラメータを
得て、それらを局所的変数と突合わせるように指令する
。上記関数は、直接入口点法を用いてメインプログラム
から呼出される。入口点は関数の引数のフォーマノトと
復帰条件を判断する。これらの直接入口点については同
時係属の「拡張関数」出願中に詳説されている通りであ
る.ステノブ14はグラフィソクブロセッサ用にサブプ
ログラムをコンパイルする。もし、サブプログラムがグ
ラフィノクプロセソサ用にアセンブラ言語で書かれてい
れば、ステノプl4はそのコードをアセンブリすること
はいうまでもない。コンパイルとアセンブルの技法は周
知の通りである。
The above function contains an additional load, which instructs the graphics processor to obtain parameters from the bath sofa and match them with local variables. The above functions are called from the main program using the direct entry point method. The entry point determines the formalism of the function's arguments and the return condition. These direct entry points are detailed in the co-pending ``Extension Functions'' application. Stenov 14 compiles subprograms for the graphics processor. If the subprogram is written in assembler language for the Grapheno processor, it goes without saying that the Stenop 14 will assemble that code. Compilation and assembly techniques are well known.

ステソプ1 5 − 1. 7は、サブプログラムの一
部リンクとロードを喚起する。これらステップの実行は
「マルチプロセソサシステムに使用されるソフトウエア
用ロードタイムリンカゴ (権利者テキスト・インスト
ルメント社、ケース番号# 14442号)と題する同
時係属出願中に説明されている。
Stethop 1 5-1. 7 calls for partial linking and loading of subprograms. The implementation of these steps is described in a co-pending application entitled ``Load Time Linker for Software Used in Multiprocessor Systems'' (Text Instrument Inc., Case No. 14442).

本願は参考のため本文中に組込まれてある。本発明の重
要な特徴点は特定のアプリケーションプログラムの要求
に応じてランタイム時に拡張関数がロードされリングで
きる点にあるため、上記リンク・ロードのステップは、
本文中、「ダイナミックダウンローデイング」と称する
ことにする。
This application is incorporated herein by reference. Since 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 described above is
In this text, this will be referred to as "dynamic downloading."

同時係属出願に解説されているロードタイムリンカの方
法論に従って、ステップ15はサブプログラムを一部リ
ンクしてDLMを形成する。この一部リンキングステソ
プによってサブプログラム内部の変数と関数に対する参
照が全て分解される。
In accordance with the load time linker methodology described in the co-pending application, step 15 links some of the subprograms to form a DLM. This partial linking procedure decomposes all references to variables and functions within the subprogram.

サブプログラムにより外部参照されたそれらの変数と関
数は分解されないままにとどまる。ステソブ16はDL
Mをグラフィ・ノクシステムにロードする。ランタイム
中にロードが行われることによって、アプリケーション
プログラムは、それと共に使用されるハードウエアとは
別個に市販することができるようにすることが望ましい
。ステソプ17は、D L. Mのリンクを完了し、サ
ブプロセッサシステム中に常駐する外部参照変数と関数
を全て分解する。これらの常駐関数はコア原価関数であ
るのが通常であろうが、本発明の方法によりロードされ
る他の拡張関数であってもよい。ソフトウエア開発段階
中において、ステップ16とl7は、当該アプリケーシ
ョンが最終的に使用されることになるグラフィ・7クサ
ブシステム上でなく、特殊なテストグラフインクサブシ
ステム上で行わうことかできる。にもかかわらず、上記
テストシステムは、グラフィックプロセソサとエミュレ
ータを備えるものと想定され、上記方法は基本的に同一
である。エンドユーザは、また、ランタイム時にステッ
プ16とl7を実行することもできる。
Those variables and functions referenced externally by the subprogram remain undecomposed. Stesob 16 is DL
Load M into the Graphi Nok system. It is desirable that loading occurs during runtime so that the application program can be commercially available separately from the hardware with which it is used. Stesop 17 is D L. Complete the linking of M and disassemble all external reference variables and functions residing in the subprocessor system. These resident functions will typically be core cost functions, but may also be other extension functions loaded by the method of the invention. During the software development stage, steps 16 and 17 may be performed on a special test graphics subsystem rather than on the graphics subsystem on which the application will ultimately be used. Nevertheless, the test system is assumed to include a graphics processor and an emulator, and the method is essentially the same. The end user can also perform steps 16 and 17 at runtime.

第2図は、本発明の第2の面であるホストコンピュータ
システム中にグラフィックサブシステムを使用する方法
を示す。第2図は、システムフローダイアグラムの形を
とっており、その方法のステップはそれらを実行するソ
フトウエアプログラムと関連している。全体として、第
2図は、ホストメモリ210とグラフインクメモリ22
0内に共に常駐するソフトウェアより構成される。メモ
リ210内に常駐するソフトウェアは、通信ドライバ2
11と、アプリケーションプログラムオブジェクトファ
イル214と、拡張関数オブジェクトファイル216で
あり、後者は以下に論ずるようにグラフインクメモリ2
20ヘロードされる。
FIG. 2 illustrates the second aspect of the invention, a method of using a graphics subsystem in a host computer system. FIG. 2 is in the form of a system flow diagram in which the method steps are associated with a software program that executes them. Overall, FIG. 2 shows host memory 210 and graph ink memory 22.
Consists of software that resides together in 0. The software resident in the memory 210 is the communication driver 2.
11, an application program object file 214, and an extension function object file 216, the latter of which is stored in graph ink memory 2 as discussed below.
Loaded to 20.

212と215の番号をふったコンポーネントは、アプ
リケーションファイル214と拡張関数DLMファイル
216がソースコードモジュールからコンパイルされた
ことを示す。アプリケーションファイル214の一つは
、メインプログラム213である。メモリ220内に常
駐するソフトウェアは、コマンド実行ルーチン221と
、拡張関数定義の実行可能ファイル226と、インクル
ードファイル225と、コア原始関数222、223、
224である。これらコンポーネントは第4図に関連し
て更に解説する。
Components numbered 212 and 215 indicate that the application file 214 and extension function DLM file 216 were compiled from source code modules. One of the application files 214 is the main program 213. The software resident in the memory 220 includes a command execution routine 221, an executable file 226 for extension function definitions, an include file 225, and core primitive functions 222, 223,
It is 224. These components are further discussed in connection with FIG.

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

ホストプロセソサ311は、インテル社製の80286
と80386ブロセノサの如き周辺制御用に最適化され
るのがg通である。これらのプロセソサはDOSをベー
スとしたパーソナルコンピュータシステムと共に使用さ
れるが、本発明はDOSオペレーティングシステムに限
定されるものではない。事実、本文中に解説した方法と
メカニズムは各種のプロセソサとオペレーティングシス
テムを使用して実施することが可能である。ホストコン
ピュータ311と関係するメモリ210は、ランダムア
クセスメモリ (RAM)を備えることによって、同メ
モリがその処理を指示するプログラムにアクセス可能と
することができる。
The host processor 311 is Intel's 80286
It is g-tsu that is optimized for peripheral control such as and 80386 Brosenosa. Although 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 can be implemented using a variety of processors and operating systems. Memory 210 associated with host computer 311 may include random access memory (RAM) so that it is accessible to the programs that direct its processing.

グラフィックプロセッサ321はグラフィソク処理用に
設計され、ブログラξング可能である。
The graphics processor 321 is designed for graphics processing and is programmable.

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

上記2個のプロセッサどうしの間の通信手段は、パス3
30と通信バソファ323により具体化する。パス33
0は双方向性であって、データ通路と制御ラインを提供
する。通信バソファ323は、両方のプロセソサシステ
ム310と320とによってアクセス可能であり、第5
図に関して詳説する。通信千段のその他のハードウエア
製作も可能であって、その場合の第一次的な要求条件は
、各ブロセッIJ− 3 1 1と321とが、通信バ
ッファ323にアクセスでき、同バソファ323が、プ
ロセソサどうしの間をハンドシェイクさせるためのメソ
セージデー夕と、呼出し中の関数を識別するための識別
空間と、コマンド引数と追加データをパスするためのデ
ータ空間より構成されていることである。第3図に示す
形は、プロセ・ツサ間の交信を可能にするための数多く
の手段のうちの一つにすぎず、その他の手段も容易に開
発することができる。更に、第3図は2プロセソサシス
テム310、320で別々のメモリ210と220を備
えたものを示しているが、通信手段は共用メモリであっ
ても差支えない。
The communication means between the two processors is path 3.
30 and a communication bath sofa 323. pass 33
0 is bidirectional and provides data paths and control lines. The communication bath sofa 323 is accessible by both processor systems 310 and 320 and is accessible by the fifth
The diagram will be explained in detail. It is also possible to create other hardware with 1,000 communication stages, in which case the primary requirements are that each of the bus sets IJ-311 and 321 can access the communication buffer 323, and that the same bus sofa 323 can access the communication buffer 323. , a message data space for handshaking between processors, an identification space for identifying the function being called, and a data space for passing command arguments and additional data. The configuration shown in FIG. 3 is only one of many ways to enable processor-to-processor communication, and other means can easily be developed. Furthermore, although 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、大容量メモリ
350、およびキーボードやマウスの如き人力装置36
0と共に動作する。これらの人出力装置とその他のホス
トシステム3 1 0 部分間でホストシステムパス3
14を介して適当な形で情報を交信するためにI/O回
路313を使用する。人力装置360によってユーザは
、ホストブロセノサシステム310と対話することがで
きる。ディスプレイ340は、周知の制御技法と人出力
技法を介してグラフインクプロセソサ321へ接続され
る。
The multiprocessor system of FIG. 3 includes a variety of standard peripherals, particularly a display 340, mass memory 350, and human power devices 36 such as a keyboard and mouse.
Works with 0. The host system path 3 between these human output devices and other host system 3 1 0 parts
I/O circuitry 313 is used to communicate information in a suitable manner via 14. Human powered device 360 allows a user to interact with host brothel system 310 . Display 340 is connected to graph ink processor 321 via well-known control and human output techniques.

再び第2図について見ると、上記方法は、DLMファイ
ル216からグラフィックサブシステム320へ拡張関
数をダウンロードし、上記拡張関数をメインプログラム
213から呼出し、同関数の引数をホストシステム31
0からサブシステム320ヘパスし、拡張関数を実行す
るという基本的なステップより構或される。コア原始関
数は、メインプログラム213がサブシステム320内
に常駐する関数を呼出す前に、グラフインクサブシステ
ム320内ヘロードされる。このことによってロードと
リンクがグラフィソクプロセソサ321によって実行さ
れることが可能になると共に、拡張関数によって一定の
基本的なグラフィンクタスクを呼出すことが可能になる
Referring again to FIG. 2, the above method downloads an extension function from the DLM file 216 to the graphics subsystem 320, calls the extension function from the main program 213, and passes the arguments of the function to the host system 31.
It consists of the basic steps of passing from 0 to subsystem 320 and executing the extension function. Core primitive functions are loaded into graph ink subsystem 320 before main program 213 calls functions that reside within subsystem 320. This allows loading and linking to be performed by the graphics processor 321 and allows certain basic graphics tasks to be called by the extension functions.

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

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

殊に、ステノブ22のロードとリンクによって拡張関数
DLM216がメモリ220ヘロードされ、ランタイム
時に他の拡張関数とコア原始関数にリンクされ、実行可
能ファイル226を形戒することが可能になる。ダイナ
旦ソクリンカ224は、インクルードファイル225の
一部である記号テーブルファイルを用いて拡張関数を含
む実行可能なファイル226をつくりだし、システム残
部に対する関数を識別する。本発明の特徴の一つは、拡
張関数がコードモジュール215としてホストシステム
310上で開発され、オブジェクl・ファイル216へ
とコンパイルされ、グラフイノクシステム320ヘダウ
ンロードできる点である。
In particular, the loading and linking of stenob 22 causes extension function DLM 216 to be loaded into memory 220 and linked to other extension functions and core primitive functions at runtime, allowing executable file 226 to be formatted. The Dynalinker 224 uses the symbol table file that is part of the include file 225 to create an executable file 226 that contains the extended functions and identifies the functions to the rest of the system. One of the features of the present invention is that extension functions can be developed on host system 310 as code modules 215, compiled into object files 216, and downloaded to graphinok system 320.

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

ステップ24では拡張関数226の引数がホストシステ
ム310からサブシステム320ヘパスされる。ステノ
プ24を実行するために、ホストシステム310は通信
ドライバ211を供給され、グラフインクシステム32
0は、コマンド実行プログラム221を供給される。通
信ドライバ211の詳細は、第4図と第5図に関して以
下に説明するが、要するに、通信ドライバ211は、ホ
ス1・システム310とグラフインクシステム320間
を交信するために使用されるプログラムを格納している
。また、コマンド実行プログラム221も、第4図に関
して以下に説明する。通信ドライバ211どコマンド実
行プログラム221双方の働きは、バケソト法又は引数
をパスするダイレクト法の何れか一方、又はその両方を
包含する。
In step 24, arguments of extension function 226 are passed from host system 310 to subsystem 320. To run Stenop 24, a host system 310 is provided with a communication driver 211 and a graph ink system 32.
0 is supplied with a command execution program 221. The details of the communication driver 211 will be explained below with respect to FIGS. are doing. 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 bucket method or the direct method of passing arguments, or both.

ステソブ25では、グラフインクサブシステム310を
用いて拡張関数226が実行される。もし拡張関数22
6がコアアプリケーション原始関数223を呼出す場合
には、ステップ25はその原始関数の実行を伴うことに
なる。
In the SteSob 25, the GraphInk subsystem 310 is used to perform the expansion function 226. If extension function 22
If 6 calls a core application primitive function 223, step 25 will involve executing that primitive function.

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

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

全体として、第4図は、第1のプロセソサシステム31
0にロードされアプリケーションインターフェースライ
ブラリ217とリンクされる、実行可能なコード形式2
14のアプリケーションプログラムを示す。ホストシス
テム310は同時に通信ドライバ211と1スタノク4
14を備えている。拡張関数定義226は、グラフィン
クシステム320のメモリ220内にロードされ、コマ
ント実行ルーチン221によってアクセスされる。
In general, FIG. 4 shows a first processor system 31
0 and linked with the application interface library 217
14 application programs are shown. The host system 310 simultaneously has a communication driver 211 and one stanok 4.
It is equipped with 14. Extension function definition 226 is loaded into memory 220 of graphics system 320 and accessed by command execution routine 221.

また、グラフィソクシステム320は1スタソク423
を備えている。第3図について説明したように、通信バ
ッファ323は、データをプロセソサどうしの間でパス
しあうためのスペースを備えている。引数ハンドラ44
1aと441bとは、拡張関数のパケソト形に関連して
使用される。
In addition, the graphics system 320 is 1 star sok 423
It is equipped with As described with reference to FIG. 3, communication buffer 323 provides space for passing data between processors. Argument handler 44
1a and 441b are used in connection with the Paquesoto form of the extension function.

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

アプリケーションインターフェース217は、ヘッダフ
ァイルとアプリケーションインターフェースライブラリ
より成る。ヘソダファイルは、コアと拡張関数の定義2
23、226を参照する。
The application interface 217 consists of a header file and an application interface library. Hesoda file defines core and extension functions 2
23, 226.

それらは同時に、コアと拡張ファンクションの呼出しを
適当な入口点呼出しにマ・ツビングしなおす。
They simultaneously remap core and extension function calls to the appropriate entry point calls.

これらの入口点呼出しは、スソテプ12に関して上記し
たように、関数にパスされるパラメータ型に応して、ダ
イレクト又はパケソト型のものとすることができる。
These entry point calls can be of the direct or packet type, depending on the parameter types passed to the function, as described above with respect to Susotep 12.

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

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

通信ドライバ211の特性は、それが幾つかのコマンド
系列を待ち行列状態にする能力を備え、非割当バソファ
リングシステムを可能にするという点である。通信ドラ
イバ211により使用される通信バソファ323の基本
形は、第5図に示す。
A characteristic of the communication driver 211 is that it has the ability to queue several command sequences, allowing a non-allocated buffering system. The basic form of the communication bus sofa 323 used by the communication driver 211 is shown in FIG.

基本エリアはコマンドバソファ510とデータバッファ
520であり、通信ドライバ211により実行されるハ
ンドシエイクルーチンと共に使用される。ポストとグラ
フィンクハードウエア間を交信するために使用される定
義済みメノセージは以下の通りである。
The basic areas are a command bus sofa 510 and a data buffer 520, which are used in conjunction with the handshake routines executed by the communication driver 211. The predefined messages used to communicate between the post and the graphics hardware are:

GSP ホスト間の通信メッセージ GSP  IDLE=0.GSPはコマンドを待機中。GSP Communication messages between hosts GSP IDLE=0. GSP is waiting for commands.

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

G S P  FINISIIED= 2 ; G S
 Pはコマンドを完了した。
G S P FINISIIED = 2; G S
P completed the command.

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

G S I)  ホスト間の通信メソセージHST  
IDLE=0;ホストはcspを待機中。
GSI) Communication message HST between hosts
IDLE=0; Host is waiting for csp.

HST  CMD  =1;ホストはセットアソブコマ
ンドレディ状態。
HST CMD = 1; The host is in the set-associate command ready state.

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

上記−INITコマンドはドライバ初期中に使用される
The -INIT command above is used during driver initialization.

再び第5図について述べると、メッセージフィールドを
使用してコマンドを次の如く処理する。
Referring again to FIG. 5, message fields are used to process commands as follows.

(1)  ホストは呼出し中の関数のパラメータをデー
タバソファ内に配置する。それと同時にこの関数のコマ
ンド識別子をコマンド識別フィールド内へ書込む。この
識別子はダイレクト法又はバケソト法の何れかと、呼出
し中の関数を含むDLMに対応するモジュール番号と、
D L M内の適当な関数を識別する関数番号とを用い
て実行中の人口点呼出しの型を指定する。その後、この
ホストはI{ S T  C M Dメッセージをメソ
セージフィールド内にセソトする。
(1) The host places the parameters of the function being called in the data bus sofa. At the same time, write the command identifier of this function into the command identification field. This identifier is either the direct method or bucket method, the module number corresponding to the DLM containing the function being called,
A function number identifying the appropriate function in the DLM is used to specify the type of population point call being executed. The host then inserts the I{ S T C M D message into the Message field.

(2)GSPはGSP  BUSYをGSPメソセージ
フィールド内にセントしてコマンドを実行する。
(2) GSP executes the command by placing GSP BUSY in the GSP message field.

+31GSPはホストメッセージフィールド内のCOM
MAND  PENDINGをクリアして、GSPメソ
セージフィールド内にC S P  FINISIIE
Dメソセジをセソトする・ (4)ホストはC S P  FINISIIEDメソ
セージをチェノクして、それをクリアした後、なんらか
の復Jibパラメータを読み取るか、バノファを再使用
する。
+31GSP is COM in the host message field
Clear MAND PENDING and enter CSP FINISIE in the GSP message field.
(4) The host checks the CSP FINISIIED message, clears it, and then reads some return Jib parameters or reuses the buffer.

ハンドシェイクは2ワードを使用して行われる。The handshake is performed using two words.

そのうちlワードはホストからのメソセージに対しての
もので、もう一つはGSPからのノソセジに対するもの
である。ホスl・はGSPからのメソセージをクリアす
る働きを行い、GSPはホストメノセージをクリアする
。このことによって1メノセージ肯定応答」や「肯定応
答確認」のタイプのメソセージをやりとりする必要なく
完全なハンドシェイクが確保できる。メモリが使用され
るため、システムは1時に活動可能なコマンド待ち行列
の数に限定されない。
One of the words is for the message from the host, and the other is for the message from the GSP. Host l. serves to clear messages from the GSP, and GSP clears host messages. This ensures a complete handshake without the need to exchange messages of the ``message acknowledgment'' or ``acknowledgment'' type messages. 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のRA.M内に常駐し、バヮーア・7ブ後
にロードされるが、このことは必要条件ではない.通信
ドライバ211と同様に、コマンド実行ルーチン221
は、インターフェースが異なるハードウェアシステムと
ボート接続できるように修飾することが可能である。
Referring again to FIG. 4, command execution routine 221 is generally a software program that receives data from host system 310 and instructs graph ink processor 321 to perform graph ink processing. In the normal case, the command execution routine 221 uses the RA. It resides in M and is loaded after the software, but this is not a requirement. Similar to the communication driver 211, the command execution routine 221
It is possible to modify the interface so that it can connect to different hardware systems.

コマント実行ルーチン221は通信ドライバ211に対
するスレーブとしてグラフィ・7クシステム310上で
ランし、ホストGSPハシドシェイキングのGSP側を
処理し、ホストにより送られるコマンドを受取り、それ
らがパケソト法コマンドであるかダイレクト法コマンド
であるかを判断し、それによって呼出された関数を呼出
す。グレイクトモードコマンドの場合、コマンド実行ル
ーチン221は、関数に対するパラメータデータの大域
的ポインタをセントアンプして、関数を呼出す。パケソ
トコマンドの場合、コマンド実行ル一チン221は、引
数ハンドラ44lbを呼出す。
The command execution routine 221 runs on the graphics system 310 as a slave to the communication driver 211 and handles the GSP side of the host GSP hasidic shaking, receiving commands sent by the host and determining whether they are Pakesoto commands or direct commands. determines whether it is a legal command and calls the function called by it. For great mode commands, the command execution routine 221 encrypts the global pointer of parameter data for the function and calls the function. In the case of a packet command, the command execution routine 221 calls the argument handler 44lb.

同ハントラ441bはダイレクト法と同一の大域的デー
タポインタを使用して上記説明したようにデータを配列
しなおす。コア原始関数とアセンブリa 3fi関数は
同一の方法で呼出すことができる。
The hunter 441b uses the same global data pointers as the direct method to rearrange the data as described above. Core primitive functions and assembly a3fi functions can be called in the same way.

引数ハントラ441aと441b内に含まれる引数ハン
ドラブログラムは特殊な引数をパスするプログラムで、
引数をホストシステム310のスタノク414から除去
してそれらをグラフィックシステム320ヘパスし、そ
れらがパスされた後にそれらをアセンブリしなおすこと
によって高水Y$M語のフォーマノトでグラフィソクシ
ステム320のスタノク423ヘブソシュできるように
するランクイムタスクを実行する。第4図の実施例では
、引数ハンドラは、システム310と320上に常駐し
、単方向通信用に設計される。然しなから、引数ハンド
ラどうしを対称形にすることtこよって2方向パラメー
タ交換を可能にすることもできることを理解すべきであ
る。その後、各々の引数ハントラは、バケソトを再構成
して1スタノクにプソシュすると共にそれらをスタソク
から分解することの両方を実行することができよう。更
に、統合型マルチブロセソサシステムの場合、システム
内の全プロセッサについて一個の引数ハンドラが存在す
るようにすることもできよう。がくしで、第4図では、
引数ハンドラ441aは通信ドライバ211にリンクさ
れ、スタック414と交信する。引数ハンドラ441b
はコマンド実行ルーチン221にリンクされ、スタック
423と連絡する。
The argument handler program included in the argument handlers 441a and 441b is a program that passes special arguments.
By removing the arguments from the host system 310's stanok 414 and passing them to the graphics system 320, and reassembling them after they have been passed, the graphics system 320's stanok 423 is created in a high-level format. To be able to run rank im tasks. In the embodiment of FIG. 4, the argument handlers reside on systems 310 and 320 and are designed for unidirectional communication. However, it should be understood that argument handlers can also be made symmetrical, thereby allowing two-way parameter exchange. Each argument hunter would then be able to both reassemble the buckets into one stanok and decompose them from the stanok. Furthermore, in the case of an integrated multiprocessor system, there could be one argument handler for all processors in the system. In Figure 4,
Argument handler 441a is linked to communication driver 211 and interacts with stack 414. Argument handler 441b
is linked to command execution routine 221 and communicates with stack 423.

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

ホス{・システム310のインクルードファイルは以下
の通りである。
The include files of the host system 310 are as follows.

extend.l+   拡張原始関数を呼出す。extend. l+ Call the extended primitive function.

graphics.h  バケソト法の場合に使用され
るデータ型を定義する。
graphics. h Define the data type used in the bucket method.

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

グラフインクシステム320用のインクルードファイル
225は以下の通りである。
The include files 225 for the GraphInk system 320 are as follows.

gspcxtend.h   拡張原始関数の外部宣言
gspglobals.b   大域的変数全ての外部
宣言gspregs.h    グラフィノクシステム
レジスタの定義 gspgraphics.h  コア原始関数全ての外
部宣言通信ドライバ211とコマンド実行ルーヂン22
1に関して先に示した如く、本発明の特徴は、それがハ
ードウエア依存性であるということである。この特徴は
、一部はコア原始関数224の一部であるインクヮイア
リ関数により実現され、通信ドライバ211やコマンド
実行ルーチン221の修飾を要しない。上記関数によっ
て、アプリケーションプログラムはグラフィンクシステ
ム320の構威を切断し、ビント表現によるピクセル深
度や、水平方向と垂直方向の解像度や、グラフィックシ
ステム上のランダムアクセスメモリ量の如き情報を復帰
させることができる。その後、アプリケーションプログ
ラムはその出力をスケーリングして任意のディスプレイ
解像度にフィットさせることができる. 表Aは2個の関数、geLconfigとset−co
nfigを使用してこのハードウエア依存特徴の一実施
例である。関数gelconfigは、ボードとモード
に特有の情報を全て含む構造を復帰させる。selco
nfig関数は、デフォルトグラフィックモードにパス
されるインデクスにより選択されるグラフィックモード
をセントする。その場合、ボードは次のset−con
figに対する呼出しが行われるまで残留する。
gspcxtend. h External declaration of extended primitive functions gspglobals. b External declaration of all global variables gspregs. h graphics system register definition gspgraphics. h External declaration communication driver 211 and command execution routine 22 for all core primitive functions
As indicated above with respect to 1, a feature of the invention is that it is hardware dependent. This feature is achieved in part by an inquiry function that is part of the core primitive functions 224 and does not require modification of the communication driver 211 or command execution routine 221. The above functions allow application programs to disconnect from the graphics system 320 and restore information such as bint pixel depth, horizontal and vertical resolution, and the amount of random access memory on the graphics system. can. The application program can then scale its output to fit any display resolution. Table A contains two functions, geLconfig and set-co
One example of this hardware dependent feature is using nfig. The function gelconfig restores a structure containing all board and mode specific information. selco
The nfig function sets the graphics mode selected by the index passed to the default graphics mode. In that case, the board will have the following set-con
It remains until a call to fig is made.

selconfigについて表Aを見ると、もしgra
phicsmode引数が妥当であるならば、関数は新
たなグラフィンクモードをセソトアノプし、適当なGS
Pレジスクを初期化する。もしiniLdra−フラグ
が真であれば、関数は作図環境を初期化する。
Looking at table A for selconfig, if gra
If the phicsmode argument is valid, the function sets the new graphics mode and sets the appropriate GS
Initialize P Regisc. If the iniLdra-flag is true, the function initializes the drawing environment.

「コア原始関数」は、サブプロセッサシステム中に永久
的にインスl一一ルされ常時ロード用に利用可能な基本
的関数である。これらのコア原始関数は、システム原始
関数とアブリゲーション原始関数との2つの基本的関数
型へグループ分けできる。システム原始関数は、サブシ
ステム初期化、出力、メモリ管理、通信、および拡張の
如き処理を実行する関数を含んでいる。後者のタイプの
システム原始関数である拡張関数は、本発明の方法と関
連して使用され、以下により詳細に論ずることにする。
"Core primitive functions" are basic functions that are permanently installed in the subprocessor system and available for loading at all times. These core primitives can be grouped into two basic functional types: system primitives and aggregation primitives. System primitives include functions that perform operations such as subsystem initialization, output, memory management, communication, and expansion. The latter type of system primitive function, an extension function, is used in connection with the method of the invention and will be discussed in more detail below.

アブリケーシジン原始関数は、もしそれが本発明を使用
してリンクされた場合、ホスト上を走るアプリケーショ
ンプログラムから呼出されて利用される。
A general purpose primitive function, if linked using the present invention, is called and utilized by an application program running on the host.

本発明の以下の説明は、第一義的にはCプログラミング
言語を対象としたものであるが、本発明を実施するため
のプログラミングは、C言語に固有のものではなく、本
文中に解説したプログラξング構造と関数は任意の高水
準言語へ容易に翻訳することができる。本発明を実施す
るために必要な実際の言語とプログラムは、本発明が実
施される特定のシステムに依存する。その特定のプログ
ラムは、本発明を検討した後に当該技術分野における通
常の技能を有するプログラマの能力の範囲内にあると考
えられる。
Although the following description of the present invention is primarily directed to the C programming language, the programming for implementing the present invention is not specific to the C language and is described in the text. Programming structures and functions 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. The particular program is believed to be within the ability of a programmer of ordinary skill in the art after reviewing the present invention.

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

第6図は、サブシステムプロセッサ用の拡張関数を開発
したいと欲しているプログラマの見地から本発明の方法
を図解したものである。これら拡張関数は、最終的にア
プリケーションプログラム内で呼出されてユーザに対し
て一定のタスクを実行する関数群より構威される。基本
的に、そのステソブは一組の拡張関数と、各関数に対す
るアドレス参照セクションをつくりだす。拡張関数をセ
クション参照とリンクすることによって一つのロードモ
ジュールがつくりだされ、同モジュールは、一部、現存
のコードにリンクされ、参照をランタイムに分解される
他のコードに任せることが可能になる。
FIG. 6 illustrates the method of the present invention from the perspective of a programmer who desires to develop extension functions for a subsystem processor. These extension functions consist of a group of functions that are ultimately called within an application program to perform certain tasks for the user. Basically, the Stesob creates 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 is partially linked into existing code, allowing references to be left to other code to be decomposed at runtime. .

本発明のリンクとロードのステップに関して、以下の記
述はこれらのタスクを実行するソフトウエアプログラミ
ングに共通な処理と構造に関するものである。殊に、リ
ンカは当該技術分野では周知のフォーマントである共通
のオブジェクトファイルフォーマソトでオブジェクトフ
ァイルをつくりだすものと想定される。このフォーマソ
1・は各モジュールがセクションと称される小さなコー
ドとデータのフ゛口・冫クを有するモジュラ−フ゛ログ
ラミングを有利にするものである。1セクションはlオ
ブジェクトファイルの最も小さな再配置可能な単位であ
って、最終的に、それがロードされるメモリ内に隣接す
る空間を占めることになろう。
Regarding the linking and loading steps of the present invention, the following description relates to processes and structures common to software programming to perform these tasks. In particular, it is assumed that the linker creates object files in a common object file format, a format well known in the art. This formatter 1 favors modular programming in which each module has small blocks of code and data called sections. A section is the smallest relocatable unit of an object file and will eventually occupy contiguous space in memory into which it is loaded.

COFFフォーマットによれば、拡張関数を数多くの高
水準言語のうちの一つ、又はアセンブラ言語で書くこと
ができる。然しなから、COFFは、再配置可能な、一
部リンクされた関数モジュールをつくりだすために十分
なオブジェクトフォーマノトのただ一つの形にすぎない
ことを理解すべきである。
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 formanote that is sufficient to create a relocatable, partially linked function module.

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

かかる方法の例はパケソト法とダイレクトアクセス法で
あり、両方とも同時係属出願中に解説されている.,(
「マルチプロセッサシステムにおけるソフトウエアパー
ティショニング」、「マルチブロセ・7サシステム用拡
張ソフトウエア関数」)関数が定義された後、それらは
集められ、コンパイル又はアセンブルされて一連の共通
のオブジェクトファイルの如き一定形のロード可能なコ
ドにリンクされる。ステソプl1の結果の例を一つあげ
ると、■yfuncs. objと称されるファイルで
あって、+wy−funclとIly−func2の2
つの関数を含む。
Examples of such methods are the Paquesoto method and the Direct Access method, both of which are described in co-pending applications. ,(
``Software Partitioning in Multiprocessor Systems'', ``Extended Software Functions for Multiprocessor Systems'') After functions are defined, they are collected and compiled or assembled into a fixed file such as a set of common object files. Linked to a loadable code of the form. One example of the results of Stesopl1 is ■yfuncs. A file called obj, +wy-funcl and Ily-func2.
Contains two functions.

本発明の利点は、拡張関数のモジュールが、それらを使
用するアプリケーションプログラムをつくりだす同じプ
ログラマによってつくりだすことができる点である。そ
のため、特定の1アプリケーションの実行中にロードさ
れて使用されるべきモジュールはそのアブリケーシヲン
により必要とされる関数を含むだけで足りる。更に、そ
の関数を呼出しそれをパラメータ化する方法は、プロセ
ッサどうしの間でのパラメータのパスに必要とされる何
れかの特殊技法に従ってプログラマが選択することがで
きる。
An advantage of the present invention is that modules of extension functions can be created by the same programmer who creates the application programs that use them. Therefore, a module to be loaded and used during the execution of a particular application need only contain 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 techniques required for passing parameters between processors.

ステップ112では参照セクションがつくりだされ、ス
テップ11lでつくりだされるモジュール内のそれぞれ
の拡張関数についてアドレス参照が宣言される。ステソ
ブ112の一例は次のプログラミングで、my−fun
cl とmy−func2の2個の関数を引用する。
In step 112, a reference section is created and address references are declared for each extension function in the module created in step 11l. An example of SteSob112 is the following programming, my-fun
Two functions are cited: cl and my-func2.

;外部引用 ゜globl−my−funcl+ −my−func
2;スタートセクション宣言 ・sect  ”.EXT’ ・long  劃y−funcl ;モジュール内のコ
マンド数O long  −my−func2 :モジュール内のコ
マmodule   ンド数1 ・tex t        ;エンドセクションコマ
ンド数は特定命令中で定義されるべきロートモジュール
内の関数を宣言する。これは関数を引用する手段を提供
する。殊に、一つの関数のコマンド番号は同関数を呼出
すアプリケーションプログラム内のファンクションコー
ル内に組込むことができる。引用セクションは、コンパ
イル又はアセンブルされて、例えばext. obj.
の如き共通のオブジェクトフォーマソ1・ファイルが生
成される。
;External citation゜globl-my-funcl+ -my-func
2; Start section declaration ・sect ”.EXT' ・long 劃y-funcl :Number of commands in the module O long-my-func2 :Number of commands in the module 1 ・text :The number of end section commands is specified in the specific instruction Declare a function in the root module that should be defined in the root module.This provides a means of referencing the function.In particular, the command number of one function can be included in a function call in the application program that calls the function. The cited section can be compiled or assembled into, for example, ext.obj.
A common object format file such as 1 is generated.

ステソブ113では、ステソプ111でつくりだされた
モジュールを、ステップ112でつくりだされたセクシ
ョンとが一部リンクされて一つのロードモジュールが形
成される。このリンクステップはモジュール内の関数間
に引用値を分解するが、上記モジュールは、モジュール
外部の関数を引用する又は同関数によって引用される関
数を含むことができることを理解されたい。もし外部引
用が存在すれば、そのリンキングは部分的にしかすぎず
、その引用は未解決であることになる。
In the STEP 113, the module created in the STEP 111 is partially linked with the section created in step 112 to form one load module. Although this linking step separates reference values between functions within a module, it should be understood that the module may include functions that reference or are referenced by functions outside the module. If an external citation exists, the link is only partial and the citation is unresolved.

部リンクされたファイルは配置替え情報と記号情報を備
えていなければならない。一部リンキングは出力セクシ
ョンの形成に関係し、配分には関係しない.割当て、束
縛、メモリ指令は全て次のリンクでのランタイム時に実
行される。
Partially linked files must have relocation information and symbolic information. Some linking is related to the formation of output sections and not to their distribution. All allocations, bindings, and memory directives are 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. The unresolved quotation is outside of the module already stored within the subprocessor system, and the quotation function has no address for it. An essential feature of the linker used in step 113 is that it allows calls to functions to be made that are unresolvable until runtime. Figure 2,
As described below with respect to FIGS. 3 and 4, when a function is loaded into the memory of the subprocessor system,
These citations will be resolved. The dynamic linker resolves the call by inserting the address into the code.

以下は、リン力を一個有するコンピュータを使用してス
テノプ113を実行するためのコマンドの一例である。
The following is an example of a command for running Stenop 113 using a computer with one phosphor.

その場合、ステップ111中で定義された2つの関数と
、ステノプ112でつくりだされたセクションとがリン
クされることになっている。一例として、リンカは以下
のコマンドで呼出される。
In that case, the two functions defined in step 111 and the section created in step 112 are to be linked. As an example, the linker is invoked with the following command:

link LOAD. MOD ayfuncs. o
bj ext. objその粘果はLOAD. MUD
と題する再配置可能なロードモジュールで、ステップ1
11と112でつくりだされたオブジェクトモジュール
の組合せである。
link LOAD. MOD ayfuncs. o
bj ext. objThe ooze is LOAD. MUD
Step 1 with a relocatable load module entitled
This is a combination of object modules created by 11 and 112.

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

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

本発明のダイナミソクダウンロ一ド法のステップは、第
7図に示す。一般的にいって、上記方法は、ホストプロ
セッサシステム310をサブプロセッサシステム320
へ一組の拡張関数をロードし、この時未解決な拡張関数
の引用をリンクするステップより構成される。
The steps of the dynamic download method of the present invention are shown in FIG. Generally speaking, the above method connects host processor system 310 to sub-processor system 320.
The process consists of loading a set of extension functions into a file and linking any unresolved extension function citations.

まづ、ステソプ141−43では、グイナミソクリンカ
224はそれが必要とする2個のファイル、即ち、記号
テーブルファイル225と、先にリンクされたオブジェ
クトファイル216のように現在メモリ210内にス1
・アされたロードモジュール215とが存在することを
チェソクする。
First, in the steps 141-43, the linker 224 stores the two files it needs, namely the symbol table file 225 and the previously linked object file 216 currently in the memory 210.
- Check that the loaded module 215 exists.

記号テーブルファイル225は、コア原始関B222内
の記号テーブル関数によって維持され、サブプロセソサ
システム320のメモリ220に既にロードされた関数
と、それぞれの関数について関連するメモリアドレスを
表現する記号情報を格納する。かくして、もし先につく
りだされたロードモジュールが使用される場合には、そ
れらはロードされ、それらの記号とアドレスは記号テー
ブルファイル225内に配置される必要がある。
The symbol table file 225 is maintained by the symbol table function in the core primitive function B 222 and stores symbol information representing the functions already loaded into the memory 220 of the subprocessor system 320 and the associated memory address for each function. do. Thus, if previously created load modules are used, they need to be loaded and their symbols and addresses placed in the symbol table file 225.

かくして、本発明の方法を実行するに先立ち、記号テー
ブルファイル225は、ロードモジュール215外部の
関数を表わす。即ち、それらはロードモジュール215
内で定義されない。このタスクを実行する記号テーブル
関数の例は次のC言語関数である. inL create...symbol−file(
name)char far ” name ; 但し、nameは関数を含むファイルの通路名である。
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 load modules 215
Not defined within. An example of a symbol table function that performs this task is the following C language function. inL create. .. .. symbol-file(
name) char far ” name ; However, name is the path name of the file containing the function.

記号とそれらの各々の絶対アドレスは、それらが続くロ
ーダの呼出し中にアクセスできるような具合にストアさ
れる. 記号テーブルファイル225のインテグリティを確保す
るために、ダイナミソクリンカ224は、コマンド実行
ルーチン221に対して制限呼出しを実行し、上記ルー
チン221は特殊でコアシステム原始関数を使用してサ
ブプロセソサシステムメモリ220内に先にインストー
ルされたモジュールの状態について間合わせる。このス
テソブの目的は、かかるモジュールと記号テーブルファ
イル225内のモジュール記号との間の畢離が存在する
かどうかを判断することである。もし存在すれば、記号
テーブルファイル225は、それに従って調節される。
The symbols and their respective absolute addresses are stored such that they can be accessed during subsequent invocations of the loader. To ensure the integrity of the symbol table file 225, the dynamic linker 224 makes a restricted call to the command execution routine 221, which uses special core system primitives to access subprocessor system memory. 220 and the status of the previously installed module. The purpose of this SteSob is to determine whether a discrepancy exists between such modules and the module symbols in the symbol table file 225. If present, symbol table file 225 is adjusted accordingly.

もし存在しなければ、エラーメノセージがユーザに対し
て伝達される。
If not, an error message is communicated to the user.

ステノプ144では、ダイナ旦ソクリンカ224は、所
望のロードモジュールオブジェクトファイル216に対
して必要とされるメモリサイズを取得ずる。上記リンカ
はコアシステム原始関数から特殊な割当て関数を呼出し
てロードモジュールを格納するに十分な大きなのメモリ
ブロンクを取得する。かかる割当て関数を表わすコマン
ドの例は以下の通りである。
At step 144, 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 primitives to obtain a memory block large enough to store the load module. An example command representing such an allocation function is as follows.

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

ステップ145−46において、ダイナミックリンカ2
24は、サブブロセソサシステム320により実行され
るオブジェクトファイルを実行可能なイメージファイル
226内へ結合するというその第一次的な任務を実行ず
る。ダイナミソクリンカ224が実行可能ファイル22
6をつくりだすと、オブジェクトファイル216をメモ
リ220ヘロードし、外部引用を解決する。そうする際
、上記リン力は、アプリケーション原始ファイル223
と共にロードファイル216を入力として受取る。殊に
、グイナミソクリンカ224は所望のCOFFセクショ
ンをサブシステムのメモリマップ内へ再配置する。先に
未解決の外部関数即ち、ロードモジュール215内で定
義されなかった関数に対する参照を解決するために、ダ
イナミソクリンカ224は記号テーブルファイル225
を参照してその関数を表わす記号を発見する。その後、
ダイナミソクリンカ224はロードモジュール216内
の引用を引用された関数のアドレスと置換する。このよ
うにして、ダイナミックリンカ224は、ロードモジュ
ール216の引用セクション内にリストされた全ての拡
張関数をサブプロセソサシステム320内にロードされ
たその他のコードにリンクする。同様にして、ダイナミ
ックリンカ224はロードモジュール2 1 6内で定
義された関数を表わす記号を記号テーブルファイル22
5へ付加することによって、続い“ζインストルされた
ロードモジュールがロードモジュール216ヘアクセス
できるようになっている。
In steps 145-46, dynamic linker 2
24 performs its primary task of combining object files to be executed by sub processor system 320 into executable image file 226. Dynamiso linker 224 is executable file 22
6, the object file 216 is loaded into the memory 220 and external references are resolved. In doing so, the above linking force
and a load file 216 as input. In particular, the linker 224 relocates the desired COFF section into the subsystem's memory map. In order to resolve references to previously unresolved external functions, that is, functions that were not defined within the load module 215, the dynamic linker 224 uses the symbol table file 225.
to find the symbol representing that function. after that,
Dynamisolinker 224 replaces references in load module 216 with the address of the referenced function. In this manner, dynamic linker 224 links all extension functions listed in the cited section of load module 216 to other code loaded within subprocessor system 320. Similarly, the dynamic linker 224 transfers symbols representing functions defined in the load modules 2 1 6 to the symbol table file 22.
By adding "ζ" to "5", the subsequently installed load module can access the load module 216.

概して、ステップ146をリンクするプログラミング方
法は、一プロセソサシステムの場合に使用されるその他
のダイナミソクリンクツールのそれと同様なプログラ鑓
ング手法を使用する。いうまでもなく、それらのシステ
ムは本発明によって行われるような2個のプロセッサシ
ステムどうしを関連づけるという余分な任務を必要とし
ない.ステップ147でロードモジュール216がメモ
リ220内にロードされ終った後に、ダイナミックリン
カ224は、ロードモジュールの参照セクション内の情
報を活用してモジュール内の関数がアプリケーションプ
ログラム212から呼出すことができるようにする。殊
に、グイナミソクリンカ224はコマンド実行ルーチン
221により使用される拡張関数アドレスを表わすテー
ブル(図示せず)を構築する。
In general, the programming method for linking step 146 uses programming techniques similar to those of other dynamic linking tools used in single processor systems. Needless to say, those systems do not require the extra task of correlating two processor systems together as is done by the present invention. After load module 216 has been loaded into memory 220 in step 147, dynamic linker 224 utilizes information in the reference section of the load module to enable functions within the module to be called by application program 212. . In particular, the linker 224 constructs a table (not shown) representing extended function addresses used by the command execution routine 221.

ステップ148では、グイナミソクリンカ224は、現
在、アプリケーションプログラムによって必要とされな
い関数でメモリ220ヘロードされたものが存在するか
どうか判断する。もし存在するならば、これらの関数は
活動中のメモリから廃棄される. 最後に、ステソブ149において、ダイナミソクリンカ
224は、モジュール識別子をアプリケーションプログ
ラムへ復帰させる.上記モジュール識別子はアプリケー
ションプログラム212から拡張関数に対する呼出しに
際して使用され、それらの関数を呼出す。例として、モ
ジュール識別子は第1図に関して論じた参照セクシヲン
中のモジュール数と同一とすることができる。ステソブ
148は一個以上のモジュールがサブプロセッサシステ
ム320上にロードされることになっている場合に有益
である。
In step 148, the linker 224 determines whether there are any functions currently loaded into the memory 220 that are not needed by the application program. If present, these functions are discarded from active memory. Finally, in step 149, the dynamic linker 224 returns the module identifier to the application program. The module identifier is used when the application program 212 calls extended functions, and calls those functions. As an example, the module identifier may be the same as the number of modules in the reference section discussed with respect to FIG. Stesob 148 is useful when one or more modules are to be loaded onto subprocessor system 320.

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

int installlm(1++−nan+e)c
har for ”lm−nan+e ;但し、lm−
nameはロードモジュール名である。上記ステソプに
続いて、この関数は、ロードモジュール名により指定さ
れるロードモジュールは何れもインストールしてモジュ
ール識別子を復帰させる。
int installm(1++-nan+e)c
har for “lm-nan+e; However, lm-
name is the load module name. Following the steps above, this function installs any load module specified by the load module name and restores the module identifier.

ひとたびロードモジュール216がダウンロードされリ
ンクされると、マルチプロセッサシステムのランタイム
処理は2個のプロセッサシステム間の一定種類のパラメ
ータパス手法の使用を喚起する。第1図に関して上記し
た如く、このことは引数データと復帰データがプロセン
サシステム間を転送され両プロセッサ311と321と
によって理解できるように設計された特殊関数定義と呼
出しと共にプログラミング段階で行うことができる。
Once the load module 216 is downloaded and linked, runtime processing of the multiprocessor system calls for the use of certain types of parameter passing techniques between the two processor systems. As discussed above with respect to FIG. 1, this can be done at the programming stage 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. can.

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

本発明の代替例では、拡張関数ではなく、アプリケーシ
ョンプログラムにより使用される割込みサービスルーチ
ンがマルチブロセソサシステムに追加される。第1図に
示す方法は、ロードモジュールが割込みサービスルーヂ
ンを格納する点を除いては本質上同一である。後者は、
サブシステムの割込みハンドラを介して割込みを受ける
とすぐ呼出される。ステソプ12では、モジュール内の
全ての割込みサービスルーチンについて2つの人口を含
む参照セクションがつくりだされる。これらの人口は割
込みサービスルーチンに対するアドレス参照と、同ルー
チンの割込み数を指定する。
In an alternative embodiment of the invention, interrupt service routines are added to the multiprocessor system for use by application programs rather than extension functions. The method shown in FIG. 1 is essentially the same except that the load module stores the 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 populations for all interrupt service routines in the module. These populations specify address references to interrupt service routines and the number of interrupts for that routine.

例えば、+*y−inflとmy− inf2の2個の
ルーチンがステンプ11のモジュール内に格納されてい
る場合、セクション宣言は以下のようになろう。
For example, if two routines, ++y-infl and my-inf2, are stored in the temp11 module, the section declaration would be as follows.

;外部参照 ・globLmy−infl, −IIIy−inf2
;スタートセクション宣言 ・secf  ”.ISR” ; ong  −鎮y−infl ong    −my−infl ong   1   ;割込み数1 0ng  −s+y−inf2 ong   2   ;割込み数2 ・text      i エンドセクション割込みサ
ービスルーチンを追加することに関連するロードタイム
方法もまた、第2図に関して上記したものと本質上同一
である。もう一つ余分に考慮すべき点は、各ルーチンと
関連する優先順位の情報がモジュールの擾先1頑位リス
トにアクセスすることによって検索可能なことである。
;External reference・globLmy-infl, -IIIy-inf2
;Start section declaration・secf ".ISR";ong -stop y-infl ong -my-infl ong 1;number of interrupts 1 0ng -s+y-inf2 ong 2;number of interrupts 2 ・text i Add end section interrupt service routine The associated load time method is also essentially the same as that described above with respect to FIG. Another additional consideration is that the priority information associated with each routine can be retrieved by accessing the module's destination list.

かくして、同じ割込みレベルに鎖状結合された割込みサ
ービスルーチンは特別にアクセス又は参照可能となる。
Thus, interrupt service routines chained to the same interrupt level can be specially accessed or referenced.

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

l. ホストブロセソサシステムとグラフィンクプロセ
ソサシステムを共に備え、ホスト上を走るメインプログ
ラムにより呼出され上記グラフィソクブロセソサにより
実行可能な関数を拡張するためのマルチブロセソサシス
テムにおいて使用される方法において、 上記グラフィックプロセノサにより実行されるサブプロ
グラムをつくりだし、 上記サブプログラムを定義することによってその引数が
ランタイム時に上記グラフィソクブlコセソサシステム
にパスできるようにし、上記メインプログラム内のサブ
プログラムに対してサブプログラムにより使用されるパ
ラメータを含む呼出しを宣言し、 上記サブプログラムをコンパイルして上記グラフィック
プロセッサシステム上で実行し、上記サブプログラムを
上記グラフィンクプロセノサシステムヘロードし、 上記ザブプログラムを上記グラフィックプロセッサシス
テム上にロードされる他のコードにリンクする、 ステップより或る前記方法。
l. A method used in a multi-processor system that includes both a host processor system and a graphics processor system and for extending functions called by a main program running on a host and executable by the graphics processor system. , create a subprogram to be executed by the above graphics processor, define the above subprogram so that its argument can be passed to the above graphics processor system at runtime, and perform the following for the subprogram in the above main program: declare a call containing the parameters used by the subprogram, compile and run the subprogram on the graphics processor system, load the subprogram into the graphics processor system, load the subprogram into the graphics processor system, load the subprogram into the graphics processor system, load the subprogram into the graphics processor system, Linking to other code loaded on the processor system.

2, ホスl・プロセソサシステムとグラフイソクブロ
センサシステムを備えることによって上記ホストコンピ
ュータ上を走るメインプログラムによって呼出されグラ
フィックプロセンサによって実行される拡張関数を実行
するマルチプロセッサコンピュータシステムを使用する
方法において、 上記拡張関数を上記グラフィックプロセッサシステムヘ
ロードし、 上記メインプログラムから上記拡張関数を呼出し、 上記ホストシステムから上記グラフイノクシステムへ上
記拡張関数の引数をパスし、上記拡張関数を上記グラフ
ィックプロセソサによって実行する、ステソプより成る
前記方法。
2. In a method using a multiprocessor computer system comprising a host processor system and a graphic processor system to execute extended functions called by a main program running on the host computer and executed by the graphic processor. , Load the extension function into the graphics processor system, call the extension function from the main program, pass the argument of the extension function from the host system to the graphinoku system, and execute the extension function by the graphics processor. Said method comprising steps of carrying out.

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

4, ホストプロセソサシステムとグラフィックプロセ
ッサシステムを備え、ホストシステム上を走るメインプ
ログラムにより呼出されグラフインクブロセソサにより
実行される拡張関数を実行するマルチプロセッサコンピ
ュータシステムと共に使用されるソフトウエアインター
フェースにおいて、 上記拡張関数を上記グラフィックプロセッサシステム上
にロードされた他のコードヘダイナξ・ノクにダウンロ
ードしリンクするリンカと、上記ホストシステムから引
数を受取り、上記拡張関数を識別し、上記拡張関数を呼
出すコマンド実行ルーチンと、から威り、 上記コマンド実行ルーチンとリンカとが一体となったツ
ールの集合を備え、拡張関数をダイナミックにダウンロ
ードしてそれらの引き数を上記ホストプロセッサシステ
ムから受取る前記インターフェース. 5. ホストプロセッサとサブプロセッサとを備えるマ
ルチプロセッサシステム内にサブシステムプロセッサの
メモリにロードされる拡張関数を追加する方法において
、 上記サブプロセンサにより実行さるべき少なくとも一つ
の関数を備えるロードモジュールをプログラミングし、 上記ロードモジュールに対する再配置可能なアドレス引
用を含む上記モジュールの引用セクションをつくりだし
、 上記ロートモジュールを部分的にリンクして内部引用が
全て解決され、外部引用が未解決のまま残されることに
よって上記ロードモジュールがランタイム時に完全にリ
ンクできるようにする、ステップより或る前記方法。
4. In a software interface for use with a multiprocessor computer system comprising a host processor system and a graphics processor system and executing extension functions called by a main program running on the host system and executed by a graphics processor, A linker that downloads and links the extension function to other code headers loaded on the graphics processor system, and a command that receives arguments from the host system, identifies the extension function, and calls the extension function. an execution routine, and a set of tools that combine the command execution routine and a linker, and the interface dynamically downloads extension functions and receives their arguments from the host processor system. 5. A method for adding an extension function to be loaded into the 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 citation section for the above module that contains relocatable address citations to the load module, and partially link the above load module so that all internal citations are resolved and external citations are left unresolved so that the load module The method further comprises the steps of: enabling complete linking at runtime.

6. サブシステムプロセソサにより実行さるべき拡張
関数をロードすることによって同関数がホストプロセッ
サシステム上を走るアプリケーションプログラムから呼
出せるようにするマルチブロセソサシステムにおいて使
用される方法において、 上記サブプロセノサシステム内のメモリを上記拡張関数
の定義を含むロードモジュールに対して割当て、 上記ロードモジュールを上記サブプロセソサシステムに
ロードし、 上記ロードモジュールを上記サブプロセソサシステムに
ロードされる他のコードにリンクすることによって上記
ロードモジュールの未解決の引用が解決されるようにす
る、 ステップより威る前記方法。
6. In a method used in a multiprocessor system in which an extension function to be executed by a subsystem processor is loaded so that the same function can be called from an application program running on a host processor system, allocating memory for a load module containing the definition of the extension function, loading the load module into the subprocessor system, and linking the load module with other code to be loaded into the subprocessor system. The above method, which is more powerful than the above step, causes unresolved citations of the above load module to be resolved by.

7.拡張関数をサブプロセッサシステムヘロードしリン
クすることによって上記関数がホストプロセッサシステ
ム上を走るアプリケーションプログラムと共に使用可能
になったマルチプロセッサコンピュータシステムにおい
て、プログラマブルホストプロセッサと、 上記ホストプロセッサによりアクセス可能なメモリ、よ
り成り、 上記サブプロセッサが上記ホストプロセソサのメモリ内
ヘロードされる拡張関数を上記第2のプロセンサのメモ
リへダウンロードして上記拡張関数を上記サブプロセッ
サ上にロードされた他のコードにダイナミソクにリンク
するようにプログラミングされる前記システム。
7. a programmable host processor; a memory accessible by the host processor; The sub-processor downloads the 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. said system programmed to do so.

8. ホストプロセッサシステム上を走るアプリケ一シ
ョンプログラムのロード中にサブシステムブロセノサに
より実行されべき拡張関数を上記サブシステムブロセソ
サの他のコードにリンクするためのマルチブロセソサシ
ステム中に使用されるグイナミソクリンカプログラ旦ン
グ機構において、 」二記アフ゜リケーシヲンフ゜ログラムのロードに呼応
して実行開始の呼出しを受取る入口点と、上記拡張関数
を含むロードモジュールのメモリサイズを取得する命令
と、 上記ホストのメモリから上記サブプロセッサシステムの
メモリ内へ上記ロードモジュールを再配置するための命
令と、 上記ロードモジュール外部の関数に対する未解決の参照
を解決するための命令と、より成り、上記入口点と命令
とが上記サブシステムプロセソサにより実行可能な一つ
の構文と文とへ構成される前記機構。
8. Used in multiprocessor systems to link extension functions to be executed by a subsystem processor to other code in the subsystem processor during loading of an application program running on a host processor system. 2. An entry point that receives a call to start execution in response to the loading of the application program described above, an instruction that acquires the memory size of the load module that includes the extension function, and the above-mentioned host. an instruction for relocating the load module from the memory of the subprocessor system into the memory of the subprocessor system; and an instruction for resolving unresolved references to functions external to the load module; and is constructed into a syntax and statement executable by the subsystem processor.

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 above interface is made up of software resident on the host system side and the graphics system side, and operates at runtime so that the above functions can be called from the main program running on the host. The function's arguments are passed to the graphics system so that the function is executed by the graphics processor.

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

第1図はグラフインクサブシステムの機能性を拡張段階
を示すフローダイアグラム、 第2図はホストプロセッサとグラフインクプロセッサを
有するコンピュータシステムを使用するステップを示す
フローダイアダラム、 第3図はホストプロセッサとグラフインクブロセソサヲ
有スるマルチブロセソサコンビュータシステムのブロソ
ク線図、 第4図は第3図のマルチプロセソサシステムと共に使用
されるソフトウエアインターフェースを示すブロノク線
図、 第5図はホストブロセソサとグラフィックプロセノサ間
の通信用に使用される通信バンファの構造を示す図、 第6図は、サブプロセッサシステムに共も使用される拡
張関数を格納するモジュールをつくりだすステップを示
す図 第7図は拡張関数を第1のプロセソサから第2のプロセ
ソサヘロードし、未解決の参照をグイナミソクにリンク
するステップを示す図。 212・・・アプリケーションプログラム、211・・
・通f3ドライハ、216・・・オブジェクトファイル
、215・・・拡張関数、233・・・コアアプリケー
ション原始関数、224・・・ダイナミソクリンカ、2
25・・・インクルードファイル、222・・・コアシ
ステム原始関数、423・・・スタック、323・・・
バソファ● 表AI get−configの構文 typedef  struct { 夏ong  drsp−pHch  ;shorL d
isp−vres  ;short dispJres
  ; short screen−wide  ;short
 screenJigh  :short disp−
psize  ;long pixeLmask  ; short palet−gun−depLh  il
ong  paleLsize  ;short pa
let−inset  ;short  nu麟一pa
ges  ;short nun−offscrn−a
reas  ;long wksp−addr  ; long wksp−pitch  :}  MODE
INFO ; typedcf struct { long comm−buff−size ;shor
t nun−modes  ;short curre
nt−mode Slong program−mem
−start ;1oB progra+i−mem−
end ;long display−meal−st
art ;long display−mem−end
 ;long stack−size ; long shared−sew−size :cha
r for ”shared−host−addr ;
PTR shared−gsp−addr ;MODE
INFO tmode  ; )co肝XG; void get−config (config)C
ONFIG far ” config ;上記の構造
定義におけるフイーノレト′ムよ次の通りであるO comm−buff−size :通信ノN7ファのノ
Xイトサイズ.nun+−a+odes  : アプリケーションは、送られ たデータがこのバソファをオ ーバーフローさせない必要が ある.これは、グラフィソク プロセフサにダウンロードさ れるデータの大きさをチェッ クしない命令に関して有益で ある。 異なる表示セソトアップ間をスイ ッチングするグラフィソクボード 用の拡張モード数 表A2 curren lmode:現在操作モードに対応する
モード数 program−mem−start:プログラムメモ
リのスタートアドレス program−mem−end :プログラムメモリ
のエンドアドレス display−meIII−start:ディスプレ
イメモリのスタートアドレス display劃em−end:ディスプレイメモリの
エンドアドレス stack−size:デフォルトスタソクサイズsh
’are−mem−size:使用すべきアプリケーシ
ョンに利用可能な共用メモリのバ イトサイズ shareJost−addr: もしshare−m
eIll−sizeがゼロでなければ、これは共用メモ リのホストメモリ中のスター トアドレスである。 share4sp−addr+ もしshare−+a
em−sizeがゼロでなければ、これは共用メモリの GSPメモリのスタートアドレ スである。 djsp−pitch:  ディスプレイピッチ、即ち
、2本の走査線間の線間差のビソト表示 disp−vres:走査線の垂直解像度dispJr
es: ピクセルの水平方向解像度screen−wt
de: モニタの幅と高さ(ミリメートル単位〉 screenJigh: disp−psfze:  ビクセルサイズpixel
s+ask:  1ピクセルに使用されるビットのマス
ク。通常2の(dis− psize−1)乗の値を含
むことになろう。ピクセ ルデータの全ビットが妥当であるこ とを示す。 palet−gun−depth:バレソト内のガンあ
たりビッ1・数 palelsize:パレット内の人口の数pa Ie
 t− inse t 二大抵のシステムの場合、この
フィールドは零となろう。しかし、フレー ムバッファ内にパレットをストアす るシステムの場合には、これは走査 線の開始から第1のピクセルデータ へ至るオフセットとなる。 表A3 nun−pages:多重バッファシステムの表示ペー
ジ数num−offscreen:利用可能なオフスク
リーンメモリブロックの数。もしゼロでなければ オフスクリーンアレイ用の空間を割 当てるために使用される。上記アレ イはもう一つの関数(geloffscreensew
.)に対する呼出しを介してGSPから得ることができ
る。 wksp−addr:オフスクリーンワークスペースエ
リアのメモリ中における開始線形アド レス wksp−pitch:オフスクリーンワークベースエ
リアアのピンチ.もしピッチが0ならば、 オフスクリーンワークスペースは割 当てられない。 Set−contigの構文 int seLconf)g (graphics−m
ode+ init−draw)short grap
hics−mode;short inildraw 
; 第4図 第5図 第6図 第7図
FIG. 1 is a flow diagram illustrating the steps in extending the functionality of the GraphInk subsystem; FIG. 2 is a flow diagram illustrating the steps for using a computer system having a host processor and a GraphInk processor; FIG. Figure 4 is a diagram showing a software interface used with the multiprocessor system of Figure 3; Figure 5 is a diagram showing the software interface used with the multiprocessor system of Figure 3; Figure 6 shows the structure of a communication buffer used for communication between graphics processors; Figure 6 shows the steps for creating a module that stores extension functions that are also used in subprocessor systems. FIG. 3 is a diagram illustrating the steps of loading a function from a first processor to a second processor and linking unresolved references to Guinamisoku; 212...Application program, 211...
- General f3 dryer, 216... Object file, 215... Extension function, 233... Core application primitive function, 224... Dynamiso linker, 2
25... Include file, 222... Core system primitive function, 423... Stack, 323...
Basofa ● Table AI get-config syntax typedef struct { summer ong drsp-pHch ; shorL d
isp-vres ; short dispJres
;short screen-wide ;short
screenJigh: short disp-
psize ; long pixelLmask ; short palet-gun-depLh il
on paleLsize ; short pa
let-inset; short nu Rinichi pa
ges; short nun-offscrn-a
reas; long wksp-addr; long wksp-pitch:} MODE
INFO ; typedcf struct { long comm-buff-size ; shor
short curve
nt-mode Slong program-mem
-start ;1oB progra+i-mem-
end ;long display-meal-st
art ;long display-mem-end
;long stack-size ;long shared-sew-size :cha
r for “shared-host-addr;
PTR shared-gsp-addr ;MODE
INFO tmode;)coLiverXG;void get-config (config)C
ONFIG far” config; The file size in the above structure definition is as follows. Must not overflow. This is useful for instructions that do not check the size of the data downloaded to the graphics processor.Extended mode numbers for graphics boards that switch between different display settings Table A2 curren lmode: Number of modes corresponding to the current operation mode program-mem-start: Program memory start address program-mem-end: Program memory end address display-meIII-start: Display memory start address display-meIII-start: Display memory start address display-meIII-start: Display memory start address End address stack-size: Default stack size sh
'are-mem-size: Size in bytes of shared memory available to the application to use shareJost-addr: If share-m
If eIll-size is non-zero, it is the starting address in host memory of shared memory. share4sp-addr+ if share-+a
If em-size is non-zero, it is the starting address of the shared memory GSP memory. djsp-pitch: display pitch, i.e. bisodic display of the line-to-line difference between two scanning lines disp-vres: vertical resolution of scanning lines dispJr
es: horizontal resolution of pixels screen-wt
de: Width and height of the monitor (in millimeters) screenJight: disp-psfze: Pixel size pixel
s+ask: Mask of bits used for one pixel. It will usually contain a value of 2 to the power of (dis-psize-1). Indicates that all bits of pixel data are valid. pallet-gun-depth: Number of bits per gun in Valesotopalelsize: Number of population in pallet pa Ie
For most systems, this field will be zero. However, for systems that store palettes in the frame buffer, this is the offset from the start of the scan line to the first pixel data. Table A3 nun-pages: Number of display pages in multiple buffer system num-offscreen: Number of available off-screen memory blocks. If non-zero, it is used to allocate space for off-screen arrays. The above array has another function (geloffscreen
.. ) from the GPS. wksp-addr: Starting linear address in memory of off-screen workspace area wksp-pitch: Pinch of off-screen workbase area. If pitch is 0, no off-screen workspace is allocated. Set-contig syntax int seLconf)g (graphics-m
ode+ init-draw) short grab
hics-mode; short inildraw
; Figure 4 Figure 5 Figure 6 Figure 7

Claims (1)

【特許請求の範囲】[Claims] (1)ホストプロセッサシステムとグラフィックプロセ
ッサシステムとを共に備え、ホスト上を走るメインプロ
グラムにより呼出され 上記グラフィックプロセッサにより実行可能な関数を拡
張するためのマルチプロセッサシステムにおいて使用さ
れる方法において、 上記グラフィックプロセッサにより実行されるサブプロ
グラムをつくりだし、 上記サブプログラムを定義することによってその引数が
ランタイム時に 上記グラフィックプロセッサシステムにパスできるよう
にし、 上記メインプログラム内のサブシステムに対してサブプ
ログラムにより使用されるパラメータを含む呼出しを宣
言し、 上記サブプログラムをコンパイルして上記グラフィック
プロセッサシステム上で実行し、上記サブプロセッサを
上記グラフィックプロセッサシステムへロードし、 上記サブプログラムを上記グラフィックプロセッサシス
テム上にロードされる他のコードにリンクする、 ステップより成る前記方法。
(1) A method used in a multiprocessor system that includes both a host processor system and a graphics processor system, and for expanding functions called by a main program running on the host and executable by the graphics processor, comprising: Create a subprogram that is executed by , define the above subprogram so that its arguments can be passed to the above graphics processor system at runtime, and specify the parameters used by the subprogram for the subsystem within the above main program. compiling and executing said subprogram on said graphics processor system, loading said subprocessor onto said graphics processor system, and causing said subprogram to be loaded on said graphics processor system; Said method comprising the steps of 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,491 US5247678A (en) 1989-10-12 1989-10-12 Load time linker for software used with a multiprocessor system
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

Publications (2)

Publication Number Publication Date
JPH03208187A true JPH03208187A (en) 1991-09-11
JP3051438B2 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)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005322224A (en) * 2004-05-03 2005-11-17 Microsoft Corp System and method for providing enhanced graphics pipeline
JP2008518355A (en) * 2004-10-28 2008-05-29 株式会社ソニー・コンピュータエンタテインメント How to integrate multiple object files from heterogeneous architectures into a set of files
JP2010061648A (en) * 2008-09-04 2010-03-18 Internatl Business Mach Corp <Ibm> Method and device for data processing in hybrid computing environment, and program
US9064334B2 (en) 2004-05-03 2015-06-23 Microsoft Technology Licensing, Llc Systems and methods for providing an enhanced graphics pipeline
CN111190658A (en) * 2020-01-08 2020-05-22 乐鑫信息科技(上海)股份有限公司 System for supporting dynamic loading of application program on SoC (system on chip) without MMU (memory management unit) based on-chip execution

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005322224A (en) * 2004-05-03 2005-11-17 Microsoft Corp System and method for providing enhanced graphics pipeline
US9064334B2 (en) 2004-05-03 2015-06-23 Microsoft Technology Licensing, Llc Systems and methods for providing an enhanced graphics pipeline
JP2008518355A (en) * 2004-10-28 2008-05-29 株式会社ソニー・コンピュータエンタテインメント How to integrate multiple object files from heterogeneous architectures into a set of files
JP2010061648A (en) * 2008-09-04 2010-03-18 Internatl Business Mach Corp <Ibm> Method and device for data processing in hybrid computing environment, and program
CN111190658A (en) * 2020-01-08 2020-05-22 乐鑫信息科技(上海)股份有限公司 System for supporting dynamic loading of application program on SoC (system on chip) without MMU (memory management unit) based on-chip execution
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

Also Published As

Publication number Publication date
JP3051438B2 (en) 2000-06-12

Similar Documents

Publication Publication Date Title
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
US5247678A (en) Load time linker for software used with a multiprocessor system
US6789254B2 (en) Java classes comprising an application program interface for platform integration derived from a common codebase
Cmelik et al. Shade: A fast instruction-set simulator for execution profiling
US7761701B2 (en) Component firmware integration in distributed systems
US9471291B2 (en) Multi-processor code for modification for storage areas
US7225438B2 (en) Lazy compilation of template-generated classes in dynamic compilation execution environments
US8286130B2 (en) Methods and systems for using type models to generate an implementation of a type
US6546553B1 (en) Service installation on a base function and provision of a pass function with a service-free base function semantic
US6865733B2 (en) Standardized interface between Java virtual machine classes and a host operating environment
US6185728B1 (en) Development system with methods for type-safe delegation of object events to event handlers of other objects
JP4716681B2 (en) Method, system and recording medium for extending software
US20040268309A1 (en) Software development infrastructure
US20050050528A1 (en) Method and apparatus to guarantee type and initialization safety in multithreaded programs
US5991538A (en) System for generating and using programs in an object-oriented environment with a message dispatch architecture
US20020054124A1 (en) Hosting objects in a windowed environment
JPH03208187A (en) Interface for graphic processor sub- system
US20060107257A1 (en) Executing a native software routine in a virtual machine
CN112306539B (en) Development method, system, terminal and medium for SCM application layer
Brooks et al. L-a common lisp for embedded systems
US9582398B1 (en) Debugging using presentation layer representations of objects
US8984473B2 (en) Methods for type analysis in systems for code generation
Benson et al. The OpenVMS mixed pointer size environment
Reinke Towards a haskell/Java connection
Wang Research and Development of Porting SYCL on QNX Operating System for High Parallelism

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 (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080331

Year of fee payment: 8

FPAY Renewal fee payment (event 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