JP5366552B2 - 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム - Google Patents

集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム Download PDF

Info

Publication number
JP5366552B2
JP5366552B2 JP2008538384A JP2008538384A JP5366552B2 JP 5366552 B2 JP5366552 B2 JP 5366552B2 JP 2008538384 A JP2008538384 A JP 2008538384A JP 2008538384 A JP2008538384 A JP 2008538384A JP 5366552 B2 JP5366552 B2 JP 5366552B2
Authority
JP
Japan
Prior art keywords
auxiliary
unit
processing
apun
control unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008538384A
Other languages
English (en)
Other versions
JP2009515246A5 (ja
JP2009515246A (ja
Inventor
ダヴィ,ラファエル
ダヴィ,ヴァンサン
ヴァントルー,ニコラ
コレット,ティエリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Publication of JP2009515246A publication Critical patent/JP2009515246A/ja
Publication of JP2009515246A5 publication Critical patent/JP2009515246A5/ja
Application granted granted Critical
Publication of JP5366552B2 publication Critical patent/JP5366552B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Description

本発明は集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステムに関する。
本発明は特に組み込み型マルチプロセッサアーキテクチャに適している。
本発明は以下の特徴を備えたシステムにおける処理に関する問題解決手段の提供を目的とする。
・高性能:組み込み型アプリケーションはますます複雑化しつつある。それは組み込み型システムにより多くの機能を実装する必要性にせまられていること(マルチメディア、ゲーム、テレコミュニケーション、携帯電話におけるGPS機能利用等)、および、処理データ量が増大していること(ビデオセンサ、高速コンバーター等の能力向上)からも明らかである。組み込み型システムでは複数の情報処理を同時に並列処理する能力が求められている。それゆえシステム内に分散されている各ユニットにおいて並列処理に必要なすべての情報を効率的に収集、分配、処理することが独立に行われる必要がある。この多数の情報処理を同時に並列処理するという必要性は、マルチタスク実行環境においても同じである。
・柔軟性:ターゲットとなるシステムではオープン性が要求される。システムを利用するどのユーザーでも行いたい業務が自由に実行できなければならない。それゆえシステムのアーキテクチャは多様な利用用途に適するように十分な柔軟性を備えていなければならない。このオープン性ゆえにアーキテクチャ全体にわたってアプリケーションコンテンツの実行前のオフライン状態での最適化は設計段階では十分に行うことができない。アルゴリズムによってはプロセスを単に静的に分割する並列制御が適当なもの(実行前のオフライン状態でも決められるもの)もあるが、その他のアルゴリズムでは実行中の動的ストリーム制御が要求されており、組み込みアプリケーションの複雑性の増大に伴ってこの傾向はますます強まるであろう。
・動作環境への統合性:システムは動作環境に統合されるように開発されていなければならない。この統合性はリアルタイム性、消費電力、コスト、信頼性などの諸条件が反映される。
・異種処理(ヘテロプロセッシング):アプリケーションの多様性と組み込みシステムにおける制御の流れの複雑性のため、様々なタイプの処理が組み込みアーキテクチャ内で共存せざるを得ない。それゆえ、集中処理タスクはアプリケーションの異なる要素間において干渉し合っても優先されるべき制御となっているタスクとして実行される必要がある。
以上まとめると、ターゲットとする組み込みシステムは、異なるデータストリームを実行環境に動的に適合させつつ処理する高い演算性能と通信性能とを備えている必要がある。組み込みシステムは同時に外部環境(消費電力、リアルタイム性等)により大きく制限され、オープンであることが要求され、複数マシンでの利用が前提となる。この環境には様々なタスクが(実行中において)動的に生成され、保持され、消去等されるというマルチアプリケーションシステム環境が含まれている。
このような組み込みシステムでは、アーキテクチャの実行前のオフラインでの最適化を行うと、リソース利用の正確な手順の決定が不可能であるために、リソースの利用不足を招いてしまうことが問題となる。そこで逆に、実行中のオンラインでの最適化に注力し、実行前にオフラインですべての処理動作を事前に予測する必要性を低減した方が良い。しかし、実行前にオフラインによるアーキテクチャの最適化ができないとなると余力あるコストパフォーマンスが高い高価な制御メカニズムが必要となってしまう。本発明は動的制御が統合されていない環境においてもパフォーマンスが低下しない計算機構造を提供することを目的とする。
実行中のシステムでの実行環境の競合において、並列処理を用いることはアプリケーションでのオペレーションレベルまたは命令レベルの並列処理での効果をもたらすものと考えられてきた。しかし、命令レベルでの高度な並列処理を可能とするアーキテクチャを研究することに注力されてきたものの、このアプローチには限界があることが明らかである。また、組み込みアプリケーションの複雑化により、単一の制御ストリームの形でモデリングすることは非常に難しいものである。それでもユーザやアーキテクチャ設計者はタスクレベルでの並列処理を求めている。その結果、現在の有力な技術トレンドは同じシリコン基板上にたくさんのプロセッサコアを組み込み、同一の回路基板上でタスクの並列処理を行うものとなっている。
パフォーマンスを向上させるものとして、並列処理を用いた手法に分類される多くの解決策が提案されている。主要なモデルは、同時マルチスレッディング(Simultaneous MultiThreading:SMT)と、チップマルチプロセッシング(Chip MultiProcessing:CMP)と、チップマルチスレッディング(Chip MultiThreading:CMT)である。
例えば、SMTテクノロジーは最新のインテル製品、IBMおよびHPのアルファプロセッサに実装されている。これらにおいて、複数の命令のストリームから選ばれた命令を実行処理する演算ユニットを割り当ててゆくために複数のプログラムカウンタが用いられている。タスクの相互依存性が限定的であるので、プロセッサにおける命令レベルでの並列処理(ILP)が増加するため、プロセッサパフォーマンスも結果として向上する。これらプロセッサの実装は難しく、読み込みステージと命令分配ステージの複雑性が増す。結果として、これらアーキテクチャは大規模回路となってしまい、組み込みシステムの条件、特にコストと消費電力の条件面において合わなくなくなってしまう。
図1AはSMTアーキテクチャ理論を示すブロック図である。演算ユニットまたはファンクションユニットFUは、タスク割り当て器TDと連動する単一の制御リソースであるCPによりプロセスが与えられる。各サイクルにおいて、制御ブロックCPはタスク割り当て器TDと連動し、ファンクションユニットFUに対してデータ処理に利用可能な機能と処理上の問題点とを通知する。それぞれのファンクションユニットは共有メモリ空間SMSを共用し合う。
図1Bは、4つのファンクションユニットFUを備えた構成における処理操作の例を示している。この図では、各々のブロック1は命令を表わしており、縦軸2は命令割り当てと制御タスクを表わしている。
×印がついているブロック3は、データやリソースの依存性によりファンクションユニットには利用されていないタイムスロットに対応している。
次に、CMPを用いた技術は、比較的シンプルな実装で良いため、もともと組み込みシステムに適したものである。
このCMPを用いた技術は、利用可能性に応じて各々の演算リソースにタスクを分散するというものである。各々の演算リソースは次々と割り当てられたタスクを実行してゆく。これらアーキテクチャはホモ構造とヘテロ構造の2つのファミリーに分けることができる。
・ヘテロ構造:この構造はヘテロ構造で与えられたアプリケーション領域に最適化された演算ユニットが組み込まれ、コンパイル時に前もって認識されたリソースに対してタスクを分散するものである。コンパイル時にパーティション化されたソフトウェアは実行時における(動的な)タスク分散のためにそのメカニズムが簡素化されている。これらアプリケーション指向のソリューションではOMAP、VIPER、PNXおよびノマディックプラットフォームを含んでいる。
・ホモ構造:これらの構造は、IBMセルプラットフォームやARMのMPコアプラットフォームや、与えられたアプリケーション領域に最適化されたもの、例えばMPEG4−AVCコーディング/デコーディング向けに最適化されたクレイドルテクノロジー社のCT3400のように、一般的に用いられるホモ構造の演算ユニットが組み込まれたものがベースとなっている。前者は広い範囲の問題を解決することをターゲットとしている。しかし後者は明らかに特定のアプリケーション領域に最適化されている。
図2Aは、CMPアーキテクチャの理論を示すブロック図である。共有メモリ空間SMSと協働している演算ユニット(ファンクションユニット)FUに対して、タスク割り当て器TDと連動した単一の制御リソースCPによって処理が供給される。タスク割り当て器TDに接続された制御ユニットCPは、タスクの実行準備が整っているか決定する。演算リソースが開放されるとすぐにタスクを割り当て、データがロードされるとすぐに処理が開始される。図2Bは4つのファンクションユニットFUで構成された例を示しており、ハッチングが付けられて示されているブロック4がタスク処理開始を示している。ここで、ブロック1は命令を表し、縦線2は命令の割り当てとタスク制御を表している。
次に、マルチプロセスアンドCMTアーキテクチャは、前記2つのモデルの組み合わせである。CMPコンセプトでは並列処理を専用の演算構成における複数タスクの実行処理まで拡張している。
この技術は本質的にサーバータイプでの実行環境も想定されている。
図3Aは、汎用的CMTアーキテクチャモデルを示している。演算ユニット(ファンクションユニット)にはタスク割り当て器TDに接続されている単一の制御リソースCPによって処理が供給される。ファンクションユニットFUは共有メモリ空間SMSと協働している。
図3BはファンクションユニットFUにおける処理の例を示している。
タスク割り当て器TDと接続されている制御ユニットCPはタスクの実行準備が整ったか決定する。演算リソースが開放されるとすぐにタスクを割り当て、データがロードされるとすぐに処理が開始される。図3Bにハッチングが付けられている領域4によってタスク処理開始が示されており、ブロック1は命令を表し、縦線2は命令の割り当てとタスク制御を表している。
各々の演算リソースは多数のタスクを同時に管理している。例えばキャッシュ容量が足りなくなったなどの理由でタスク処理が滞るとすぐに新しいファンクションユニットFUが割り当てられる。このような環境では、ファンクションユニット内でのタスクの切り替え処理には実行環境のロードペナルティが発生しない。
実行性能を高めるために命令ストリーム(スレッド)の並列処理を用いるこれらアーキテクチャをベースとするエミュレーションにかかわらず、SMTであってもCMPであってもCMTであっても、これらアーキテクチャは組み込みシステムにおける諸問題を部分的にしか解決することができない。この事情の主な原因は、アプリケーションには異なる処理クラスのものが混在しておりそれらを区別ができないからである。そのため同じ処理リソースの中において、実行時間の観点からクリティカルであり制御が優先されるべき処理であっても他の通常処理と同一レベルに扱われてしまう。演算リソースは通常処理のサポートもクリティカル処理のサポートと同様に行ってしまい、最適化されていない演算結果しか得られないシステムとなり、消費電力の観点、コストパフォーマンスの観点、信頼性の観点の三重の観点からアプリケーションの要求には適さないものとなっている。
しかしながら、CMPタイプのシステムでも通常処理とクリティカル処理を区別できるものがある。これらのアーキテクチャは特化した処理を実行できる専用の演算リソースが搭載されているものである。ここでイレギュラーな処理は汎用プロセッサのシステムソフトウェアを用いている。特化した処理を実行できる専用の演算リソースが搭載されているので、パフォーマンスや消費電力効率が改善されるように最適化されうるが、タスク処理間の通信、タスク処理とシステムソフトウェアまたは制御プロセス間の通信が非効率的であり、システムレベルではその最適化の恩恵を受けられない。アーキテクチャ内の様々な要素間の通信ではシステムバスが用られるが、通信バンド幅の不足によるペナルティを招きやすい。そのため、システムには伝送制御情報が遅延してしまうというペナルティと、ビットレートが遅くなるというペナルティが発生し、データ伝送が乱れてしまう。これらペナルティにより応答性の遅いアーキテクチャということとなってしまい、システムソフトウェアは演算リソースを最適には使用できない。
このオーバーヘッドを低減するため、米国特許出願US2005/0149937A1では演算リソース間の同期制御機構が専用構成となっているが、その解決方法ではタスク間のデータ伝送の問題には適用できない。米国特許出願US2004/0088519A1では高性能プロセッサの実行環境におけるタスクの並列処理管理による解決方法を示しているが、その解決方法ではコスト面から組み込みシステムには適用できない。
従来技術において開発されているタスクレベルでの並列処理を用いる解決方法は、上記問題のすべてを解決することはできない。SMTタイプの解決手段では、例えば、典型的には汎用プロセッサをベースとし、追加の制御ステージを付加するものであるが、しかしながら、その解決方法では従来の汎用プロセッサが持っている消費電力の問題を解決することはできず、加えて、多数のスレッドを並列処理管理するために複雑性が増大してしまう。
CMPタイプアーキテクチャの実装には多様なものがあるが、どれも上記問題を解決すために組み込みシステムに対して採用することは難しい。第1に、アプリケーション指向の解決は十分な柔軟性をもたらすことはできない。第2に、汎用アーキテクチャは演算による解決手段を提供できるものでなく、汎用プロセッサを開発するというコストのかかる解決方法をベースとし続けなければならない。同様に、CMTによる解決手段は、アーキテクチャによる並列処理を拡張したものであるが、消費電力の要求を解決するものでなく、また、回路内での通信されるデータの一致性が保たれるように管理しなければならないという問題に直面してしまう。
本発明は、上記した障害を解決することを目的とし、特に、プロセッサにハイレベルの演算リソースを搭載することを可能とするものである。
上記目的を達成するために本発明のシステムは、特定のマルチタスク及びマルチフロー処理をリアルタイム実行するシステムであって、アプリケーションのスレッドのうち、クリティカルでないスレッドは中央プロセッサコア自身で実行されるように割り当て、集中処理すべきまたは特定のスレッドは特定の命令に対して高速処理が可能なように最適化されているN個の補助演算ユニットを備えた補助プロセッシング部で実行されるように割り当て制御をする制御ユニットを備え、システムソフトウェアをサポートする中央プロセッサコアと、内部ネットワークを介して前記補助演算ユニット間で共有されるメモリ空間と、前記集中処理すべきまたは特定のスレッドに対応する各々の命令ストリームをまず並列に前記補助プロセッシング部に割り当て、次にこれら前記命令ストリームの実行を同期制御し、前記命令ストリームの実行環境を管理するように各々の補助リソースに対する制御を行う補助リソース割り当て制御ユニットとを備え、様々なシステム要素が、前記補助演算ユニット間の通信または前記補助演算ユニットと前記中央プロセッサコア間の通信が前記共有メモリ空間と前記内部ネットワークを介して行われるように配置されていることを特徴とする。
上記本発明のシステムは前記中央プロセッサコアに接続されたシステムバスを備えている。
また、上記本発明のシステムは、前記補助演算ユニットにより取り扱うすべてのデータとプログラムを格納した大容量メモリを備えている。
メインメモリ制御部は、前記大容量メモリに接続されている。
上記本発明のシステムにおいて、少なくとも一つの入出力周辺機器と接続された入出力制御部を備えている。入出力信号は共有メモリ空間を介して他のシステム要素において利用可能とされる。したがってクリティカルタイムにおいてもシステムの処理を行うことができる。
前記補助演算ユニットがプログラマブルユニット、リコンフィギュラブルユニット、専用ユニットから選ばれるユニットを備えた構成である。
前記共有メモリ空間が複数のメモリリソースと前記メモリリソースを統合する内部ネットワークを備え、前記共有メモリ空間において前記補助演算ユニットで取り扱うすべてのデータが格納されている。
前記共有メモリ空間がさらに、前記演算に関するリソースと前記共有メモリ空間内の前記メモリリソース間のリンクを確立せしめるメモリ空間制御部を備えている。
前記中央プロセッサコアが、演算ユニットと、メモリユニットと、ローディングユニットを備えている。
前記制御ユニットが、前記補助プロセッシング部を制御するための追加の命令群を備えている。
前記ローディングユニットが、前記中央プロセッサコアと前記補助プロセッシング部間でデータ交換するための追加レジスタキューを備えている。
前記補助演算ユニットのそれぞれが、一時にタスク中の一つの命令ストリームのみを処理するように制御され、アプリケーション向けに最適化され、N個の数が2から100で構成されている。
補助リソース割り当て制御ユニットが、動的消費電力管理、障害管理、クライシスモード管理の少なくとも一つ以上の管理機能を担っている。
一実施例として、第1に前記システムバスの通信を優先し、第2に前記中央プロセッサコアと前記大容量メモリ間の通信を優先するように管理するバスアービターを備えた構成がある。
また、一実施例として、システムバスに接続された複数個のプロセッサであって、前記プロセッサがそれぞれ、前記中央プロセッサコアと、前記N個の補助演算ユニットと、前記共有メモリ空間と、前記補助リソース割り当て制御ユニットを備えた構成がある。
上記システム構成として、前記システムバスと前記中央プロセッサコア間の通信を管理するバスアービターを備えた構成がある。
上記システム構成として、前記複数のプロセッサ間で共有される大容量メモリを備えた構成がある。
また、本発明は、中央プロセッサコアと、コントロールユニットと、N個の補助演算ユニットと、前記N個の補助演算ユニットで内部ネットワークを介して共有されるメモリ空間と、補助リソース割り当て制御ユニットを備えた少なくとも一つのプロセッサ上で用いられる特定のマルチタスク及びマルチフロー処理をリアルタイム実行する方法であって、前記中央プロセッサコアが、システムソフトウェアを実行するとともに、前記制御ユニットが、アプリケーションのスレッドのうち、クリティカルでないスレッドは前記中央プロセッサコア自身で実行されるように割り当て、集中処理すべきまたは特定のスレッドは特定の命令に対して高速処理が可能なように最適化されているN個の補助演算ユニットを備えた補助プロセッシング部で実行されるように前記補助リソース割り当て制御ユニットを介して割り当て制御をし、前記補助リソース割り当て制御ユニットが前記集中処理すべきまたは特定のスレッドに対応する各々の命令ストリームをまず並列に前記補助ユニットに割り当て、次にこれら前記命令ストリームの実行を同期制御し、前記命令ストリームの実行環境を管理するようにし、少なくとも、データ通信が前記補助演算ユニット間の通信または前記補助演算ユニットと前記中央プロセッサコア間の通信が前記共有メモリ空間と前記内部ネットワークを介して行われることを特徴とする。
上記システムにおいて、前記制御ユニットが、標準のリード命令/標準のライト命令または標準のエクセプション命令によって、前記補助リソースの前記割り当て制御ユニットを制御する。
前記制御ユニットが、通信および同期処理に特化した特別の命令群によって、前記補助リソースの前記割り当て制御ユニットを制御する。
与えられた時間内で、前記補助演算ユニットのそれぞれが一時にタスク中の一つの命令ストリームのみを処理し、各々の命令ストリームが一つの前記補助演算ユニットで実行される。
前記補助演算ユニットで取り扱われるすべてのデータおよびプログラムが大容量メモリに格納されている。
クリティカル時には、入出力信号が共有メモリ空間を介して前記補助演算ユニットに伝送される。
前記プロセッサはシステムバスに接続されている。
一実施例として、第1に前記システムバスの通信を優先し、第2に前記中央プロセッサコアと前記入出力装置間の通信を優先するように管理するバスアービターを備えた構成がある。
前記中央プロセッサコアに割り当てられたタスクが、特定命令が出てくるまで前記中央プロセッサコアのサイクルごとに処理されてゆき、前記特定命令に関してはデコードされると前記割り当て制御ユニットに対するコマンドが生成され、前記割り当て制御ユニットの制御によって前記補助演算ユニットの一つで実行される命令ストリームが生成され、ひとたび、特定命令がデコードされ、対応する前記コマンドが生成された場合に、命令ストリームが生成され前記補助演算ユニットにおける実行が管理されても、前記中央プロセッサコアでは干渉を受けることなく実行中の現タスクの継続が可能である。
トラッピング処理がエクセプション処理、インタラプト処理、またはトラップ処理を伴う場合、トラッピングタイプの機能として、前記プロセッサ内のすべての構成要素が同期しなければならない、強い同期処理が有効となる。
また、トラッピング処理がエクセプション処理、インタラプト処理、またはトラップ処理を伴う場合、トラッピングタイプの機能として、前記標準プロセッシング部に対応する実行環境は同期するが、補助リソース割り当て制御ユニット(ACU)は補助演算ユニットにて独立して命令ストリームの実行を継続させる、弱い同期処理が選択される。
トラッピング処理が補助演算ユニットのローカルイベントを伴う場合、当該関係する前記補助演算ユニットのみが前記トラッピング処理を制御し、他のプロセッサとは独立して同期制御が実行される、選択的ローカル同期が有効となる。
従来技術とは異なり、本発明はプロセッサ内の演算リソースを強く統合することができる新しい結合メカニズムを実現している。
本発明のシステムアーキテクチャは、第1のサブシステムは中央プロセッサコアを形成する標準プロセッシング部(SPP)を備え、第2のサブシステムは補助プロセッシング部(APP)を備え、補助プロセッシング部(APP)には補助演算ユニットと制御割り当て補助リソースと共有メモリ空間が実装されている。
2つのサブシステムは異なる特性と機能を持っているが、タスクを実行するという同じ目的を持っている。結果として、これらの機能はデータ処理および制御レベルで強く結合されている。
本発明の他の特徴や利点は以下の実施例に関する詳細な説明と参照する添付図面から明らかになるであろう。
システム10は、アプリケーション11、12、さらにタスク21から25、最終的に命令(スレッド)31から33の流れに細分化されているが、まず、いわゆる“ライトプロセス”と呼ばれるものを図4を参照しつつ説明する。
組み込みシステム10は典型的には多数のアプリケーション11や12などのプロセスの並列処理に用いられる。アプリケーションは組み込みシステムにより提供される機能やサービスを用いる。組み込みシステムで処理されるどのアプリケーション11、12もタスク21から25の形に分割され、アプリケーションの記述による制御依存性に応じて一連のものにまとめられている。これらのタスク21から25は、並列処理が可能となるようにシーケンシャルに実行される操作処理ごとに並列スレッド31から33に分割される。
この詳細な説明において、スレッドという語は、他のプロセスとアドレス空間全体を共有することができる実行ストリームであるライトプロセスを表わすものとして使用されている。
図5は、本発明のプロセッサアーキテクチャの例を示す図である。第1のサブシステムは中央プロセッサコアを形成する標準プロセッシング部SPPを備え、第2のサブシステムは補助プロセッシング部APPを備えている。
標準プロセッシング部SPPは一般的なタスクの実行処理を担っている。処理されるべきプログラム命令とシステムソフトウェアとを含んでいる。従来技術のプロセッサとは違い、標準プロセッシング部SPPは、補助プロセッシング部APPの補助実行ユニットAPU0、APU1、・・・APUN−2、APUN−1をコールして、強力な演算パワーを必要とするアプリケーション部分を実行させる。
本発明は、補助演算ユニットをコールという方法によって特定のプロセスを実行する。
標準プロセッシング部SPPは、アプリケーションにおける汎用的な演算処理を担う。また、標準プロセッシング部SPPは、リソース共有とタスク制御とを管理するシステムソフトウェアも処理する。標準プロセッシング部SPPは、汎用プロセッサにより形成されている。それゆえ、以下の従来型の4つのユニットを含んでいる。
1.コントロールユニットESCU:このユニットは、命令読み込み処理と、デコード処理を担っている。このユニットの複雑さは多様である。多数の命令を同時に管理することができ、また、アプリケーションでの記述順序によらず、実行準備が整った順に命令を選ぶことができる。このユニットは命令分岐予測に必要数の予測機構を実装している。このユニットはアーキテクチャ内の他のユニットに対する命令としてコマンドを送信する。
2.演算ユニットSPU:このユニットは命令により記述されている汎用的演算の実行を担っている。このユニットはコントロールユニットESCUが複数の命令を同時に管理できるように複数の演算リソースを実装している。
3.メモリユニット:このユニットはプログラムに関連するデータと命令の格納を担っている。メモリユニットはハーバード実行モデルの2階層レベルのキャッシュメモリ階層をベースとし、統合レベルの2つのキャッシュを伴っている。
このメモリユニットは、レベル1のキャッシュメモリであるL1 D−キャッシュ、L1 I−キャッシュ、レベル2のキャッシュメモリであるL2−キャッシュを備えている。
4.ローディングユニットLSU:ローディングユニットはメモリに格納されているデータと演算ユニットSPUによって稼動しているユニットとの間にリンクを張る処理を担っている。このリンクは標準プロセッシング部SPP内のサイクルあたりの命令処理数の能力に応じて決まる数のポート数のレジスタキューという形となっている。
標準プロセッシング部SPPと補助プロセッシング部APP間の密接なカップリングを提供するため、標準的な中央プロセッサコアと比較し、コントロールユニットESCUとローディングユニットLSUに対して幾つかの特徴が加えられている。
コントロールユニットESCUは、補助プロセッシング部APPを制御するための追加命令群を備えている。例えば、これらの命令群はクリティカルプロセスの実行を要求するものである。クリティカルプロセスは標準的なメカニズムによっても実行はできるが、追加命令群では命令実行によって新たな命令を要求することがない(例えば、実行後にメモリ空間へのマッピング処理を伴うようなメソッド)。
ローディングユニットLSUは追加のレジスタキューが実装されている。このように標準の汎用レジスタキューに第2のレジスタキューをローディングユニットLSUに追加実装し、SPPとAPPの2つのサブシステム間でのデータ交換を可能としている。
構造の点から見て、ローディングユニットLSUレベルの補助レジスタARF列と汎用レジスタGPRF列では違いはない(図8および図9参照)。プロセッサはアドレスの違いにより汎用レジスタと補助レジスタとを区別している。このSPPとAPPの2つのサブシステム間のコミュニケーションモードは特に少量のデータの伝送には適したものといえる。
補助プロセッシング部APPはアプリケーション内の特化した及び/又は集中的な演算処理を担っている。補助プロセッシング部APPは独自のメモリ空間SMSを共有し合っている多数の補助演算ユニットAPU0、APU1、・・・、APUN−2、APUN−1が実装されている。補助演算ユニットAPU0、APU1、・・・、APUN−2、APUN−1の数Nは特に制限は受けない。同様に、これら演算要素は、相互に区別ができずAPUで単純に定義されるものであるか、同期ロジックまたは非同期ロジックをベースとするものであるかによって違いはない。それゆえ補助プロセッシング部APPはGALS(グローバル非同期制御・ローカル同期制御)タイプの構成の実装に非常に便利である。補助プロセッシング部APPは典型的には4個から8個の演算要素APUを備えている。サイクル内では補助演算ユニットAPUは一つのスレッドのみを実行し、一つのスレッドは一つの補助演算ユニットAPUのみで実行される。
一組のライトプロセス(スレッド)は、コントロールユニットESCUから補助プロセッシング部APPに含まれている割り当て制御ユニットACUを介して、次の実行処理を要求する補助演算ユニットAPUに割り当てられる。
スレッドの補助演算ユニットAPUへの物理割り当て処理、実行管理、異なるスレッドに含まれている同期処理は割り当て制御ユニットACUが担う。
補助プロセッシング部APPには、クリティカル入出力コントローラIOが実装されている。これらは例えば、高速ADコンバータ、ラジオ周波数インターフェイス、ビデオセンサ等のクリティカル入出力周辺機器にダイレクトにリンクされている。これらM個の入出力コントローラIO0からIOM−1は割り当て制御ユニットACUにより補助演算ユニットAPUとして取り扱われる。割り当て制御ユニットACUは入出力コントローラに入出力アクセスを管理できるようにタスクを割り当てなければならない。データは共有メモリ空間SMSに対して送信され、または共有メモリ空間SMSから受信される。しかしながら、クリティカル入出力は、例えば、キーボードまたはマウス操作に応じて、システムバスSBなどのより汎用的手段によって標準プロセッシング部SPPを用いることができる。
補助プロセッシング部APPは補助演算ユニットで取り扱われるすべてのデータとプログラムを格納する大容量メモリMMを含んでいる。このメモリMMは、システム(図5ではシステムバスSBとして示されている)と特化した演算スレッド間のデータ伝送を行うスレッドを割り当てる割り当て制御ユニットACUを制御するコントローラMMCを含んでいる。このコントローラMMCは共有メモリ空間SMSと大容量メモリMM間のデータ伝送にも関連している。
補助演算ユニットAPUは、特定の処理に関して高速処理が可能なように最適化されている。補助演算ユニットAPUは機能に応じてパフォーマンス、フレキシビリティ、コスト、消費電力間においてトレードオフが成り立っている。どの種類の演算ユニットを選択するかはアプリケーション実行環境に強く影響される。
補助演算ユニットは、プログラマブルユニット、リコンフィギュラブルユニット、専用ユニットを備える構成も可能である。
・プログラマブルユニット:このユニットタイプは、組み込み演算に対しては汎用プロセッサコア(MIPS、ARM等)または最適化プロセッサコア(DSP、ST2xx等)に相当するものである。演算に最適化されているため、結果として制御構造がシンプルなものとなっており、例えば分岐予測機構、割り込み処理機構、擬似データ処理機構などが省かれている。これらユニットは浮動小数点演算やベクトル演算などに特化した演算ユニットを構成することができる。
・リコンフィギュラブルユニット:リコンフィギュラブルユニットは演算アクセラレータ同等のものとして用いられる。大規模構造はその処理能力から再構成処理には有利であり、処理能力とフレキシビリティとはトレードオフの関係となる。小規模構成は、非常にフレキシビリティが必要とされる処理または非常に小さいサイズ(1ビットから4ビット)程度のデータ処理に適している。再構成処理のためには長い時間が必要となるため、プリエンプションによる優先割り当てを避けられるように小規模構成のリソースは別々に管理されることが好ましい。
・専用ユニット:特定のクリティカルな処理に最適化され、コンポーネントに組み込まれている。専用アクセラレータは、プログラマブルまたはリコンフィギュラブルな構成では十分な演算パワーを提供できない場合に、クリティカルな処理を担当することが想定されている。高速暗号処理や入出力ストリーム管理処理はこの専用ユニットを用いる良い対象である。
ユニットタイプにかかわらず、補助演算ユニットAPUは特定の記憶要素として利用することができる。アクセスを高速化するために中間データを記憶する用途や共有メモリ空間のバンド幅を最小化する用途、実行中のプログラム命令を記憶する用途のいずれでも利用することができる。タスク割り当て段階を高速化するために実行中のプログラムをローカルに記憶することができる。
2つのサブシステムSPPおよびAPPは他のシステムへのアクセス手段を共有することができる。通信経路はシステムバスSBであり、バスアービターSBAによりシステムバスの共有使用が管理される。例えばメインメモリと入出力コントローラIOなど補助プロセッシング部APPの2つの要素がシステムバスに対してアクセスを要求することができる。標準プロセッシング部SPPからみれば、システムバスSBへのアクセスは、キャッシュメモリL2−キャッシュに大容量メモリまたは周辺機器から渡されるデータと命令がロードされることとなる。プロセッサの一つ以上の要素から同時にアクセス要求が出された場合、バスアービターSBAはシステムバスSBを介した通信を保証するためアクセス要求を順番に並べる。
アクセスする各構成要素から要求されるバンド幅はアプリケーション実行環境の機能に応じて可変となっている。このスキームはたくさんの構成要素が同時に大きいバンド幅を要求するようなアプリケーションに適している。システムのすべての構成要素に対して十分なバンド幅を提供するため第2の(場合によっては第3の)システムバスを追加する構成も可能となる。
一構成例を詳しく下記に示す。
標準プロセッシング部SPPで実行中のシステムソフトウェアによって同じSPPに対してタスクが割り当てられると、SPPはプログラマブルプロセッサで従来から用いられている方法にてプログラムを実行してゆく。命令処理は特定の命令が出てくるまでサイクルごとに進んでゆく。特定の命令が制御ユニットESCUによりデコードされると、割り当て制御ユニットACUに対してコマンドが生成され、補助演算ユニットの一つで実行されるスレッドが生じる。このような状況下、割り当て制御ユニットACUは実行管理を担う。この実行モデルはライブラリの最適ファンクションがコールされることにより演算スレッドがアクティブとなるようなプログラマブルモデルに適している。このアプローチは組み込みソフトウェアの分野では既に広く使われており、例えば汎用プロセッサのAltiVec命令やMMX命令に相当するものである。
制御ユニットESCUによって特定命令が渡されると、標準プロセッシング部SPPは補助プロセッシング部APPによるスレッド管理に干渉することなくプログラムの実行を継続する。このプログラム実行は、スレッドの生成や破棄や補助プロセッシング部APPにおいてデータ読み込みなどを生じさせる次の特定命令の処理に至るまで継続される。
実行や割り込みやトラップを伴うトラッピング処理は以下の3つの動作を前提としている。
1.強い同期性:(サブシステムAPPおよびSPPの両方の)すべてのプロセッサの構成要素が同期している。この同期処理には長時間を要するので、部分的な同期手法を採ればマルチタスク処理の実行環境におけるペナルティを低減させることができる。実行環境の書き換えを高速化するためにビクティムキャッシュなどを用いて大容量メモリへ書き込む内容はしばらくの間保持される。
2.弱い同期性:標準プロセッシング部SPPに関する実行環境のみが同期しているものである。この状態では補助プロセッシングユニットAPUによりアクティブとなっているファンクションは補助プロセッシング部APPにおいて維持されている。割り当て制御ユニットACUは補助リソースの割り当てのみを担う。APPの自律的処理はスレッドが標準プロセッシング部SPPのタスクが生成したデータをコールしない限り継続される。
3.ローカル同期性:トラッピングが例えば0の除算など補助演算ユニットAPUのイベントコールを伴う場合、ユニットはトラッピングのみを管理し、他のプロセッサからは独立した同期性をとる。
割り当て制御ユニットACUは制御ユニットESCUからの専用命令の処理を担う。制御ユニットESCUが割り当て制御ユニットACUと連動するカップリング処理の詳細を図6に示すモデルによって説明する。
図6は制御ユニットESCUを示しており、標準プロセッシング部SPPのローディングユニットLSU、演算ユニットSPU、メモリユニットL1 I−キャッシュと共に示されている。図6には補助プロセッシング部APPの割り当て制御ユニットACUも示されている。
標準プロセッシング部SPPの標準命令は制御ユニットESCUのリードステージ、デコードステージにおいてそれぞれリード、デコードされ、ローディングユニットLSUと演算ユニットSPUが制御される。逆に、専用命令の場合は制御ユニットESCUは割り当て制御ユニットACUのコマンドの流れとしてリダイレクトする。
これら専用命令は以下の異なる種類の命令に関連付けることもできる。
−スレッドの生成/破棄すること
−タスクに関連づけてスレッドを破棄すること
−メインメモリMMからシステムバスSBへまたは逆方向へデータを転送すること
−サブシステムSPPとAPP間でデータを転送すること
標準プロセッシング部SPPへのタスクの割り当てにおいて、システムソフトウェアは補助演算ユニットAPUへのスレッドの仮想割り当てを行う。割り当て制御ユニットACUは最適な割り当てを決定するパラメタをすべて勘案して物理的な割り当てを行う。割り当てとは別に、割り当て制御ユニットACUはスレッド間の同期とクリティカルな共有リソースのアクセスも制御する。この割り当て制御ユニットACUは例えばプリエンプション管理またはタスクのアップデートリスト管理などのシステムソフトウェアのサポートも担っている。
これらファンクションにより割り当て制御ユニットACUは補助プロセッシング部APPにおいて実行されている各々のスレッドの実行環境が調整される。弱い同期性を持っている場合、割り当て制御ユニットACUのみがスレッドの展開を担っている。結果として、タスクが標準プロセッシング部SPPに対して再割り当てされると、演算が進んでいるスレッドに対してその旨を通知する必要がある。これにより、標準プロセッシング部SPPではターミネートされずに補助プロセッシング部APPにおいて実行されているプロセスのスレッドが再アクティブ化されてしまうことがなくなる。割り当て制御ユニットACUのローカル実行環境の利用管理によりタスクがプロセッサに割り当てられる状態が維持されることが確保される。このことは、標準プロセッシング部SPPにおいてタスクが正常に実行されない場合になおさらである。
基本となるサービスのもと、割り当て制御ユニットACUはアプリケーションドメインに関連したファンクションを担っている。これらファンクションはダイナミック消費電力管理、フォールト管理、クライシスモード管理などである。
補助演算ユニットAPUで取り扱われる全てのデータは共有メモリ空間SMSに格納されている。共有メモリ空間SMSはマルチメモリリソースと同じ空間内にあるすべてのリソースをユニット化して内部接続するネットワークを備えている。メモリ空間コントローラMSCは演算リソースとメモリリソース間のリンク構築を担っている。割り当て制御ユニットACUは、補助演算ユニットAPUによって取り扱われる共有メモリ空間の仮想アドレス(変数名と変数の位置、例えばイメージ名とピクセルインデックス)と、メモリリソースで使用されることが宣言されている物理アドレスとのリンクに関する情報を供給する。図7はAPUpと表示されているプロデューサ側の補助演算ユニットAPUと、APUcと表示されているコンシューマー側の補助演算ユニットAPUとの間のデータ伝送のデータアクセス機構を示している。この補助プロセッシング部APP内でのデータアクセス機構は2つのステップに分けることができ、図7中のサークル1、サークル2として示されている。
データアクセスの第1のフェーズは補助演算ユニットAPUが初めて変数にアクセスしたときに用いられる。この状態ではまだデータとメモリ間のリンクはない。メモリ情報を得るため、まず補助演算ユニットAPUは割り当て制御ユニットACUに問い合わせる。ACUは変数名と関連付けることによりデータアクセスが実行できるように、メモリ空間管理ユニットMSMUと協働する。アクセスするデータがACUにより特定されると、管理ユニットMSMUは変数を格納しているメモリの特定情報を送信する。逆に、補助演算ユニットAPUが参照情報のないデータを書き込もうとすると(例えば変数を最初に書き込む場合)、管理ユニットMSMUは、共有メモリ空間SMS中の利用できるメモリから書き込むメモリを選んで割り当てる制御を行う。一度メモリが割り当てられるとメモリユニットは記憶されているメモリの変数名によって関連付けられ、更新されるたびにメモリの特定情報が補助演算ユニットAPUに対して送信される。補助演算ユニットAPUが参照情報のないデータを読み出そうとすると(例えば変数を最初に読み出す場合)、管理ユニットMSMUが取り出しを担い(メインメモリ制御部MMCと関連付けられる)、共有メモリ空間SMS中の利用できるメモリからメモリを選んで割り当てる制御を行う。パーマネントデータが書き込まれると(最終結果として)、変数名が対応しているメモリのユニットのエントリが開放され、大容量メモリに書き戻されるべきデータのリクエストがメインメモリ制御部MMCに対して送信される。
データアクセスの第2フェーズでは補助演算ユニットAPUとデータを含むメモリの間にリンクを確立することがシステマティックに行われる。補助演算ユニットAPUはアクセスしたいメモリを知っているので、共有メモリ空間SMSに対して必要となるデータアドレスとメモリ制御信号とを同一サイクルタイム内に送る。メモリ空間制御部MSCはこれら信号の適切なメモリへのルーティングを担う(その結果データを返す)。この動作はメモリリソースの内部接続構成のタイプにより異なる。図7に示したモデルにおけるチップ内のネットワーク実行環境では、このメモリ空間制御部MSCによるデータのパケット化とは、例えば、ネットワークのルーティング情報をデータを加えることとなる。クロスバータイプのポイントツーポイントネットワークでは、メモリ空間制御部MSCはハードウェアのパスの形成を担っている。
補助演算ユニットAPUのレベルのデータアドレスの管理は、例えば、データストリームやバーストコールを管理できる適切な能力を備えた専用の入出力ユニットにより取り扱われる。データ管理を担う構成要素は補助演算ユニットAPUにより取り扱われるデータのリカバリも担うこととなる。データへのアクセスができない場合またはアクセスが阻害された場合、制御モジュールは不安定なデータへの処理をさせないために補助演算ユニットAPUにおけるスレッドの実行をフリーズする。
アプリケーションドメインと共有メモリ空間SMSの処理結果において、データにアクセスするリクエストNbaccessの数がメモリのポートNbportsの数またはネットワークのノード数よりも大きい場合には実行中にコンフリクトが発生しうる。この阻害要因は発生しうることを考慮しておかなければならず、システムのディメンジョンを決定し、メモリアクセスタイムTaccessを知り、以下の式(1)を考慮しなければならない。
Figure 0005366552
式中のNbaccessはアクセス数を表わし、
Nbportは共有メモリ空間SMSのポート数又はネットワークノード数を表わし、
memは最小メモリアクセスタイムを表わしている。
オーバーヘッドを最小化するため、異なるメモリバンクのデータデカップリングにより仮想のメモリポート数を増やすことができ、同時マルチアクセスが可能となる。データ書き込み時間とデータ読み出し時間の兼ね合いはシステム全体のパフォーマンスを最適化するようにユーザが決定する。コンフリクトが発生している間は、特別なアクセスプライオリティポリシーは必要ない。メモリアクセス時間を最大限確保するなどのコンフリクト処理の機能を提供するためには単純な先入れ先出しタイプのソリューションで良い。
データが演算要素自体ではなくメモリ構造に依存しているので採用されているメモリ構造は重要である。実行環境の変更は演算リソース間のデータ伝送を必要としないためプリエンプションは即座に実行することができる。
小容量データは、図5に示すように補助プロセッシング部APPと標準プロセッシング部SPP間で交換できる。データ伝送はソースプログラムにおいて以下の情報を指定した命令として直接書き込むことができる。
−補助プロセッシング部APPから標準プロセッシング部SPP間へのデータ伝送またはその逆方向のデータ伝送
−標準プロセッシング部におけるターゲットレジスタ
−補助プロセッシング部APPにおけるターゲットスレッド
−スレッドのデータ
図8に示した例のようにロード命令Rx,Ty,Rzの読み込み処理は、標準プロセッシング部SPPのレジスタRxに補助プロセッシング部APPで実行されているスレッドTyの変数Rzがロードされることで実行される。制御ユニットESCUはこの命令をデコードし、以下の3つのコマンドを生成する。
1.Read(Rz):このコマンドは補助演算ユニットAPUの変数Rzの読み込みを行うものである。
2.Search(Ty):このコマンドは割り当て制御ユニットACUに対してどの補助演算ユニットAPUがスレッドTyを実行中であるかの識別子を送る。この識別子は、補助演算ユニットAPUの割り当て制御ユニットACU内でアクティブなスレッドに関連付けられたトランスレーションルックアサイドバッファ(TLB)と呼ばれるページのテーブルという形で示される。もしTLBが補助演算ユニットAPUの識別子を送り返して来なかった場合、標準プロセッシング部SPPが処理待ちの実行中のスレッドやタスクが存在しないことを意味する。スレッドが実行されている場合、TLBは当該スレッドを実行している補助演算ユニットAPUの識別子を送り返す。この識別子は標準プロセッシング部SPPが補助プロセッシング部APPの補助レジスタキューに送るべきデータを選択するために利用される。この識別子は共有レジスタキューSRFのリードデータを有効化するために補助演算ユニットAPUにおいても利用される。
3.Write(Rx):このコマンドは、補助プロセッシング部APPから返された書き込みデータを補助レジスタキューのレジスタRxへ書き込むものである。
コマンドAPUiを補助演算ユニットAPU0、APU1、APUN−2、APUN−1に送ることはオプションであり、伝送モードを邪魔することなく除去することができ、ユーティリティのないレジスタキューにアクセスすることを防ぐことができる。
二重構造のメカニズムによって標準プロセッシング部SPPから補助プロセッシング部APPにデータを伝送することができる。この機構は図9に示されており、図8と似通っているが、STORE Rx、Ty,Rz,Write(Rz)、Read(Rx)という命令が、LOAD Rx,Ty,Rz,Read(Rz)、Write(Rx)命令の代わりにある。
下記に説明する実施例では、システムへのアクセスがメインメモリMMを介したものとなっている。メインメモリ制御部MMC、割り当て制御ユニット(ACU)、メモリ空間制御部MSCが、使用される通信タイプに応じて、通信制御に関与している。メインメモリMMは4つの通信タイプに関与している。
1.システムバスSBからメインメモリMMへの通信:データ通信の第1のタイプは、データをシステム外部から補助プロセッシング部APPのメインメモリMMへ取り入れることである。この伝送は制御ユニットESCUの特定命令のデコード後に発生しうる。特定命令は割り当て制御ユニットACUによりメインメモリ制御部MMCに対して割り当てられるデータ伝送処理を発生させる。後者はダイレクトメモリアクセス(DMA)制御部と同様である。同時に、メインメモリ制御部MMCはロードされているデータとメインメモリMMにおけるアドレスのリンクを確立できるようにテーブルを埋める。
2.メインメモリMMからシステムバスSBへの通信:対称的に、通信されるデータはメインメモリMMから制御ユニットESCUの特定命令により識別されるデータ伝送の到着を知らせるシステムリマインダーデータである。メインメモリMMから送信することはデータが最終結果であると通信内容のテーブル内のエントリが破棄される。制御ユニットESCUによってデコードされた特定命令は破棄伝送か破棄しない伝送かの区別を決める。
3.メインメモリMMから共有メモリ空間SMSへの通信:補助演算ユニットAPUが共有メモリ空間SMSに存在しないデータにアクセスしようとすると、共有メモリ空間SMSにデータをルーティングするため伝送要求が割り当て制御ユニットACUにより制御部MMCに送られる。補助演算ユニットAPUは伝送処理の間、ブロックされる。
4.共有メモリ空間SMSからメインメモリMMへの通信:この伝送は補助プロセッシング部APPの共有メモリ空間SMSに再リードされない最終結果の書き込みにおいて、補助演算ユニットAPUからの特定データの伝送である。これらの伝送処理は実行環境の格納において強い同期性の状態でも実行できる。例えば、共有メモリ空間SMSは割り当て制御ユニットACUを介してリクエストデータをメインメモリ制御部MMCに対して送る。
ターゲットアプリケーション空間の機能拡充のため、使用用途が限定されていない大容量メモリの実装が可能である。この状態は大容量メモリMMが他のメモリリソースと同じ共有メモリ空間SMSに実装されている環境と同様である。このような環境下では、データが共有メモリ空間SMSとシステムバスの間で直接交換される。この交換は通信スレッドという形で管理され、メインメモリ制御部MMCの専用ユニットのどの補助演算ユニットAPUにおいても実行できるものである。
本発明のメソッドと拡張実装可能なアーキテクチャは補助演算ユニットAPUの実装数をサポートできる。
実際には、アーキテクチャのパフォーマンスは補助演算APUの数が大きすぎると、例えば、数百個のオーダーの数であると、低下してしまう。
この問題を解決する手段の一つは、共有メモリマルチプロセッサシステムのアーキテクチャが適用されることである。このような実施例は図10に示されており、本発明が適用された2つのプロセッサが搭載されている例を示している。図5を参照して示したような上記の標準プロセッシング部SPPと補助プロセッシング部APPがカップリングされているものと同じ構成のコアを持った多数のプロセッサが搭載されたものも可能である。
共有メモリマルチプロセッサシステムにおいて、図10に示すように、専用バスを介したコア間で共有されているシステムバスアービターSBAや補助プロセッシング部APPの大容量メモリMMや高速入出力コントローラなどの構成要素を共有することは有利である。
要するに、本発明は、組み込みアーキテクチャでのスレッド制御やスレッド割り当てのデバイスやメソッドに関するものであり、マルチプルプロセッシングリソースに実装され、リアルタイムで集中特化したマルチタスク演算およびマルチストリーム演算に適したものである。
さらに、下記の構成要素を備えたリアルタイムパラレル演算アーキテクチャにも適用され得るものである。
−クリティカルではないタスク処理とシステムソフトウェアサポートの実行を担う中央プロセッサコアSPP
−プログラマブルでリコンフィギュラブルまたは特定処理の高速処理に最適化された補助演算ユニットAPU
−補助演算ユニットAPUで内部ネットワークを介して共有されるメモリ空間SMS
−補助演算ユニットAPUiによる集中特化した処理の並列処理の実行を管理する補助リソースを制御し割り当てるユニットACU
さらに、特に、様々な補助演算ユニットAPU間の通信、補助演算ユニットAPUと中央プロセッサコアSPP間の通信が、共有メモリ空間SMSまたは内部ネットワークを介して行われるものである。
タスク割り当てとタスク処理の手法において、中央プロセッサコアSPPで実行される制御タスクが、補助演算ユニットAPUで実行される集中特化した演算タスクとは分離されている。割り当て制御ユニットACUは集中特化した演算タスクを様々な補助演算ユニットAPUに対して割り当てる管理を並列処理にて行う。この補助制御部ACUは、補助演算ユニットAPUが、中央プロセッサコアSPPで実行されているタスクとは異なるスレッドの処理ができるという、いわゆる弱い同期機構により実装されている。このシステム状態はユニークな実行環境で表わされており、ノイマン型アーキテクチャとは異なるものとなっている。クリティカル入出力は、補助演算ユニットAPUによって共有メモリ空間に直接リンクされている。このアーキテクチャおよびこの割り当て手法は、データローディング時間の低減や、異なアプリケーションへの適合など、リアルタイムマルチタスクプロセッシングの最適化を実現できる。
図1Aおよび1Bは、それぞれ汎用的なSMTアーキテクチャモデルおよび操作処理例を表わす図である。 図2Aおよび2Bは、それぞれ汎用的なCMPアーキテクチャモデルおよび操作処理例を表わす図である。 図3Aおよび3Bは、それぞれ汎用的なCMTアーキテクチャモデルおよび操作処理例を表わす図である。 図4は、システム動作をアプリケーション、タスク、さらに命令(スレッド)の流れに分解して表わした図である。 図5は、本発明のプロセッサのアーキテクチャの主要構成要素を示すブロック図である。 図6は、補助プロセッシング部と標準プロセッシング部で構築されるメカニズムを示すブロック図である。 図7は、補助プロセッシング部におけるデータアクセス処理のメカニズムを示す図である。 図8は、補助プロセッシング部と標準プロセッシング部の間でのデータ転送処理のメカニズムを示す図である。 図9は、標準プロセッシング部と補助プロセッシング部の間でのデータ転送処理のメカニズムを示す図である。 図10は、本発明の実施例である共有メモリマルチプロセッサシステムの構成例を示すブロック図である。

Claims (16)

  1. 特定のマルチタスク及びマルチフロー処理をリアルタイム実行するシステムであって、
    (a)タスク中の補助プロセッシング部(APP)により処理されない演算処理を実行し、タスク制御を行う中央プロセッサコアと、(b)前記補助プロセッシング部(APP)により特定の演算処理を実行することを要求する追加の命令群を処理する制御ユニット(ESCU)と、を備えた標準プロセッシング部(SPP)を備え、
    前記補助プロセッシング部(APP)が、(i)それぞれが、前記特定の演算処理に関して高速処理が可能となるように最適化され、かつ与えられた時間内でタスク中の1つの命令ストリームのみを実行するN個の補助演算ユニット(APU0、・・・、APUN−1)と、(ii)エレメンタリな命令ストリームに分けられ、補助演算ユニットに割り当て処理の並列処理を実行し、前記命令ストリームの実行環境の管理としてプリエンプション管理および前記補助演算ユニット間のデータ伝送管理を含む管理を行う補助リソース割り当て制御ユニット(ACU)と、(iii)内部ネットワークを介して前記補助演算ユニット(APU0、・・・、APUN−1)間で共有されるメモリ空間(SMS)と、を備え、
    様々なシステム要素が、前記補助演算ユニット(APU0、・・・、APUN−1)と前記中央プロセッサコアとの間の通信が前記共有メモリ空間(SMS)と前記内部ネットワークとを介して行われるように配置されていることを特徴とするシステム。
  2. 前記補助演算ユニット(APU0,・・・,APUN−1)により取り扱うすべてのデータとプログラムを格納した大容量メモリ(MM)をさらに備えたことを特徴とする請求項1に記載のシステム。
  3. 前記大容量メモリ(MM)を制御するメインメモリ制御部(MMC)を備えたことを特徴とする請求項2に記載のシステム。
  4. 前記補助演算ユニット(APU0,・・・,APUN−1)がプログラマブルユニット、リコンフィギュラブルユニット、専用ユニットを備えたことを特徴とする請求項1から3のいずれか1項に記載のシステム。
  5. 前記中央プロセッサコアが、演算ユニット(SPU)と、メモリユニット(L1 D−キャッシュ,L2 I−キャッシュ,L2−キャッシュ)と、ローディングユニット(LSU)をさらに備えたことを特徴とする請求項1から4のいずれか1項に記載のシステム。
  6. から8の補助演算ユニット(APU0,・・・,APUN−1)を備えたことを特徴とする請求項1から5のいずれか1項に記載のシステム。
  7. 第1にシステムバス(SB)の通信を優先し、第2に入出力装置(IO)および前記大容量メモリ(MM)とともに前記中央プロセッサコアの通信を優先するように管理するバスアービター(SBA)を備えたことを特徴とする請求項2または3に記載のシステム。
  8. システムバス(SB)に接続された複数個のプロセッサであって、前記プロセッサがそれぞれ、前記中央プロセッサコアと、前記N個の補助演算ユニット(APU0,・・・,APUN−1)と、前記共有メモリ空間(SMS)と、前記補助リソース割り当て制御ユニット(ACU)を備えたものであることを特徴とする請求項1から7のいずれか1項に記載のシステム。
  9. 前記システムバス(SB)に接続されている複数個のプロセッサ間で共有するシステムバスアービター(SBA)を備えたことを特徴とする請求項8に記載のシステム。
  10. 中央プロセッサコアを備えた少なくとも1つの標準プロセッサ部(SPP)と、N個の補助演算ユニット(APU,・・・,APUN−1)を備えた補助プロセッシング部(APP)と、前記N個の補助演算ユニット(APU,・・・,APUN−1)で内部ネットワークを介して共有されるメモリ空間(SMS)と、前記補助プロセッシング部(APP)および前記補助演算ユニット(APU,・・・,APUN−1)にタスク中の特定の演算処理を実行することを要求する追加の命令群を処理する制御ユニット(ESCU)と、補助リソース割り当て制御ユニット(ACU)と、を備えた少なくとも1つのプロセッサを用い、特定のマルチタスク及びマルチフロー処理をリアルタイム実行する方法であって、
    前記中央プロセッサコアが、タスクにおける前記補助プロセッシング部(APP)により処理されない演算処理を実行するとともにタスク制御を行い、前記補助演算ユニット(APU,・・・,APUN−1)がそれぞれ前記特定の演算処理に関して高速処理が可能となるように最適化され、かつ与えられた時間内でタスク中の1つの命令ストリームのみ実行し、前記補助リソース割り当て制御ユニット(ACU)がエレメンタリな命令ストリームに分けられ、前記補助演算ユニット(APU,・・・,APUN−1)に割り当て処理の並列処理を実行し、前記命令ストリームの実行環境の管理としてプリエンプション管理および前記補助演算ユニット間のデータ伝送管理を含む管理を行い、
    前記補助演算ユニット(APU0、・・・、APUN−1)間の通信または前記補助演算ユニット(APU0、・・・、APUN−1)と前記中央プロセッサコアとの間の通信が前記共有メモリ空間(SMS)と前記内部ネットワークとを介して行われることを特徴とする方法。
  11. 々の命令ストリームが一つの前記補助演算ユニットのみで実行されることを特徴とする請求項10に記載の方法。
  12. 前記補助演算ユニット(APU0,・・・,APUN−1)で取り扱われるすべてのデータおよびプログラムが大容量メモリ(MM)に格納され、前記プロセッサがシステムバス(SB)に接続され、前記中央プロセッサコア、入出力制御部(IO)および前記大容量メモリ(MM)からの前記システムバスへの通信がバスアービター(SBA)によって管理されていることを特徴とする請求項10に記載の方法。
  13. 前記標準プロセッサ部(SPP)に割り当てられたタスクが、特定命令が出てくるまで前記標準プロセッサ部(SPP)のサイクルごとに処理されてゆき、前記特定命令に関してはデコードされると前記割り当て制御ユニット(ACU)に対するコマンドが生成され、前記割り当て制御ユニット(ACU)の制御によって前記補助演算ユニット(APU0,・・・,APUN−1)の一つで実行される命令ストリームが生成され、ひとたび、特定命令がデコードされ、対応する前記コマンドが生成された場合に、命令ストリームが生成され前記補助演算ユニットにおける実行が管理されても、前記標準プロセッサ部では干渉を受けることなく実行中の現タスクの継続が可能であることを特徴とする請求項10から12のいずれか1項に記載の方法。
  14. トラッピング処理がエクセプション処理、インタラプト処理、またはトラップ処理を伴う場合、トラッピングタイプの機能として、前記プロセッサ内のすべての構成要素が同期しなければならない、強い同期処理が選択される請求項13に記載の方法。
  15. トラッピング処理がエクセプション処理、インタラプト処理、またはトラップ処理を伴う場合、トラッピングタイプの機能として、前記標準プロセッシング部に対応する実行環境は同期するが、補助リソース割り当て制御ユニット(ACU)は補助演算ユニットにて独立してアクティブとなっているファンクションの実行を継続させる、弱い同期処理が選択される請求項13または14に記載の方法。
  16. トラッピング処理が補助演算ユニットのローカルイベントを伴う場合、当該関係する前記補助演算ユニットのみが前記トラッピング処理を制御し、他のプロセッサとは独立して同期制御が実行される、選択的ローカル同期が有効となる請求項13から15のいずれか1項に記載の方法。
JP2008538384A 2005-11-04 2006-06-08 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム Expired - Fee Related JP5366552B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0511266 2005-11-04
FR0511266A FR2893156B1 (fr) 2005-11-04 2005-11-04 Procede et systeme de calcul intensif multitache et multiflot en temps reel.
PCT/FR2006/050535 WO2007051935A1 (fr) 2005-11-04 2006-06-08 Procede et systeme de calcul intensif multitache et multiflot en temps reel

Publications (3)

Publication Number Publication Date
JP2009515246A JP2009515246A (ja) 2009-04-09
JP2009515246A5 JP2009515246A5 (ja) 2009-07-23
JP5366552B2 true JP5366552B2 (ja) 2013-12-11

Family

ID=36588738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008538384A Expired - Fee Related JP5366552B2 (ja) 2005-11-04 2006-06-08 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム

Country Status (5)

Country Link
US (1) US9052957B2 (ja)
EP (1) EP1949234A1 (ja)
JP (1) JP5366552B2 (ja)
FR (1) FR2893156B1 (ja)
WO (1) WO2007051935A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2937439B1 (fr) * 2008-10-17 2012-04-20 Commissariat Energie Atomique Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes.
FR2942556B1 (fr) 2009-02-24 2011-03-25 Commissariat Energie Atomique Unite d'allocation et de controle
BR112012001629B1 (pt) * 2009-07-28 2019-10-22 Ericsson Telefon Ab L M método de sincronizar o processamento de eventos associados com sessões de aplicação em uma plataforma de processamento de telecomunicações, adaptador de recursos, e, agrupamento de java enterprise edition
CN101872317B (zh) * 2010-07-16 2012-12-26 山东中创软件工程股份有限公司 VxWorks多任务同步与通信方法
US9055069B2 (en) * 2012-03-19 2015-06-09 Xcelemor, Inc. Hardware computing system with software mediation and method of operation thereof
FR3004274A1 (fr) * 2013-04-09 2014-10-10 Krono Safe Procede d'execution de taches dans un systeme temps-reel critique
CN103618942B (zh) * 2013-12-16 2016-09-28 乐视致新电子科技(天津)有限公司 智能电视及其浏览器网页视频的播放方法和装置
JP5949977B1 (ja) 2015-02-19 2016-07-13 日本電気株式会社 情報処理装置、情報処理方法、メインプロセッサコア、プログラム、情報処理方法、サブプロセッサコア
US9904580B2 (en) 2015-05-29 2018-02-27 International Business Machines Corporation Efficient critical thread scheduling for non-privileged thread requests
JP6432450B2 (ja) * 2015-06-04 2018-12-05 富士通株式会社 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム
US11599383B2 (en) * 2016-08-30 2023-03-07 Microsoft Technology Licensing, Llc Concurrent execution of task instances relating to a plurality of applications
US10284501B2 (en) * 2016-12-08 2019-05-07 Intel IP Corporation Technologies for multi-core wireless network data transmission
US10871998B2 (en) * 2018-01-18 2020-12-22 Red Hat, Inc. Usage instrumented workload scheduling
US11900156B2 (en) * 2019-09-24 2024-02-13 Speedata Ltd. Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays
WO2022056828A1 (en) * 2020-09-18 2022-03-24 Alibaba Group Holding Limited A configurable processing architecture
US20220276914A1 (en) * 2021-03-01 2022-09-01 Nvidia Corporation Interface for multiple processors
US11836527B2 (en) 2021-08-02 2023-12-05 Nvidia Corporation Accelerating table lookups using a decoupled lookup table accelerator in a system on a chip
US11704067B2 (en) * 2021-08-02 2023-07-18 Nvidia Corporation Performing multiple point table lookups in a single cycle in a system on chip
TWI802302B (zh) * 2022-03-01 2023-05-11 正大光明有限公司 光明燈顯示同步系統與方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5001624A (en) * 1987-02-13 1991-03-19 Harrell Hoffman Processor controlled DMA controller for transferring instruction and data from memory to coprocessor
US4862407A (en) * 1987-10-05 1989-08-29 Motorola, Inc. Digital signal processing apparatus
US5056000A (en) * 1988-06-21 1991-10-08 International Parallel Machines, Inc. Synchronized parallel processing with shared memory
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5682512A (en) * 1995-06-30 1997-10-28 Intel Corporation Use of deferred bus access for address translation in a shared memory clustered computer system
US5706514A (en) * 1996-03-04 1998-01-06 Compaq Computer Corporation Distributed execution of mode mismatched commands in multiprocessor computer systems
US5822553A (en) * 1996-03-13 1998-10-13 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller architecture
KR100308618B1 (ko) * 1999-02-27 2001-09-26 윤종용 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
JP2002041489A (ja) * 2000-07-25 2002-02-08 Mitsubishi Electric Corp 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
JP4647307B2 (ja) * 2002-04-25 2011-03-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ スケーラブルプロセッサにおける自動タスク分散
US7533382B2 (en) * 2002-10-30 2009-05-12 Stmicroelectronics, Inc. Hyperprocessor
US6944747B2 (en) * 2002-12-09 2005-09-13 Gemtech Systems, Llc Apparatus and method for matrix data processing

Also Published As

Publication number Publication date
US20090327610A1 (en) 2009-12-31
US9052957B2 (en) 2015-06-09
WO2007051935A1 (fr) 2007-05-10
FR2893156B1 (fr) 2008-02-15
EP1949234A1 (fr) 2008-07-30
JP2009515246A (ja) 2009-04-09
FR2893156A1 (fr) 2007-05-11

Similar Documents

Publication Publication Date Title
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
JP6047747B2 (ja) 制御タイプの実行モードとデータフロータイプの実行モードとの組み合わせによりタスクを並列に実行可能な複数の処理ユニットを有するシステム
US9779042B2 (en) Resource management in a multicore architecture
JP6006230B2 (ja) 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
US20070150895A1 (en) Methods and apparatus for multi-core processing with dedicated thread management
US6223208B1 (en) Moving data in and out of processor units using idle register/storage functional units
US7484043B2 (en) Multiprocessor system with dynamic cache coherency regions
JP2001236221A (ja) マルチスレッドを利用するパイプライン並列プロセッサ
KR100893527B1 (ko) 재구성 가능 멀티 프로세서 시스템에서의 매핑 및 스케줄링방법
JP2005284749A (ja) 並列処理コンピュータ
KR20050000488A (ko) 정보처리시스템 및 메모리 관리방법
CN103119912A (zh) 多处理器计算平台中的处理器间通信技术
JP2008084009A (ja) マルチプロセッサシステム
WO2000031652A9 (en) Reconfigurable programmable logic device computer system
KR20050000487A (ko) 스케줄링 방법 및 실시간 처리시스템
KR101900436B1 (ko) 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
JP2008152470A (ja) データ処理システム及び半導体集積回路
CN112199173B (zh) 双核cpu实时操作系统数据处理方法
US20110314478A1 (en) Allocation and Control Unit
WO2012052775A1 (en) Data processing systems
Wu et al. Transparent {GPU} sharing in container clouds for deep learning workloads
Kaminsky Special feature: Developing a multiple-instructon-stream single-chip processor
JP4489958B2 (ja) イベントベースシステムの同時処理
JPH07306837A (ja) 分散処理のための装置、方法、及びプログラム製品
Ostheimer Parallel Functional Computation on STAR: DUST—

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090608

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120309

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120316

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120410

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120417

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120510

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120927

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130813

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130910

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees