JP2006107497A - 制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、コンピュータのネットワーク - Google Patents

制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、コンピュータのネットワーク Download PDF

Info

Publication number
JP2006107497A
JP2006107497A JP2005283606A JP2005283606A JP2006107497A JP 2006107497 A JP2006107497 A JP 2006107497A JP 2005283606 A JP2005283606 A JP 2005283606A JP 2005283606 A JP2005283606 A JP 2005283606A JP 2006107497 A JP2006107497 A JP 2006107497A
Authority
JP
Japan
Prior art keywords
program module
program
local memory
reference information
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005283606A
Other languages
English (en)
Inventor
Tatsuya Iwamoto
達也 岩本
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment 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
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2006107497A publication Critical patent/JP2006107497A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】処理量を効果的に減らす。
【解決手段】本方法、および、本装置は、処理環境における扱われる強調された命令のために供給される。プログラム参照は、1またはそれ以上のプログラムモジュールに関係づけられていてもよい。プログラムモジュールは、ローカルメモリに読み込まれ、コードやデータなどの情報は、プログラム参照にもとづいて、プログラムモジュールから取得される。新規のプログラムモジュールは、存在するプログラムモジュールにもとづいて形成される。プログラムモジュール内における直接参照を生成し、プログラムモジュール間の間接参照を回避して、新規プログラムモジュールを最適化する。プログラムモジュールは、挿入個所にしたがってローカルメモリ内に事前に読み出されてもよい。挿入個所は、統計的に決定される。本発明は、特に、メモリ量に制限のあるマルチプロセッサシステムに有益である。
【選択図】図1

Description

本発明は、一般的なコンピュータのプログラムの実行に関する。特に、オブジェクトモジュールにしたがって、プロセッサのローカルメモリにプログラムモジュールを読み込み、また、プログラムモジュールを操作することによって、プログラムの実行を改良するための制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、記憶媒体、コンピュータのネットワークに関する。
コンピュータシステムは、より複雑さが増してきており、そのサイズの縮小化と製造コストの低減をしつつ、高い処理スピードを達成している。これらの進歩は、多くのアプリケーション、リアルタイムに行なうマルチメディアゲーム、処理量の多いアプリケーションにとって重要である。しばしば、コンピュータシステムは、マルチプロセッサを搭載している。マルチプロセッサは、処理効率を上げるために、複数のプロセッサを含み、それらが並列に、もしくは、協調して、処理を制御する。
通常、プロセッサ、もしくは、複数のプロセッサは、コードおよび/またはデータ(これらを総称して「情報」という)を扱う。情報は、典型的には、主記憶装置に記憶されている。主記憶装置は、例えば、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory。以下、「DRAM」と略称する。)である。DRAMはプロセッサを含むチップから物理的に離れている。主記憶装置が、物理的もしくは論理的に、プロセッサと離れている場合、それらは、大きな遅延(high latency。)を有する。大きな遅延とは、例えば、主記憶装置に含まれる情報にアクセスする際に要求される付加的な数10ミリ秒もしくは数100ミリ秒の時間をいう。この大きな遅延は、処理に悪影響を与える。なぜなら、プロセッサは、主記憶装置から必要な情報が転送されるまで、空処理もしくは停止処理を行う必要があるからである。
大きな遅延の問題を処置するために、多くのコンピュータシステムは、キャッシュメモリを備えている。キャッシュメモリは、プロセッサと主記憶装置の間に備えられた一時的な記憶装置である。キャッシュメモリは、一般的に、主記憶装置と比べて小さな処理遅延を有する。しかし、キャッシュメモリはプロセッサより小さな領域しか持たない。キャッシュメモリが使用される場合、キャッシュメモリは、繰り返しアクセスされるデータを一時的に記憶することによって、プロセッサの性能を改良させる。キャッシュメモリの有用性は、アクセスの局在性による。例えば、90%の時間がデータの10%のアクセスに費やされるといった“9 TO 1”の規則を使って、主記憶装置または外部の記憶装置から少量のデータを検索することは、多くの時間が少量のデータのアクセスに費やされるため、非常に効果的ではない。従って、よく使われるデータは、キャッシュメモリの中に記憶させるべきである。
従来のハードウェアキャッシュシステムは、“キャッシュライン”を含む。キャッシュラインは、記憶装置を制御するための基本的なユニットである。キャッシュラインは、キャッシュメモリと主記憶装置の間におけるデータ転送において最適なサイズになるように選択される。この分野の公知の技術として、キャッシュシステムは、主記憶装置にキャッシュラインを対応づける一定の規則を扱う。例えば、”キャッシュタグ”は、主記憶装置のどの部分がキャッシュラインに記憶されているか、そして、主記憶装置のその部分の状態を表すために利用される。
メモリアクセスに加え、プログラムの実行に悪影響を与える制限として、メモリサイズによる制限がある。主記憶装置は、必要とされる処理を実行するには小さすぎる場合がある。この場合、外部記憶装置を利用することによって、主記憶装置に物理的に存在するアドレス領域より大きなアドレス領域を供給するために、”仮想メモリ”が使用される。しかしながら、外部記憶装置は典型的に、主記憶装置より大きな遅延を有する。
仮想メモリを実現するために、通常は、CPUの一部もしくは別の要素であるプロセッサのメモリ管理ユニット(Memory Management Unit。以下、「MMU」と略称する。)を利用する。MMUは、プログラムソフトウェアによって使用される仮想アドレスをメモリ内の物理アドレスに割当てる。MMUは、物理アドレスに対応づけられていない、仮想アドレスへのアクセスであることを検出できる。この場合、仮想メモリを管理するソフトウェアが呼び出される。仮想アドレスが外部アドレスに記憶されている場合、主記憶装置に読み出され、マッピングが仮想アドレスのためになされる。
高度なプロセッサの構造、特にマルチプロセッサの構造において、個々の処理装置は、ローカルメモリを有する。ローカルメモリは、主記憶装置の記憶を補助することができる。ローカルメモリは、高速であるものの、記憶容量が制限される。ここで、ソフトウェアに使用されるアドレスとローカルメモリの物理アドレスに使用されるアドレスとは、仮想化されてない。すなわち、処理装置が使用することができるメモリ量が制限される。処理装置が、ダイレクトメモリアクセスコントローラ(Dynamic Memory Access Controller。以下、「DMAC」と略称する。)、もしくは、他のハードウェアを通じて、主記憶装置にアクセスしている間、システムアドレス空間とローカルメモリのアドレス空間とがリンクするようなハードウェアのメカニズムはない。
しかし、大きな遅延を有する主記憶装置は、処理効率を減らしてしまい、マルチプロセッサシステムにとって、性能的に大きなボトルネックを生み出す。それゆえに、それらの問題を克服するような情報の操作が必要となる。本発明は、これらの問題に対し、特に厳しいメモリ制限があるマイクロプロセッサ構造に適合することができるものである。
上記課題を解決するために、本発明のある態様の制御方法は、ローカルメモリを有する処理部を制御する方法であって、プログラム参照情報に関係付けられたプログラムモジュールがローカルメモリに読み込まれたことを判別するステップと、プログラムモジュールがローカルメモリに読み込まれていない場合、ローカルメモリに対し、プログラムモジュールを読み込むステップと、プログラム参照情報にもとづいて、プログラムモジュールから情報を取得するステップと、を含む。
プログラムモジュールから取得される情報は、データとコードのうち少なくとも一方を含んでもよい。プログラムモジュールは、主記憶部からローカルメモリに読み込まれるオブジェクトモジュールを含んでもよい。プログラム参照情報は、プログラムモジュール内への直接参照情報を含んでもよい。プログラム参照情報は、第2プログラムモジュールへの間接参照情報を含んでもよい。
プログラムモジュールは第1プログラムモジュールであり、制御方法は、第1プログラムモジュールと第2プログラムモジュールを主記憶部に記憶するステップをさらに含み、読み込むステップは、主記憶部からローカルメモリに第1プログラムモジュールを読み込んでもよい。プログラム参照情報は、第1プログラムモジュール内への直接参照情報を含んでもよい。プログラム参照情報は、第2プログラムモジュールへの間接参照情報を含んでもよい。情報は第2プログラムモジュールから得られ、制御方法は、第2プログラムモジュールがローカルメモリから読み込まれていることを判別するステップと、第2プログラムモジュールがローカルメモリから読み込まれていない場合、ローカルメモリに第2プログラムモジュールを読み込むステップと、第1プログラムモジュールに情報を供給するステップと、をさらに含んでもよい。
本発明の別の態様は、ローカルメモリを有する処理部を制御する方法であって、主記憶部から第1プログラムモジュールを取得するステップと、主記憶部から第2プログラムモジュールを取得するステップと、第1プログラムモジュールにて使用されるプログラム参照情報が、第2プログラムモジュールへの間接参照情報を含むことを判別するステップと、プログラム参照情報が間接参照情報を含む場合、第1プログラムモジュールの少なくとも一部分を含む新規プログラムモジュールを形成して、プログラム参照情報を新規プログラムモジュールの複数の部分間における直接参照情報とするステップと、を含む。
新規プログラムモジュールをローカルメモリに読み込むステップをさらに含んでもよい。新規プログラムモジュールを形成する前に、第1プログラムモジュールと第2プログラムモジュールを前記ローカルメモリに読み込ませてもよい。第1プログラムモジュールは第1コード関数を含み、かつ、第2プログラムモジュールは第2コード関数を含み、かつ、新規プログラムモジュールは、第1コード関数と第2コード関数のうち少なくとも一方を含んで形成されてもよい。第1プログラムモジュールは、データ群をさらに含み、新規プログラムモジュールは、データ群をさらに含んで形成されてもよい。
プログラム参照情報は前記第2プログラムモジュールへの間接参照情報であって、制御方法は、第1プログラムモジュールにて使用されるプログラム参照情報にもとづいて、新規プログラムモジュールにて使用される新規プログラム参照情報を決定するステップと、をさらに含み、新規プログラムモジュールは、第1プログラムモジュールの少なくとも一部分と、第2プログラムモジュールの少なくとも一部分とを含んで形成されることにより、新規プログラム参照情報は、新規プログラムモジュールへの直接参照情報としてもよい。
本発明のさらに別の態様は、ローカルメモリを有する処理部における処理方法であって、ローカルメモリに読み込まれている第1プログラムモジュールを実行するステップと、第2プログラムモジュールの挿入個所を決定するステップと、第1プログラムモジュールの実行中に、ローカルメモリに第2プログラムモジュールを読み込むステップと、第2プログラムモジュールの実行を開始するために、予測実行時間を決定するステップと、第2プログラムモジュールの読み込みが完了したことを判別するステップと、第1プログラムモジュールの実行が終了した後に、第2プログラムモジュールを実行するステップと、を含む。
読み込みが完了していない場合、第2プログラムモジュールの実行を遅延させるステップと、をさらに含んでもよい。遅延させるステップは、読み込みが完了するまで、1もしくはそれ以上のNOP(No Operation)処理を実行するステップを含んでもよい。挿入個所は、統計的に決定されてもよい。挿入個所の有効性は、実行時の状態にもとづいて決定されてもよい。
本発明のさらに別の態様は、プログラムモジュールを記憶できるローカルメモリと、プログラム参照情報とプログラムモジュールとを関係付け、プログラムモジュールがローカルメモリに現在読み込まれていることを判別し、ローカルメモリに現在読み込まれていない場合にプログラムモジュールをローカルメモリに読み込み、プログラム参照情報にもとづいてプログラムモジュールから情報を取得する管理機能を実行する論理回路を有する、ローカルメモリに接続されたプロセッサと、を備える。ローカルメモリは、プロセッサに内蔵されていてもよい。
本発明のさらに別の態様は、プログラムモジュールを記憶できるローカルメモリと、第1プログラムモジュールと第2プログラムモジュールを主記憶装置に記憶し、第1プログラムモジュールと第2プログラムモジュールのいずれかを選択して主記憶装置からローカルメモリに読み出し、選択されたプログラムモジュールとプログラム参照情報を関係付け、プログラム参照情報にもとづいて情報を取得する管理機能を実行する論理回路を有する、ローカルメモリに接続されたプロセッサと、を備える。主記憶装置は、半導体基板上に備えられた記憶装置を含んでもよい。ローカルメモリは、プロセッサと統合されていてもよい。
本発明のさらに別の態様は、プログラムモジュールを記憶できるローカルメモリと、主記憶装置から第1プログラムモジュールを取得し、主記憶装置から第2プログラムモジュールを取得し、第1プログラムモジュールに使用される第1プログラム参照情報を決定し、第1プログラムモジュールの少なくとも一部を含む新規プログラムモジュールを形成して、第1プログラム参照情報を新規プログラムモジュール内の直接参照情報とし、ローカルメモリに新規プログラムモジュールを読み込ませる管理機能を実行する論理回路を有する、ローカルメモリに接続されたプロセッサと、を備える。
本発明のさらに別の態様は、プログラムモジュールを記憶できるローカルメモリと、ローカルメモリに接続されたプロセッサとを備え、プロセッサは、第1プログラムモジュールの挿入個所を決定し、プロセッサによる第2プログラムモジュールの実行中に第1プログラムモジュールをローカルメモリに読み込ませ、第2プログラムモジュールの実行後であって、かつ、読み込みが完了した後に、第1プログラムモジュールを実行するための管理機能を実行する論理回路を有する。
本発明のさらに別の態様は、記録媒体である。この記録媒体は、プログラム参照情報によって関係づけられたプログラムモジュールを特定し、プログラムモジュールがローカルメモリに現在読み込まれていることを判別し、プログラムモジュールがローカルメモリに現在読み込まれていない場合、プログラムモジュールをローカルメモリに読み込み、プログラム参照情報にもとづいて、プログラムモジュールから情報を取得することをプロセッサに実行させるためのプロセッサにて使用されるプログラムを記憶する。
本発明のさらに別の態様は、記録媒体である。この記録媒体は、第1プログラムモジュールと第2プログラムモジュールを主記憶装置に記憶し、プログラム参照情報と関係付けられた第1プログラムモジュールを主記憶装置から、プロセッサに関係付けられたローカルメモリに読み出し、プログラム参照情報にもとづいて情報を取得することをプロセッサに実行させるためのプロセッサにて使用されるプログラムを記憶する。
本発明のさらに別の態様は、記録媒体である。この記録媒体は、主記憶装置から第1プログラムモジュールを取得し、主記憶装置から第2プログラムモジュールを取得し、第1プログラムモジュールにて使用されるプログラム参照情報が前記第2プログラムモジュールへの間接参照情報を含むことを判別し、プログラム参照情報が間接参照情報を含む場合、少なくとも第1プログラムモジュールの一部分を含む新規プログラムモジュールを形成して、プログラム参照情報を新規プログラムモジュールの部分間における直接参照情報とすることをプロセッサに実行させるためのプロセッサにて使用されるプログラムを記憶する。
本発明のさらに別の態様は、記録媒体である。この記録媒体は、プロセッサに関係付けられたローカルメモリに読み込まれた第1プログラムモジュールを実行し、第2プログラムモジュールの挿入個所を決定し、第1プログラムモジュールの実行中に、ローカルメモリに第2プログラムモジュールを読み込み、第2プログラムモジュールの実行を開始するための予測実行時間を決定し、第2プログラムモジュールの読み込みが完了したことを判別し、第1プログラムモジュールの実行が終了した後に、第2プログラムモジュールを実行することをプロセッサに実行させるためのプロセッサにて使用されるプログラムを記憶する。
本発明のさらに別の態様は、処理システムである。この処理システムは、バスを含む処理要素と、処理部と、バスを介して処理部と接続された少なくとも1つの副処理部と、を備える。処理部と少なくとも1つの副処理部のうち少なくとも一方は、プログラム参照情報は第1プログラムモジュールに属することを判別し、ローカルメモリに第1プログラムモジュールを読み込み、プログラム参照情報にもとづいて第1プログラムモジュールから情報を取得する。
本発明のさらに別の態様は、コンピュータ処理システムである。このコンピュータ処理システムは、ユーザ入力部と、表示装置を装着するための表示インターフェイスと、プログラムモジュールを記憶できるローカルメモリと、ローカルメモリに接続されるプロセッサとを備える。プロセッサは、1またはそれ以上の処理要素を有し、処理要素のうち少なくとも1つの処理要素はプログラム参照情報が第1プログラムモジュールに属しているかを判別し、ローカルメモリに第1プログラムモジュールを読みこみ、プログラム参照情報にもとづいて第1プログラムモジュールから情報を取得する管理機能を実行する論理回路を含む。
本発明のさらに別の態様は、通信ネットワークを介して他のコンピュータ処理システムと接続されている複数のコンピュータ処理システムを備えるコンピュータのネットワークである。コンピュータ処理システムは、ユーザ入力部と、表示装置を装着するためのインターフェイスと、プログラムモジュールを記憶できるローカルメモリと、ローカルメモリに接続されるプロセッサとを備え、プロセッサは、1またはそれ以上の処理要素を有し、処理要素のうち少なくとも1つの処理要素はプログラム参照情報が第1プログラムモジュールに属しているかを判別し、ローカルメモリに第1プログラムモジュールを読みこみ、プログラム参照情報にもとづいて第1プログラムモジュールから情報を取得する管理機能を実行する論理回路を含む。少なくとも1つの前記コンピュータ処理システムは、マルチメディアゲームを処理することができるゲーム部を含んでもよい。
本発明のさらに別の態様は、プログラムである。このプログラムは、プログラム参照情報によって関係づけられたプログラムモジュールを特定し、プログラムモジュールがローカルメモリに現在読み込まれていることを判別し、プログラムモジュールがローカルメモリに現在読み込まれていない場合、プログラムモジュールを前記ローカルメモリに読み込み、プログラム参照情報にもとづいて、プログラムモジュールから情報を取得することをプロセッサに実行させる。
本発明のさらに別の態様は、プログラムである。このプログラムは、第1プログラムモジュールと第2プログラムモジュールを主記憶装置に記憶し、プログラム参照情報と関係付けられた第1プログラムモジュールを主記憶装置から、プロセッサに関係付けられたローカルメモリに読み出し、プログラム参照情報にもとづいて情報を取得することをプロセッサに実行させる。
本発明のさらに別の態様は、プログラムである。このプログラムは、主記憶装置から第1プログラムモジュールを取得し、主記憶装置から第2プログラムモジュールを取得し、第1プログラムモジュールにて使用されるプログラム参照情報が前記第2プログラムモジュールへの間接参照情報を含むことを判別し、プログラム参照情報が間接参照情報を含む場合、少なくとも第1プログラムモジュールの一部分を含む新規プログラムモジュールを形成して、プログラム参照情報を新規プログラムモジュールの部分間における直接参照情報とすることをプロセッサに実行させる。
本発明のさらに別の態様は、プログラムである。このプログラムは、プロセッサに関係付けられたローカルメモリに読み込まれた第1プログラムモジュールを実行し、第2プログラムモジュールの挿入個所を決定し、第1プログラムモジュールの実行中に、ローカルメモリに第2プログラムモジュールを読み込み、第2プログラムモジュールの実行を開始するための予測実行時間を決定し、第2プログラムモジュールの読み込みが完了したことを判別し、第1プログラムモジュールの実行が終了した後に、第2プログラムモジュールを実行することをプロセッサに実行させる。
処理量を効果的に減らすことができるマイクロプロセッサシステムを提供する。
添付した図面に参照される本発明の好ましい態様の記載において、特定の用語は、発明の明瞭性のために用いられている。しかしながら、本発明は、用いられた特定の事項に限定されず、かつ、同様の目的を達成するために同様の規則で行う全ての等価な技術を含むものと理解される。
図1は、本発明の実施例にかかる基本的な処理モジュールもしくは処理要素100(Processor Element。以下、「PE100」と略称する。)の構成例を示す図である。図1に示すようにPE100は、好ましくは、入出力インタフェイス102と、処理部104(Processing Unit。以下、「PU104」と略称する。)と、DMAC106と、副処理部108(Sub-Processing Unit。以下、「SPU108」と略称する。)とを含む。SPU108は、SPU108a〜SPU4108dを代表する。ここでは、4つのSPU108を示したが、PE100は任意の個数のSPU108を含むことができる。ローカルPEバス120は、PU104、SPU108、入出力インタフェイス102、DMAC106およびメモリインタフェイス110の間においてデータとアプリケーションを転送する。ローカルPEバス120は、たとえば、通常の構成を有することができ、また、パケットスイッチネットワークとして実現することができる。パケットスイッチネットワークとして実現すると、多くのハードウェアが要求されるため、有効なバンド幅が増加する。入出力インタフェイス102は、入出力バス124を介して、一つもしくはそれ以上の図示しない外部の入出力デバイス、例えばフレームバッファ、ディスクドライブなどと接続されてもよい。
PE100は、デジタル論理を実現するためのさまざまな方法を使って構成される。PE100は、好ましくは、シリコン表面上にCMOSを使った単一のICとして構成される。PE100は、広帯域メモリバス122を介して、メモリ130と接続されている。メモリ130は、PE100のための主記憶部として適切に機能する。実際の構成においては、メモリ130は、PE100に組みこまれているプロセッサチップの一部として統合されてもよいし、また、外部のオフチップメモリとして分割されてもよい。たとえば、メモリ130はチップ上の離れた位置に配置される。もしくはPE100を含む一つもしくはそれ以上のプロセッサに統合することができる。メモリ130は、好ましくはDRAMであるとよいが、メモリ130は他の手段によっても実現することができる。例えば、静的なランダムアクセスメモリ(Static Random Access Memory。以下、「SRAM」と略称する。)、磁気的なランダムアクセスメモリ(Magnetic Random Access Memory。以下、「MRAM」と略称する。)、光学的なメモリ(Optical Memory)、フォログラフィックメモリ(Holographic Memory)などである。DMAC106とメモリインタフェイス110は、PE100のPU104と、SPU108のメモリ130との間におけるデータの転送を促進する。
PU104は、たとえば、データとアプリケーションを単独で処理することができる標準的なプロセッサである。PU104は、その処理において、SPU108によるデータとアプリケーションの処理の順序を管理し、または、指揮する。PE100は、他の構成として、複数のPU104を含んでもよい。PU104のそれぞれは、一つ、または、全て、または、いくつかのSPU108のグループを制御してもよい。SPU108は、好ましくは、単一の命令で複数のデータを扱う処理部である。PU104の制御下において、SPU108は、並列かつ独立に、データとアプリケーションの処理を実行してもよい。DMAC106は、メモリ130に記憶されたデータとアプリケーションに関し、PU104もしくはSPU108によるアクセスを制御する。好ましくは、複数のPE100は、高い処理電力を供給するために、論理的に他の装置と関連づけられ、または、連結され、もしくは一体化されてもよい。
図2は、本発明の実施例にかかる複数のPE200を含む処理部の構成例を示す図である。好ましくは、PE200は、単一のチップで構成されている。PE200は、図1のPE100に示したようなPU104および/またはSPU108のようなサブシステムを含んでもよく、含まないでもよい。PE200は、要求される処理形式に従って、同一もしくは異なる形式となってもよい。たとえば、1または複数のPE200は、一般的なマイクロプロセッサであってもよく、また、デジタル信号プロセッサ(Digital Signal Processor)であってもよく、画像プロセッサであってもよく、また、マイクロコントローラなどであってもよい。PE200の一つは、例えばPE1は、PE2、PE3、PE4によって処理されるいくつかのもしくは全ての処理に指示、もしくは制御してもよい。
PE200は、好ましくは共有バス202と接続されている。メモリ制御部またはDMAC206は、メモリバス204を介して共有バス202に接続されてもよい。DMAC206は、メモリ208に接続されている。メモリ208は、メモリ130に関して上述した形式のうちのいずれかであってもよい。実際の構成においては、メモリ208は、一つまたは複数のPE200に統合されているプロセッサチップの一部として統合されていてもよく、また、組み込まれていてもよく、外部のオフチップメモリに配置されていてもよい。たとえば、メモリ208は、チップ上の別の位置に配置でき、また、1またはそれ以上のPE200に統合されることができる。入出力制御部212は、入出力バス210を介して、共有バス202に接続されている。入出力制御部212は、一つまたはそれ以上の入出力デバイス214、例えばフレームバッファ、ディスクドライブなどに接続されていてもよい。
上述した処理モジュールと構成は単に例示にすぎないと理解される。また、本発明のさまざまな態様は、他の構成を有していてもよいし、以下の文献1、2に開示されたマルチプロセッサシステムなどに限定されない。
文献1:US.PAT.NO. 6526491, "Memory protection system and method for computer architecture broadband networks", 登録日 2003/2/25.
文献2: US.AP.NO. 09/816004, "Computer archtecture and software cells for broadband networks",出願日 2001/3/22.
図3は、本発明の実施例にかかるSPU300の構成例を示す図である。一つもしくはそれ以上のSPU300は、PE100に統合されていてもよい。PEが複数のPU104を含むような場合、PU104のそれぞれは一つまたは全てもしくはいくつかの指定されたSPU300のグループを制御してもよい。
SPU300は、好ましくは、LS302(Local Store。以下、「LS302」と略称する。)、レジスタ304、一つまたはそれ以上の浮動小数点演算ユニット306(Floating Point Unit。以下、「FPU306」と略称する。)、および一つまたはそれ以上の整数演算ユニット308(Integer Unit。以下、「IU308」と略称する。)とを含み、もしくは、論理的に関係づけられている。SPU300の構成要素は、以下に示す構成を含む。要求される処理電力に従って、より多くのもしくはより少ないFPU306とIU308が実行されてもよい。本実施例においては、LS302は、少なくとも128キロバイトの記憶容量を含み、レジスタ304の容量は128×128ビットである。FPU306は好ましくは、少なくとも32GFLOPS(Giga FLOating point operations Per Second。1秒あたりに処理できる浮動小数点演算の数。)のスピードで計算することができる。IU308は、好ましくは32GOPS(Giga Operations Per Second)のスピードで計算することができる。
LS302は好ましくは、キャッシュメモリではない。SPU300におけるキャッシュの整合性は必要ない。そのかわりに、LS302は好ましくはSRAMとして構成される。PU104は、PU104によって初期化された直接メモリアクセスのためのキャッシュの整合性のサポートを要求してもよい。キャッシュの整合性のサポートは、SPU300によって初期化された直接メモリアクセスや入出力デバイス214のような外部のデバイスに対するアクセス、または外部のデバイスからのアクセスには要求されない。LS302は、たとえば、特定のSPU300に関係付けられた物理メモリとして実現されてもよいし、SPU300に関係付けられた仮想メモリ領域として実現されてもよいし、物理メモリと仮想メモリの組合せとして実現されてもよいし、または等価なハードウェア、ソフトウェア、および/または、ファームウェアの構成として実現されてもよい。LS302は、PEバス120のようなシステムバスを通じて、またはSPU特定のローカルバスを通じて、SPU300に接続されてもよい。
SPU300は、バスインタフェイス312を介してSPU300に対して、もしくは、SPU300からアプリケーションとデータを転送するためのバス310をさらに含む。本実施例においては、バス310は、1024ビットの幅を持つ。SPU300は、第1内部バス314、第2内部バス316、第3内部バス318をさらに含む。本実施例においては、第1内部バス314は256ビットの幅を有し、LS302とレジスタ304の間の通信を供給する。第2内部バス316と第3内部バス318は、レジスタ304とFPU306の間における通信またはレジスタ304とIU308のそれぞれの間における通信を供給する。本実施例において、第2内部バス316と第3内部バス318の幅は、レジスタ304からFPU306、もしくは、レジスタ304からIU308においては384ビットである。また、第2内部バス316と第3内部バス318の幅は、FPU306もしくはIU308からレジスタ304への幅は、128ビットである。レジスタ304からFPU306、IU308へのより大きなバス幅は、処理中においてレジスタ304からのより多くのデータの流れを収容する。例えば、3ワードを最大としてそれぞれの処理において最大3ワードが必要であるとする。この場合、それぞれの計算においては、1ワードのみ必要となる。
本発明においては、ローカルメモリのアドレス空間とシステムのアドレス空間におけるボトルネックの問題と仮想化の欠如を克服することができる。LS302に対するデータの読み込み(ロード/ローディング)もしくは読み出し(アンロード/アンローディング)は、ソフトウェアを通じて適切に実行されるため、ソフトウェアがある時刻においてデータ、もしくは、コードを読み出すべきか否かを判別することができるという事実を利用できる。これは、プログラムモジュールの使用を通じて達成される。ここで使用する”プログラムモジュール”という語句は、メモリ内に配置されたプログラムリソースの論理集合などを含むが、これに限定されない。例えば、プログラムモジュールはデータおよび/またはコードを含んでもよい。データおよび/またはコードは、コンパイラなどの論理的な手段によってグループ化される。プログラム、または、その他のコンピュータ処理は、ひとつ、もしくはそれ以上のプログラムモジュールを使って実現されてもよい。
図4Aは、本発明の実施例にかかるプログラムモジュールの使用に基づく記憶管理の例を示す図である。主記憶部、例えばメモリ130は、1またはそれ以上のプログラムモジュールを含んでもよい。図4Aにおいて、プログラムモジュールA402とプログラムモジュールB404は、メモリ130の中に表されている。本実施例においては、プログラムモジュールは、“*.o”ファイルとして知られているコンパイル時のオブジェクトモジュールであってもよい。オブジェクトモジュールは、プログラムの部分間において、非常に明確に論理的な境界を供給する。オブジェクトモジュールは、コンパイルの間に生成されるので、正確なモジュール内(直接参照)もしくは外部への(外部参照もしくは間接参照)参照アドレスを供給する。間接参照は、好ましくは、以下に示すように管理ルーチンを呼び出すことによって実現される。
好ましくは、プログラムは、プログラムモジュールごとにLS302に読み込まれる。より好ましくは、プログラムは、オブジェクトモジュールごとにLS302に読み込まれる。図4Aに示すように、プログラムモジュールAは、プログラムモジュールA406としてLS302に読み込まれる。また、プログラムモジュールBは、プログラムモジュールB408として読み込まれる。矢印410で指し示されるように、直接参照が、プログラムモジュールA406に含まれるデータまたはコードにアクセスするためになされた場合、すべての参照(コードおよび/またはデータへのポインタ)は、オーバーヘッドなしでアクセスすることができる。破線矢印412と破線矢印413で指し示されるプログラムモジュールA406から、外部のモジュールであるプログラムモジュールB408への間接参照においては、管理ルーチン414が好ましくは呼び出される。処理部によって好ましくは実行される管理ルーチン414は、必要であればプログラムモジュールを読み出し、もしくは、すでに読み出されていれば、そのプログラムモジュールにアクセスすることができる。ここで、たとえば、破線矢印412で指し示される間接参照がプログラムモジュールA406へのものであると仮定する。さらに、LS302に存在しないプログラムモジュールB408への間接参照情報が破線矢印412で指し示されているとする。そうすると、管理ルーチン414は、プログラムモジュールB404としてメモリ130に存在するプログラムモジュールBを読み出し、プログラムモジュールB408としてLS302に読み込ませる。
図4Bは、本発明の実施例にかかる第1のフローダイアグラム例を示す図である。まず、S442において記憶管理が初期化される。次に、S444において、参照がいずれのプログラムモジュールに属しているかを判別するために検査が実行される。図4Aに示す管理ルーチン414が、その検査を実行してもよい。検査の結果は、たとえば、他のプロセス、アプリケーションもしくはデバイスによって、管理ルーチン414に供給してもよい。いったん参照情報が決定されると、S446においてLS302にそのプログラムモジュールが読み込まれているかどうかを判別するための検査が実行される。プログラムモジュールがLS302に読み込まれている場合、S448において、プログラムモジュールから参照された値(データ)は、それを要求しているエンティティ、たとえば、図4AのプログラムモジュールA406に返される。プログラムモジュールがLS302に読み込まれていない場合、S450において、参照されたモジュールがLS302に読み込まれる。この場合、S448に処理が移り、データは、それを要求しているエンティティに返される。S452において、この記憶管理ルーチンが終了する。この管理ルーチン414は、好ましくは、図4Aに示す記憶管理を実行、もしくは、管理する。
プログラムモジュールがコンパイルの間に形成されたオブジェクトモジュールを使って実現されている場合、そのオブジェクトモジュールがどのように構成されているかによって、記憶管理処理の効率に影響を与える。たとえば、コード関数におけるデータが、そのコード関数に正しく関係づけられていない場合、処理ボトルネックとなる。したがって、プログラムおよび/またはデータが複数のソースファイルに分かれている場合、慎重になるべきである。
この問題は、コードとデータなどを含むプログラムを解析することによって回避することができる。また、コードおよび/またはデータは、好ましくは別々のモジュールに分割されている。また、コードおよび/またはデータは、場合により、複数の関数もしくはデータのグループに分割される。コンパイラまたは他の処理ツールは、複数の関数とデータのグループにおける参照情報を解析することができる。よって、存在するプログラムモジュールは、プログラムモジュールのグループ化を最適にするための解析に基づいて、データおよび/またはコードをグループ化して新規プログラムモジュールに再分割される。これは、モジュールの外部にアクセスすることによって生成されるオーバーヘッドを最小化する。モジュールをどのように分割するかを決定する処理は、好ましくは、モジュールのコードを関数によって分割することによって開始される。たとえば、ツリー構造は、関係の呼び出し関係から抽出される。外部の呼び出しを伴わない関数、または外部から参照されない関数は、ローカル関数として識別される。外部参照を伴う関数は、参照先のモジュールによってグループ化することができ、外部参照をもつものとして識別される。同様のグループ化は、外部から参照される関数に対しても実現することができ、そのような関数は、外部参照されるものとして識別される。モジュールのデータ部分は、好ましくは、同様の解析によって行うことができる。モジュールのグループは、好ましくは、最も適した組み合わせを選択するために比較され、マッチングがとられる。たとえば、LS302のサイズ、転送サイズ、および/またはアライメントに基づいて最適な組み合わせが選択される。好ましくは、参照が使用される可能性が高ければ高いほど、最適な組合せを探索する解析において、その参照の重みづけは高くなる。最適なグループ分けを自動化するためにツールを使用することもできる。たとえば、コンパイラおよび/またはリンカーは、最適な実行ファイルを生成するために、1つまたはそれ以上のコンパイルまたはリンクの実行を繰り返してもよい。参照情報は、実行時にプロファイルを作成することによって、統計的に解析される。
本実施例においては、再グループ化の処理への入力は、プログラムを形成して関係づけられた複数のオブジェクトファイルを含む。このような態様において、望まれる出力は、読み込みが完了するまでの待ち時間による遅延を最小化するようにグループ化された複数の読み込まれたモジュールを含む。
図5Aは、本発明の実施例にかかる第1プログラムモジュール502と第2プログラムモジュール504を含むプログラムモジュール群500の構成例を示す図である。第1プログラムモジュール502と第2プログラムモジュール504は、好ましくはSPUのLS302に読み込まれている。マルチスレッド処理におけては異なるスレッド間で同一のコードモジュールを共有することができるので、第1プログラムモジュール502を第1のローカルメモリによみこませ、また、第2プログラムモジュール504を第2のローカルメモリに読み込ませることができる。あるいは、プログラムモジュール群全体500を、一対のローカルメモリに読み込ませることもできる。しかしながらデータモジュールは、別々のインスタンスが必要である。また、ダイナミックローディングとアンローディングを拡張して、共有コードモジュールに関係づけられた別々のデータモジュールを管理ルーチンが管理している間、その共有コードモジュールを使うことができるようにすることができる。図5Aに示すように、第1プログラムモジュール502はコード関数A506と、コード関数BC508と、データ群A510と、データ群BCD512とを含む。コード関数A506は、処理Aのためのコードを含む。コード関数BC508は、処理Bと処理Cの為のコードを含む。データ群A510はデータの集合Aを含む。データ群BCD512はデータの集合Bと、Cと、Dを含む。同様に第2プログラムモジュール504は、コード関数DE514と、コード関数F516と、データ群DE518と、データ群FG520とを含む。コード関数DE514は、処理DとEのためのコードを含む。コード関数F516は処理Fの為のコードを含む。データ群DE518は、データの集合DとEとを含む。データ群FG520はデータの集合FとGを含む。
図5Aの例においては、コード関数A506は、矢印521で指し示されたデータ群A510への直接参照を行ってもよく、また、コード関数DE514を間接的に参照してもよい。コード関数BC508は、矢印523で指し示されたデータ群BCD512へ直接的に参照してもよい。コード関数DE514は、矢印524で指し示されたデータ群FG520へ直接的に参照してもよい。さいごに、コード関数F516は、矢印526で指し示されたデータ群DE518に直接的に参照してもよい。破線矢印522で指し示されたコード関数A506とコード関数DE514の間における間接参照は、望まれないオーバーヘッドを生成する。それゆえに、好ましくは、複数のコード関数と複数のデータ群とを再グループ化した方がよい。
図5Bは、図5Aのプログラムモジュール群500の再グループ化の例を示す図である。図5Bにおいては、第1新規プログラムモジュール530と、第2新規プログラムモジュール532と、第3新規プログラムモジュール534とが生成される。第1新規プログラムモジュール530は、コード関数A536と、コード関数DE538と、データ群A540と、データ群FG542とを含む。コード関数A536は、処理Aの為のコードを含む。コード関数DE538は、処理DとEの処理の為のコードを含む。データ群A540は、データの集合Aを含む。データ群FG542は、データの集合FとGとを含む。第2新規プログラムモジュール532は、コード関数BC544とデータ群BCD546とを含む。コード関数BC544は、処理BとCの為のコードを含む。データ群BCD546は、データの集合BとCとDとを含む。第3新規プログラムモジュール534は、コード関数F548とデータ群DE550を含む。コード関数F548は、処理Fのためのコードを含む。データ群DE550は、データの集合DとEを含む。
図5Bに示す再グループ化において、コード関数A536は、矢印521’で指し示されたデータ群A540を直接的に参照してもよい。また、コード関数A536は矢印522’で指し示されたコード関数DE538を直接的に参照してもよい。コード関数BC544は、矢印523’で指し示されたデータ群BCD546を直接的に参照してもよい。コード関数DE538は、矢印524’で指し示されたデータ群FG542を直接的に参照してもよい。コード関数F548は、矢印526’で指し示されたデータ群DE550を直接的に参照してもよい。図5Bにおいては、間接参照をなくし直接参照を増やすようにグループ分けが最適化される。
さらに、例を示す。図6Aは、本発明の実施例にかかる第1プログラムモジュール602と、第2プログラムモジュール604と、第3プログラムモジュール606と、第4プログラムモジュール608とを含むファンクションコールツリー600の構成例を示す図である。ここで、ファンクションコールツリー600は、SPUのLS302に読み込まれているものとする。図6Aに示すように、第1プログラムモジュール602は、コード関数A610とコード関数B612と、コード関数C614と、コード関数D616と、コード関数E618とを含む。コード関数A610は、処理Aの為のコードを含む。コード関数B612は処理Bの為のコードを含む。コード関数C614は、処理Cの為のコードを含む。コード関数D616は処理Dの為のコードを含む。コード関数E618は、処理Eの為のコードを含む。第1プログラムモジュール602は、コード関数A610と、コード関数B612と、コード関数C614と、コード関数D616と、コード関数E618とそれぞれ関係づけられたデータ群A620と、データ群B622と、データ群C624と、データ群D626と、データ群E628とを含む。データ群A620は、データ群Aを含む。データ群B622は、データの集合Bを含む。データ群C624は、データの集合Cを含む。データ群D626は、データの集合Dを含む。データ群E628は、データの集合Eを含む。
第2プログラムモジュール604は、コード関数F630とコード関数G632とを含む。コード関数F630は、処理Fの為のコードを含む。コード関数G632は、処理Gの為のコードを含む。第2プログラムモジュール604は、データ群F634とデータ群G636とを含む。データ群F634とデータ群G636は、それぞれコード関数F630とコード関数G632に関係づけられている。データ群FG638は、第2プログラムモジュール604にも含まれている。データ群F634は、データの集合Fを含む。データ群G636は、データの集合Gを含む。データ群FG638は、データの集合FとGとを含む。
第3プログラムモジュール606は、コード群H640とコード群I642を含む。コード群H640は処理Hの為のコードを含む。コード群I642は、処理Iの為のコードを含む。第3プログラムモジュール606は、データ群H644とデータ群I646とを含む。データ群H644とデータ群I646は、それぞれコード群H640とコード群I642に関係づけられている。データ群IE648は第3プログラムモジュール606にも含まれている。データ群H644はデータの集合Hを含む。データ群I646は、データの集合Iを含む。データ群IE648はデータの集合IとEとを含む。
第4プログラムモジュール608は、コード関数J650とコード関数K652とを含む。コード関数J650は、処理Jの為のコードを含む。コード関数K652は、処理Kの為のコードを含む。第4プログラムモジュール608はデータ群J654とデータ群K656とを含む。データ群J654とデータ群K656はそれぞれコード群H640とコード群I642とに関係づけられている。データ群J654はデータの集合Jを含む。データ群K656はデータの集合Kを含む。
図6Aに示す例においては、第1プログラムモジュール602に関しては、コード関数A610は矢印613に指し示されたコード関数B612を直接参照し、また、矢印615によって指し示されたコード関数C614を直接参照し、また、矢印617によって指し示されたコード関数D616を直接参照し、また、矢印619によって指し示されたコード関数E618を直接参照する。コード関数C614は、破線矢印631によって指し示されたコード関数F630と、破線矢印633によって指し示されたコード関数G632とを間接的に参照する。コード関数D616は破線矢印641によって指し示されたコード群H640と、破線矢印643によって指し示されたコード群I642とを間接的に参照する。コード関数E618は、破線矢印645によって指し示されたコード群I642と、破線矢印647によって指し示されたデータ群IE648とを間接的に参照する。
第2プログラムモジュール604においては、コード関数F630は、矢印637によって指し示されたデータ群FG638を直接参照する。コード関数G632は、矢印639によって指し示されたデータ群FG638を直接参照する。第3プログラムモジュール606においては、コード群H640は、破線矢印651によって指し示されたコード関数J650を間接的に参照する。コード群H640は、破線矢印653によって指し示されたコード関数K652にも間接的に参照する。コード群I642は、矢印649によって指し示されたデータ群IE648を直接参照する。第4プログラムモジュール608においては、コード関数J650は、矢印655によって指し示されたコード関数K652を直接参照する。
ここでは、8つの内部的な呼び出し、すなわち、8つの直接参照がファンクションコールツリー600に存在する。また、8つの外部的な呼び出し、すなわち、8つの間接参照がファンクションコールツリー600に存在する。8つの外部的な呼び出しは、望まれざるかなりのオーバーヘッドを生成する。それゆえに、ファンクションコールツリー600の各要素を再グループ化して間接参照を最小化することが好ましい。
図6Bは、図6Aのファンクションコールツリー600を再グループ化したファンクションコールツリー660の構成例を示す図である。図6Bのファンクションコールツリー660は、第5プログラムモジュール662と、第6プログラムモジュール664と、第7プログラムモジュール666と、第8プログラムモジュール668とを含む。第5プログラムモジュール662と、第6プログラムモジュール664と、第7プログラムモジュール666と、第8プログラムモジュール668は、SPUのLS302に読み込まれているものとする。図6Bに示すように、第5プログラムモジュール662は、コード関数A610と、コード関数B612と、データ群A620と、データ群B622とを含む。第6プログラムモジュール664は、コード関数C614と、コード関数F630と、コード関数G632とを含む。第2プログラムモジュール604は、データ群F634と、データ群G636と、データ群FG638を含む。第7プログラムモジュール666は、コード関数D616と、コード関数E618と、コード群I642とを含む。第7プログラムモジュール666は、データ群D626と、データ群E628と、データ群I646と、データ群IE648も含む。第8プログラムモジュール668は、コード群H640と、コード関数J650と、コード関数K652と、データ群H644と、データ群J654と、データ群K656とを含む。
図6Bに示す例においては、第5プログラムモジュール662においては、コード関数A610は、矢印613で指し示されるように、コード関数B612を直接参照する。しかしながら、再グループ化によって、第5プログラムモジュール662は、破線矢印615’で指し示されるように、コード関数C614を間接的に参照し、また、破線矢印617’で示すように、コード関数D616を間接的に参照し、また、破線矢印619’で示すように、コード関数E618を間接的に参照している。
第6プログラムモジュール664においては、コード関数C614は、矢印631’で指し示されるようにコード関数F630を直接参照している。また、コード関数C614は、矢印633’に指し示されるように、コード関数G632を直接参照している。コード関数F630は、矢印637で指し示されるように、データ群FG638を直接参照している。また、コード関数G632は、矢印639で指し示されるように、データ群FG638を直接参照している。
第7プログラムモジュール666においては、コード関数D616は、破線矢印641で指し示されるように、コード群H640を間接的に参照している。しかし今は、矢印643’で指し示されるように、コード群I642を直接的に参照している。コード関数E618は、矢印645’で示すようにコード群I642を直接参照している。また、コード関数E618は、矢印647’で示すようにデータ群IE648を直接参照している。コード群I642は、矢印649で示すようにデータ群IE648を直接参照している。
第8プログラムモジュール668において、コード群H640は、矢印651’で示すようにコード関数J650を直接参照している。コード群H640は、矢印653’で示すようにコード関数K652も直接参照している。コード関数J650は、矢印655で示すようにコード関数K652を直接参照している。
ここでは、12個の内部的な呼び出し、すなわち、12の直接参照と、4つのみの外部的な呼び出し、すなわち、間接参照をファンクションコールツリー660において行っている。間接参照の個数を半分に減らすことによって、望まれざるオーバーヘッドの量が最小化される。
LS302に読み込むことのできるモジュールの個数は、LS302のサイズとモジュール自身のサイズによって制限される。しかしながら、どのように参照がなされるかについてのコード解析は、プログラムモジュールが必要とされる前にLS302にプログラムモジュールをロードしたり、アンロードすることができる強力なツールを供給する。プログラムモジュールが必要になることをある箇所において決定することができるならば、そのモジュールの読み込みを前もって行うことができ、オンデマンドでモジュールを読み込むときの遅延を減少することができる。与えられたモジュールが使われることが完全にはわからない場合であっても、そのモジュールが使われる可能性が非常に高い(たとえば、75%以上)ならば、そのモジュールを予測して読み込むことは、多くの場合、より効率的である。
参照は、厳密に作成することもできるが、参照が現実に使われる可能性に応じて、オンデマンドで検査を行ってもよい。そのような読込みルーチンのためのプログラムの挿入個所は、コンパイラもしくは同等のツールを使って統計的に決定することができる。挿入個所は、モジュールが生成される前に静的に決定することもできる。挿入個所の有効性は、実行時の状態に基づいて決定することができる。例えば、読み込みが行われるべきか否かを判断する読み込みルーチンを利用してもよい。好ましくは、実行時において、読み込まれたプログラムモジュールの集合に対してローディングやアンローディングの量が最小化される。実行時にプロファイルを解析することによりは、読み込まれるそれぞれのモジュールの位置を決定する為の最新情報を供給することができる。典型的なスタックの管理によって、さらなる呼び出しを伴わないモジュールに対しては、任意の読み込み箇所が選択されることになる。例えば、従来のスタック管理処理においては、スタックのフレームは、戻りポインタによって構成されている。関数が戻ったとき、呼び出しモジュールを含むモジュールは、呼び出されたときと同じ位置に配置されなければならない。モジュールが戻り時に同じ位置に読み込まれるかぎり、モジュールが新規に呼び出されるたびに、異なった位置に読み出すことができる。しかしながら、外部の関数呼び出しから戻る場合は、管理ルーチンは、呼び出しモジュールを元の位置に読み込む。
図7Aは、本発明の実施例にかかる事前読み込み処理のフローダイアグラムの例を示す図である。まず、S702において初期化が実行される。S704においては、挿入個所がプログラムモジュールごとに決定される。上述したように、挿入個所は、コンパイラもしくはプロファイル解析ツールによって決定される。処理の実行の分岐のパスは、ツリー構造によって表される。参照を行なおうとしているか、または、行なわれる可能性があるかを判別するのはそのツリー構造の箇所である。例えば、0%から100%の範囲における確率に基づいて、判別する。100%とは、参照が明確に行われる場合をいい、0%とは、参照が行われないことをいう。挿入個所は、分岐の後に設置される。次に、S706において、モジュールもしくは複数のモジュールは、たとえば、DMA転送装置などによって読み込まれる。読み込みは、コードの実行による遅延を最小化する為に、好ましくは、バックグラウンドの処理として実行される。次に、S708において、読み込みが完了したかどうかが判別される。読み込み処理が完了していない場合、S710において、コードの実行は、プログラムモジュールの全ての読み込みを許可するために停止されてもよい。読み込みが完了した場合、そのプロセスはS712において終了する。
図7Bは、図7Aに示すプログラムモジュールの事前読み込みの例を示す図である。図7Aに示すように、コード実行722は処理部、例えばSPU300によって実行される。まず、第1の関数Aが処理部によって実行されてもよい。第2の関数Bの挿入個所724が上述のように判別された場合、関数Bを含むプログラムモジュールは、たとえば、DMA転送726などによって読み込まれる。DMA転送726はTLOADの時間を要する。処理部が関数Bを実行する準備ができているなら、たとえば、関数Aにおけるプログラムジャンプ728により、S708のようにプログラムモジュールBの読み込みが完了したかを判別する。図7Bに示すように、ジャンプ(分岐)728が起こるまでにDMA転送726は完了していない。それゆえに、待ち時間TWAITがDMA転送726が完了するまで存在する。処理部は、例えば、一つもしくはそれ以上のNOPS(No Operation。空処理。)をTWAITの間実行する。TWAITが終わった場合、処理部は、開始個所730の時点において、関数Bの処理を開始する。従って、待ち時間TWAITを考慮すると、モジュールを先読みすることにより時間Δだけ節約できることがわかる。
本実施例におけるプログラムモジュールを最適化する利益は、モジュールのローディングもしくはアンローディングの為の待ち時間を最小化することにある。最小化するための1つのファクタ(要因)は、モジュールの転送における遅延とその幅である。実際に、転送が行われる間に要する時間は、直接的には以下のファクタ(要因)に関係する。(a)参照が行われている回数。(b)転送準備の為の時間。(c)転送のサイズ。(d)転送幅。他のファクタ(要因)としては、利用可能なメモリ空間のサイズである。
静的な解析がコード組織化の処理の一部として用いられている間は、一般的に、複数の関数間における関係を供給することに制限され、所定期間に関数に対して何回呼び出しが発生するかについての情報は供給しない。好ましくは、そのような静的なデータへの参照は、再グループ化におけるファクタとして用いられる。関数内における関数の呼び出し回数と呼び出し頻度についての情報を供給するためにコードの追加的な解析が用いられてもよい。また、ある態様においては、最適化は、静的な解析のみを使って取得された情報に制限される。
最適化アルゴリズムに含まれる他の要件としては、モジュールの予期されたレイアウトとサイズである。例えば、呼び出されるモジュールを読み込む(ロードする)ために呼び出す側のモジュールをアンロードしなければならない場合、そのアンロードにより、関数の呼び出しを完了する為のさらなる遅延が付加される。
最適化アルゴリズムの設計においては、一つまたはそれ以上のファクタ(例えば重み係数)が好ましくは含まれ、最適化を定量化するために用いられる。あるファクタにおいては、関数の参照は、好ましくは、呼び出しの頻度、モジュールの呼び出し回数、モジュールのサイズに重きがおかれる。例えば、モジュールの呼び出し回数にモジュールのサイズが乗算される。静的な解析においては、下位のファンクションコールツリーを呼び出す関数は、そのコールがより頻繁になされることを示すために、より大きな重み付けがなされる。
他の要素としては、モジュール内における呼び出し(ローカル参照)があった場合、その重み付けは0となるか、もしくは減少される。さらなる要件としては、コードの構造の解析を伴う関数からの呼び出しごとに異なった重みが設定される。例えば、呼び出しに関しては、一回のみの呼び出しは、ループの一部において何度もなされる呼び出しよりも低く重み付けされることが望ましい。さらに、ループの繰り返しの回数が決定される場合、その回数はループの呼び出しに対する重み付けのファクタとして用いられる。さらなる他の要件としては、単一の関数のみに使用される静的なデータ参照は、その関数に付加されているものとみなす。他の要件としては、静的なデータが異なった関数で共有されている場合、単一のモジュールの中にそれらの複数の関数を含めることが望ましい。
さらに他の要件としては、全体のプログラムが十分小さい場合、そのプログラムは、単一のモジュール内に配置されるべきである。または、そのプログラムは複数のモジュールに分割されるべきである。さらに他の要素として、そのプログラムモジュールが複数のモジュールに分割される場合、呼び出すモジュールと呼び出されるモジュールとが一緒にローカルメモリの中に入るようにモジュール群を組織化することが好ましい。プログラムを1つのモジュールに分割することに関する前述の二つの要件は、望ましい最適化アルゴリズムを達成するために他の要素を考慮して評価されるべきである。上述した図は、選択された一つもしくはそれ以上のファクタにしたがってなされるさまざまな再組織化について示した。
図8は、本発明の実施例にかかるネットワーク環境またはスタンドアロンで利用される様々なコンピュータデバイスを含むコンピュータネットワークのダイアグラム例を示す図である。コンピュータデバイスは、ユーザのさまざまなタイプの入力を用いるコンピュータタイプのデバイス、ディスプレイ、メモリ、およびプロセッサなどを含む。これらの構成は、典型的なパーソナルコンピュータ、ラップトップ、サーバ、ゲーム機、PDAなどに見られるものである。 例えば、図8は、コンピュータネットワーク800を図示する。コンピュータネットワーク800は、ネットワーク870を介してそれぞれ接続された、第1コンピュータ処理システム810と、第2コンピュータ処理システム820と、第3コンピュータ処理システム830と、第4コンピュータ処理システム840と、第5コンピュータ処理システム850と、第6コンピュータ処理システム860とを含む。それらは、LAN、WAN、インターネットなどのネットワーク870によって接続されている。また、有線であってもよく、無線であってもよく、またはそれらの組合せで接続されていてもよい。
それぞれのコンピュータ処理システムは、例えば、一つもしくはそれ以上のコンピュータデバイスを含む。コンピュータデバイスは、キーボード811やマウス812やさまざまな他のタイプによる入力、たとえば、ペン入力、ジョイスティック、ボタン、タッチスクリーン、などからユーザの入力を受け付ける。また、表示インタフェース813(接続部やポートやカードなど)が表示装置814に接続するためのものとして用いられている。また、表示装置814は、CRT、LCD、プラズマ画面、TV、プロジェクタなどが含まれる。それぞれのコンピュータは、好ましくは、通常の処理コンポーネントを含む。通常の処理コンポーネントはコンピュータ処理システムに含まれた一つまたは複数の処理部やメモリデバイスなどである。そのようなコンピュータデバイスに含まれるメモリと処理部は、例えば、上述した本発明のさまざまな実施例におけるプログラム参照を使ったプログラムモジュールの処理を実行するのに適している。メモリは、本発明に係るコード関数とデータ群とを記憶する内部および外部の記憶部を含むことができる。
本発明について、特定の実施例に関して記載した。これらの実施例は、本発明の目的および応用例を単に示したものにすぎないと理解される。したがって、多数の改良は、実施例から導出され、また、他の変形技術は、請求項によって定義された本発明の思想や範囲から逸脱することなく発明された発明されると理解される。
本発明の実施例にかかる基本的な処理モジュールもしくは処理要素の構成例を示す図である。 本発明の実施例にかかる複数のPEを含む処理部の構成例を示す図である。 本発明の実施例にかかるSPUの構成例を示す図である。 本発明の実施例にかかるプログラムモジュールの使用に基づく記憶管理の例を示す図である。 本発明の実施例にかかる第1のフローダイアグラム例を示す図である。 本発明の実施例にかかる第1プログラムモジュールと第2プログラムモジュールを含むプログラムモジュール群の構成例を示す図である。 図5Aのプログラムモジュール群の再グループ化の例を示す図である。 本発明の実施例にかかる第1プログラムモジュールと、第2プログラムモジュールと、第3プログラムモジュールと、第4プログラムモジュールとを含むコール関数のコールツリーファンクションコールツリーの構成例を示す図である。 図6Aのファンクションコールツリーを再グループ化したファンクションコールツリーの構成例を示す図である。 本発明の実施例にかかる事前読み込み処理のフローダイアグラムの例を示す図である。 図7Aに示すプログラムモジュールの事前読み込みの例を示す図である。 本発明の実施例にかかるネットワーク化された、もしくは、単独の様々なコンピュータデバイスを含むダイアグラム例を示す図である。
符号の説明
100 PE、 102 入出力インタフェイス、 104 PU、 106 DMAC、 108 SPU、 110 メモリインタフェイス、 120 PEバス、 122 広帯域メモリバス、 124 入出力バス、 130 メモリ、 200 PE、 202 共有バス、 204 メモリバス、 206 DMAC、 208 メモリ、 210 入出力バス、 212 入出力制御部、 214 入出力デバイス、 300 SPU、 302 LS、 304 レジスタ、 306 FPU、 308 IU、 310 バス、 312 バスインタフェイス、 314 第1内部バス、 316 第2内部バス、 318 第3内部バス、 414 管理ルーチン、 500 プログラムモジュール群、 600 ファンクションコールツリー、 660 ファンクションコールツリー、 724 挿入個所、 726 DMA転送、 728 ジャンプ個所、 730 開始個所、 800 コンピュータネットワーク、 810 第1コンピュータ処理システム、 811 キーボード、 812 マウス、 813 表示インタフェース、 814 表示装置、 820 第2コンピュータ処理システム、 830 第3コンピュータ処理システム、 840 第4コンピュータ処理システム、 850 第5コンピュータ処理システム、 860 第6コンピュータ処理システム、 870 ネットワーク。

Claims (35)

  1. ローカルメモリを有する処理部を制御する方法であって、
    プログラム参照情報に関係付けられたプログラムモジュールが前記ローカルメモリに読み込まれたことを判別するステップと、
    前記プログラムモジュールが前記ローカルメモリに読み込まれていない場合、前記ローカルメモリに対し、前記プログラムモジュールを読み込むステップと、
    前記プログラム参照情報にもとづいて、前記プログラムモジュールから情報を取得するステップと、
    を含むことを特徴とする制御方法。
  2. 前記プログラムモジュールから取得される情報は、データとコードのうち少なくとも一方を含むことを特徴とする請求項1に記載の制御方法。
  3. 前記プログラムモジュールは、主記憶部から前記ローカルメモリに読み込まれるオブジェクトモジュールを含むことを特徴とする請求項1または2のいずれかに記載の制御方法。
  4. 前記プログラム参照情報は、前記プログラムモジュール内への直接参照情報を含むことを特徴とする請求項1から3のいずれかに記載の制御方法。
  5. 前記プログラム参照情報は、第2プログラムモジュールへの間接参照情報を含むことを特徴とする請求項1から4のいずれかに記載の制御方法。
  6. 前記プログラムモジュールは第1プログラムモジュールであり、
    当該制御方法は、前記第1プログラムモジュールと第2プログラムモジュールを主記憶部に記憶するステップをさらに含み、
    前記読み込むステップは、前記主記憶部から前記ローカルメモリに第1プログラムモジュールを読み込ませることを特徴とする請求項1から5のいずれかに記載の制御方法。
  7. 前記プログラム参照情報は、前記第1プログラムモジュール内への直接参照情報を含むことを特徴とする請求項6に記載の制御方法。
  8. 前記プログラム参照情報は、第2プログラムモジュールへの間接参照情報を含むことを特徴とする請求項6または7のいずれかに記載の制御方法。
  9. 前記プログラム参照情報は前記第2プログラムモジュールから得られ、
    当該制御方法は、
    前記第2プログラムモジュールが前記ローカルメモリから読み込まれていることを判別するステップと、
    前記第2プログラムモジュールが前記ローカルメモリから読み込まれていない場合、前記ローカルメモリに前記第2プログラムモジュールを読み込むステップと、
    前記第1プログラムモジュールに前記プログラム参照情報を供給するステップと、
    をさらに含むことを特徴とする請求項8に記載の制御方法。
  10. ローカルメモリを有する処理部を制御する方法であって、
    主記憶部から第1プログラムモジュールを取得するステップと、
    前記主記憶部から第2プログラムモジュールを取得するステップと、
    前記第1プログラムモジュールにて使用されるプログラム参照情報が、前記第2プログラムモジュールへの間接参照情報を含むことを判別するステップと、
    前記プログラム参照情報が前記間接参照情報を含む場合、前記第1プログラムモジュールの少なくとも一部分を含む新規プログラムモジュールを形成して、前記プログラム参照情報を前記新規プログラムモジュールの複数の部分間における直接参照情報とするステップと、
    を含むことを特徴とする制御方法。
  11. 前記新規プログラムモジュールを前記ローカルメモリに読み込むステップをさらに含むことを特徴とする請求項10に記載の制御方法。
  12. 前記新規プログラムモジュールを形成する前に、前記第1プログラムモジュールと第2プログラムモジュールを前記ローカルメモリに読み込ませることを特徴とする請求項10または11のいずれかに記載の制御方法。
  13. 前記第1プログラムモジュールは第1コード関数を含み、かつ、前記第2プログラムモジュールは第2コード関数を含み、かつ、前記新規プログラムモジュールは、前記第1コード関数と第2コード関数のうち少なくとも一方を含んで形成されることを特徴とする請求項10から12のいずれかに記載の制御方法。
  14. 前記第1プログラムモジュールは、データ群をさらに含み、前記新規プログラムモジュールは、前記データ群をさらに含んで形成されることを特徴とする請求項10から13のいずれかに記載の制御方法。
  15. 前記プログラム参照情報は前記第2プログラムモジュールへの間接参照情報であって、
    当該制御方法は、
    前記第1プログラムモジュールにて使用される前記プログラム参照情報にもとづいて、前記新規プログラムモジュールにて使用される新規プログラム参照情報を決定するステップと、をさらに含み、
    前記新規プログラムモジュールは、前記第1プログラムモジュールの少なくとも一部分と、前記第2プログラムモジュールの少なくとも一部分とを含んで形成されることにより、前記新規プログラム参照情報は、前記新規プログラムモジュールへの直接参照情報となることを特徴とする請求項10から14のいずれかに記載の制御方法。
  16. ローカルメモリを有する処理部における処理方法であって、
    前記ローカルメモリに読み込まれている第1プログラムモジュールを実行するステップと、
    第2プログラムモジュールの挿入個所を決定するステップと、
    前記第1プログラムモジュールの実行中に、前記ローカルメモリに第2プログラムモジュールを読み込むステップと、
    前記第2プログラムモジュールの実行を開始するために、予測実行時間を決定するステップと、
    前記第2プログラムモジュールの読み込みが完了したことを判別するステップと、
    前記第1プログラムモジュールの実行が終了した後に、前記第2プログラムモジュールを実行するステップと、
    を含むことを特徴とする処理方法。
  17. 読み込みが完了していない場合、前記第2プログラムモジュールの実行を遅延させるステップと、をさらに含むことを特徴とする請求項16に記載の処理方法。
  18. 前記遅延させるステップは、読み込みが完了するまで、1もしくはそれ以上のNOP(No Operation)処理を実行するステップを含むことを特徴とする請求項17に記載の処理方法。
  19. 前記挿入個所は、統計的に決定されることを特徴とする請求項16から18のいずれかに記載の処理方法。
  20. 前記挿入個所の有効性は、実行時の状態にもとづいて決定されることを特徴とする請求項16から19のいずれかに記載の処理方法。
  21. プログラムモジュールを記憶できるローカルメモリと、
    プログラム参照情報とプログラムモジュールとを関係付け、前記プログラムモジュールが前記ローカルメモリに現在読み込まれていることを判別し、前記ローカルメモリに現在読み込まれていない場合に前記プログラムモジュールを前記ローカルメモリに読み込み、前記プログラム参照情報にもとづいて前記プログラムモジュールから情報を取得する管理機能を実行する論理回路を有する、前記ローカルメモリに接続されたプロセッサと、
    を備えることを特徴とする処理システム。
  22. 前記ローカルメモリは、前記プロセッサに内蔵されていることを特徴とする請求項21に記載の処理システム。
  23. プログラムモジュールを記憶できるローカルメモリと、
    第1プログラムモジュールと第2プログラムモジュールを主記憶装置に記憶し、前記第1プログラムモジュールと第2プログラムモジュールのいずれかを選択して前記主記憶装置から前記ローカルメモリに読み出し、前記選択されたプログラムモジュールとプログラム参照情報を関係付け、前記プログラム参照情報にもとづいて情報を取得する管理機能を実行する論理回路を有する、前記ローカルメモリに接続されたプロセッサと、
    を備えることを特徴とする処理システム。
  24. 前記主記憶装置は、半導体基板上に備えられた記憶装置を含むことを特徴とする請求項23に記載の処理システム。
  25. 前記ローカルメモリは、前記プロセッサと統合されていることを特徴とする請求項23または24のいずれかに記載の処理システム。
  26. プログラムモジュールを記憶できるローカルメモリと、
    主記憶装置から第1プログラムモジュールを取得し、前記主記憶装置から第2プログラムモジュールを取得し、前記第1プログラムモジュールに使用される第1プログラム参照情報を決定し、前記第1プログラムモジュールの少なくとも一部を含む新規プログラムモジュールを形成して、前記第1プログラム参照情報を前記新規プログラムモジュール内の直接参照情報とし、前記ローカルメモリに前記新規プログラムモジュールを読み込ませる管理機能を実行する論理回路を有する、前記ローカルメモリに接続されたプロセッサと、
    を備えることを特徴とする処理システム。
  27. プログラムモジュールを記憶できるローカルメモリと、
    前記ローカルメモリに接続されたプロセッサとを備え、
    前記プロセッサは、第1プログラムモジュールの挿入個所を決定し、前記プロセッサによる第2プログラムモジュールの実行中に前記第1プログラムモジュールを前記ローカルメモリに読み込ませ、前記第2プログラムモジュールの実行後であって、かつ、前記読み込みが完了した後に、前記第1プログラムモジュールを実行するための管理機能を実行する論理回路を有することを特徴とする処理システム。
  28. プログラム参照情報によって関係づけられたプログラムモジュールを特定し、
    前記プログラムモジュールがローカルメモリに現在読み込まれていることを判別し、
    前記プログラムモジュールが前記ローカルメモリに現在読み込まれていない場合、前記プログラムモジュールを前記ローカルメモリに読み込み、
    前記プログラム参照情報にもとづいて、前記プログラムモジュールから情報を取得する
    ことをプロセッサに実行させるためのプロセッサにて使用されるプログラムを記憶する記憶媒体。
  29. バスを含む処理要素と、
    処理部と、
    前記バスを介して前記処理部と接続された少なくとも1つの副処理部と、
    を備え、
    前記処理部と前記少なくとも1つの副処理部のうち少なくとも一方は、プログラム参照情報は第1プログラムモジュールに属することを判別し、ローカルメモリに前記第1プログラムモジュールを読み込み、前記プログラム参照情報にもとづいて前記第1プログラムモジュールから情報を取得するように機能することを特徴とする処理システム。
  30. ユーザ入力部と、
    表示装置を装着するための表示インターフェイスと、
    プログラムモジュールを記憶できるローカルメモリと、
    前記ローカルメモリに接続されるプロセッサとを備え、
    前記プロセッサは、1またはそれ以上の処理要素を有し、前記処理要素のうち少なくとも1つの処理要素はプログラム参照情報が第1プログラムモジュールに属しているかを判別し、前記ローカルメモリに前記第1プログラムモジュールを読みこみ、前記プログラム参照情報にもとづいて前記第1プログラムモジュールから情報を取得する管理機能を実行する論理回路を含むことを特徴とするコンピュータ処理システム。
  31. 通信ネットワークを介して他のコンピュータ処理システムと接続されている複数のコンピュータ処理システムを備えるコンピュータのネットワークであって、
    前記コンピュータ処理システムは、
    ユーザ入力部と、
    表示装置を装着するためのインターフェイスと、
    プログラムモジュールを記憶できるローカルメモリと、
    前記ローカルメモリに接続されるプロセッサとを備え、
    前記プロセッサは、1またはそれ以上の処理要素を有し、前記処理要素のうち少なくとも1つの処理要素はプログラム参照情報が第1プログラムモジュールに属しているかを判別し、前記ローカルメモリに前記第1プログラムモジュールを読みこみ、前記プログラム参照情報にもとづいて前記第1プログラムモジュールから情報を取得する管理機能を実行する論理回路を含むことを特徴とするコンピュータのネットワーク。
  32. プログラム参照情報によって関係づけられたプログラムモジュールを特定し、
    前記プログラムモジュールがローカルメモリに現在読み込まれていることを判別し、
    前記プログラムモジュールが前記ローカルメモリに現在読み込まれていない場合、前記プログラムモジュールを前記ローカルメモリに読み込み、
    前記プログラム参照情報にもとづいて、前記プログラムモジュールから情報を取得する
    ことをプロセッサに実行させるためのプログラム。
  33. 第1プログラムモジュールと第2プログラムモジュールを主記憶装置に記憶し、
    プログラム参照情報と関係付けられた前記第1プログラムモジュールを前記主記憶装置から、プロセッサに関係付けられたローカルメモリに読み出し、
    前記プログラム参照情報にもとづいて情報を取得することを前記プロセッサに実行させるためのプログラム。
  34. 主記憶装置から第1プログラムモジュールを取得し、
    前記主記憶装置から第2プログラムモジュールを取得し、
    第1プログラムモジュールにて使用されるプログラム参照情報が前記第2プログラムモジュールへの間接参照情報を含むことを判別し、
    前記プログラム参照情報が前記間接参照情報を含む場合、少なくとも第1プログラムモジュールの一部分を含む新規プログラムモジュールを形成して、前記プログラム参照情報を前記新規プログラムモジュールの部分間における直接参照情報とすることをプロセッサに実行させるためのプログラム。
  35. プロセッサに関係付けられたローカルメモリに読み込まれた第1プログラムモジュールを実行し、
    第2プログラムモジュールの挿入個所を決定し、
    前記第1プログラムモジュールの実行中に、前記ローカルメモリに第2プログラムモジュールを読み込み、
    前記第2プログラムモジュールの実行を開始するための予測実行時間を決定し、
    前記第2プログラムモジュールの読み込みが完了したことを判別し、
    前記第1プログラムモジュールの実行が終了した後に、前記第2プログラムモジュールを実行することをプロセッサに実行させるためのプログラム。
JP2005283606A 2004-10-01 2005-09-29 制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、コンピュータのネットワーク Pending JP2006107497A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/957,158 US20060075394A1 (en) 2004-10-01 2004-10-01 Dynamic loading and unloading for processing unit

Publications (1)

Publication Number Publication Date
JP2006107497A true JP2006107497A (ja) 2006-04-20

Family

ID=35517186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005283606A Pending JP2006107497A (ja) 2004-10-01 2005-09-29 制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、コンピュータのネットワーク

Country Status (6)

Country Link
US (2) US20060075394A1 (ja)
EP (1) EP1794674A1 (ja)
JP (1) JP2006107497A (ja)
KR (1) KR20080104073A (ja)
CN (1) CN1914597A (ja)
WO (1) WO2006038664A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211540A (ja) * 2008-03-05 2009-09-17 Internatl Business Mach Corp <Ibm> コンピュータ使用可能コードを実行する装置及び方法
JP2009230756A (ja) * 2008-03-24 2009-10-08 Nvidia Corp 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令
US8195925B2 (en) 2007-03-22 2012-06-05 Sony Computer Entertainment Inc. Apparatus and method for efficient caching via addition of branch into program block being processed

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146865B2 (en) 2005-01-26 2015-09-29 Lantiq Beteiligungs-GmbH & Co.KG Operating a dual-ported internal memory
US20080005473A1 (en) * 2006-06-30 2008-01-03 Tong Chen Compiler assisted re-configurable software implemented cache
KR100866627B1 (ko) * 2007-01-29 2008-11-03 삼성전자주식회사 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템
CN101193452B (zh) * 2007-03-15 2011-03-16 中兴通讯股份有限公司 自动交换光网络中控制模块注册的方法及其应用方法
GB2456019A (en) * 2007-12-31 2009-07-01 Symbian Software Ltd Loading dynamic link libraries in response to an event
KR101670916B1 (ko) * 2009-03-03 2016-10-31 삼성전자 주식회사 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치
KR101633484B1 (ko) * 2009-12-11 2016-06-27 삼성전자주식회사 선택적 부팅 방법 및 이를 이용한 방송 수신 장치
US9710355B2 (en) * 2010-01-14 2017-07-18 Microsoft Technology Licensing, Llc Selective loading of code elements for code analysis
US8640115B2 (en) * 2010-04-30 2014-01-28 Oracle International Corporation Access control in modules for software development
KR102087395B1 (ko) * 2013-01-16 2020-03-10 삼성전자주식회사 전자 장치에서 응용프로그램을 실행하기 위한 장치 및 방법
KR102547795B1 (ko) * 2016-05-04 2023-06-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US10360005B2 (en) * 2016-10-24 2019-07-23 International Business Machines Corporation Local function call tailoring for function pointer calls
US10534593B2 (en) * 2016-10-24 2020-01-14 International Business Machines Corporation Optimized entry points and local function call tailoring for function pointers
US10268465B2 (en) * 2016-10-24 2019-04-23 International Business Machines Corporation Executing local function call site optimization
US10725838B2 (en) * 2017-03-29 2020-07-28 Microsoft Technology Licensing, Llc Application startup control
US10776133B2 (en) * 2018-01-25 2020-09-15 Salesforce.Com, Inc. Preemptive loading of code dependencies for improved performance
CN113821272B (zh) * 2021-09-23 2023-09-12 武汉深之度科技有限公司 一种应用程序运行方法、计算设备及存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123098A (en) * 1989-02-28 1992-06-16 Hewlett-Packard Company Method for executing programs within expanded memory of a computer system using MS or PC DOS
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
IL100990A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher
EP0535265B1 (de) * 1991-09-30 1998-03-18 Siemens Aktiengesellschaft Verfahren zur Erstellung einer ablauffähigen Konfiguration eines in einen Systemspeicherbereich eines Prozessorsystems ladbaren Systemprogramms
US5625822A (en) * 1992-06-26 1997-04-29 Digital Equipment Corporation Using sorting to do matchup in smart recompilation
US5566324A (en) * 1992-12-24 1996-10-15 Ncr Corporation Computer apparatus including a main memory prefetch cache and method of operation thereof
US5452457A (en) * 1993-01-29 1995-09-19 International Business Machines Corporation Program construct and methods/systems for optimizing assembled code for execution
US5475840A (en) * 1993-04-13 1995-12-12 Sun Microsystems, Inc. High performance dynamic linking through caching
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
JPH10116229A (ja) * 1996-10-09 1998-05-06 Toshiba Corp データ処理装置
US5901291A (en) * 1996-10-21 1999-05-04 International Business Machines Corporation Method and apparatus for maintaining message order in multi-user FIFO stacks
US6080204A (en) * 1997-10-27 2000-06-27 Altera Corporation Method and apparatus for contemporaneously compiling an electronic circuit design by contemporaneously bipartitioning the electronic circuit design using parallel processing
JP3638770B2 (ja) * 1997-12-05 2005-04-13 東京エレクトロンデバイス株式会社 テスト機能を備える記憶装置
US6175957B1 (en) * 1997-12-09 2001-01-16 International Business Machines Corporation Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring
US7143421B2 (en) * 1998-09-09 2006-11-28 Microsoft Corporation Highly componentized system architecture with a demand-loading namespace and programming model
US6330623B1 (en) * 1999-01-08 2001-12-11 Vlsi Technology, Inc. System and method for maximizing DMA transfers of arbitrarily aligned data
US6718543B2 (en) * 1999-11-08 2004-04-06 Hewlett-Packard Development Company, L.P. Method and apparatus for optimization of the performance of an application program in a computer system while preserving the system behavior
DE10035270A1 (de) * 2000-07-20 2002-01-31 Siemens Ag Verfahren zur Auswahl, Bearbeitung und Anzeige von Daten oder Datenobjekten
JP2002063042A (ja) * 2000-08-21 2002-02-28 Nec Microsystems Ltd プログラム・モジュール管理システム、その管理方法及びその管理プログラムを記録した記録媒体
US20020069263A1 (en) * 2000-10-13 2002-06-06 Mark Sears Wireless java technology
US6457023B1 (en) * 2000-12-28 2002-09-24 International Business Machines Corporation Estimation of object lifetime using static analysis
EP1444584A1 (en) * 2001-10-19 2004-08-11 Telefonaktiebolaget LM Ericsson (publ) Data prefecthing in a computer system
US7580972B2 (en) * 2001-12-12 2009-08-25 Valve Corporation Method and system for controlling bandwidth on client and server

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8195925B2 (en) 2007-03-22 2012-06-05 Sony Computer Entertainment Inc. Apparatus and method for efficient caching via addition of branch into program block being processed
JP2009211540A (ja) * 2008-03-05 2009-09-17 Internatl Business Mach Corp <Ibm> コンピュータ使用可能コードを実行する装置及び方法
JP2009230756A (ja) * 2008-03-24 2009-10-08 Nvidia Corp 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令
US8312254B2 (en) 2008-03-24 2012-11-13 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor
JP2013016192A (ja) * 2008-03-24 2013-01-24 Nvidia Corp 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令
US9639365B2 (en) 2008-03-24 2017-05-02 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor

Also Published As

Publication number Publication date
WO2006038664A1 (en) 2006-04-13
US20080313624A1 (en) 2008-12-18
EP1794674A1 (en) 2007-06-13
KR20080104073A (ko) 2008-11-28
CN1914597A (zh) 2007-02-14
US20060075394A1 (en) 2006-04-06

Similar Documents

Publication Publication Date Title
JP2006107497A (ja) 制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、コンピュータのネットワーク
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
US8327109B2 (en) GPU support for garbage collection
US20080059966A1 (en) Dependent instruction thread scheduling
KR100570138B1 (ko) 복수의 프로세서들에 소프트웨어를 로딩하는 시스템 및 방법
JP2010244529A (ja) デッドロックを起こさないパイプライン処理のためのシステム及び方法
US20060179198A1 (en) Micro interrupt handler
US9304775B1 (en) Dispatching of instructions for execution by heterogeneous processing engines
US9009420B2 (en) Structure for performing cacheline polling utilizing a store and reserve instruction
WO2023173642A1 (zh) 指令调度的方法、处理电路和电子设备
US8949777B2 (en) Methods and systems for mapping a function pointer to the device code
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
KR20150101870A (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
US9983874B2 (en) Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling
CN114218152B (zh) 流处理方法、处理电路和电子设备
CN114510271B (zh) 用于在单指令多线程计算系统中加载数据的方法和装置
US7058938B2 (en) Method and system for scheduling software pipelined loops
US10180839B2 (en) Apparatus for information processing with loop cache and associated methods
WO2006006613A1 (en) Methods and apparatus for updating of a branch history table
JP2003167726A (ja) コプロセッサ装置およびデータ転送を容易にするための方法
US20230195651A1 (en) Host device performing near data processing function and accelerator system including the same
JP2005071351A (ja) プロセッサおよびプロセッサの動作方法
KR20070032294A (ko) 처리 유닛의 동적 로드 및 언로드
KR20230095795A (ko) Ndp 기능을 포함하는 호스트 장치 및 이를 포함하는 가속기 시스템
JP2001022581A (ja) データ処理装置及びコンピュータ読み取り可能な記憶媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081014

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090127

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090602