JP2005182791A - General purpose embedded processor - Google Patents
General purpose embedded processor Download PDFInfo
- Publication number
- JP2005182791A JP2005182791A JP2004359188A JP2004359188A JP2005182791A JP 2005182791 A JP2005182791 A JP 2005182791A JP 2004359188 A JP2004359188 A JP 2004359188A JP 2004359188 A JP2004359188 A JP 2004359188A JP 2005182791 A JP2005182791 A JP 2005182791A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- event
- instruction
- unit
- executing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
Description
本出願は、「Virtual Processor Methods and Apparatus with Unified Event Notification And Consumer−producer Memory Operations」と称される、同一人に譲受された、係属中の米国特許出願シリアルナンバー第10/449,732号(2003年5月30日出願)の継続出願であり、かつ、その特権権の利益を主張する。この出願の教示は、参考のため、本明細書中に援用される。 This application is filed in United States Patent No. 7, which is assigned to US Patent No. 7, which is assigned to US Patent No. 7, which is assigned to US Patent No. 7, which is assigned to US Patent No. 7, which is assigned to US Patent No. 7, which is assigned to US Patent No. 7, which is assigned to US Patent No. 7, which is assigned to US Patent No. 7 / No. And claims the benefit of its privilege right. The teachings of this application are incorporated herein by reference.
本発明は、デジタルデータ処理に関し、より具体的には、組込みプロセッサアーキテクチャおよびオペレーションに関する。本発明は、高品位テレビ、ゲームシステム、デジタルビデオレコーダ、ビデオおよび/またはオーディオプレーヤ、パーソナルデジタルアシスタント、パーソナルナリッジナビゲータ、携帯電話、ならびに他のマルチメディアおよび非マルチメディアデバイスに適用される。 The present invention relates to digital data processing, and more particularly to embedded processor architecture and operation. The present invention applies to high-definition television, gaming systems, digital video recorders, video and / or audio players, personal digital assistants, personal knowledge navigators, mobile phones, and other multimedia and non-multimedia devices.
従来技術の組込みプロセッサベースまたはアプリケーションシステムは、通常、(1)ユーザインターフェース処理、ハイレベルアプリケーション処理、およびオペレーティングシステムタスクをハンドリングする、例えば、ARM、MIPまたはx86の変種等の1つ以上の汎用プロセッサを、(2)特定のインターフェース、または特定のアプリケーション内での特定のタイプの算術演算をリアルタイム/低レイテンシーベースでハンドリングするためのメディアプロセッサを含む1つ以上のデジタル信号プロセッサ(DSP)と組み合わせる。DSPの代わりに、またはこれに加えて、例えば、DSPが複数のアクティビティを同時にハンドリングすることができないか、またはDSPが特別に専門的な演算素子のニーズを満たすことができないことが原因で、プログラマブルベースでハンドリングすることができない専用のニーズに対処するために、特定用途向けハードウェアが提供されることが多い。 Prior art embedded processor-based or application systems typically (1) one or more general-purpose processors, such as ARM, MIP or x86 variants that handle user interface processing, high-level application processing, and operating system tasks. Are combined with (2) one or more digital signal processors (DSPs) including a media processor for handling specific interfaces or specific types of arithmetic operations within specific applications on a real-time / low-latency basis. Instead of, or in addition to, a DSP, for example, because the DSP cannot handle multiple activities at the same time or the DSP cannot meet the needs of specially specialized computing elements Application specific hardware is often provided to address dedicated needs that cannot be handled on a base.
これらの従来技術の例は、通常、メインプロセッサを別個のグラフィックプロセッサおよび別個のサウンドプロセッサと組み合わせるパーソナルコンピュータ;通常、メインプロセッサと、別個にプログラムされたグラフィックプロセッサとを組み合わせるゲームシステム;通常、汎用プロセッサと、mpeg2デコーダチップおよびmpeg2エンコーダチップと、特殊用途向けデジタル信号プロセッサとを組み合わせるデジタルビデオレコーダ;通常、汎用プロセッサと、mpeg2デコーダチップおよびmpeg2エンコーダチップと、特殊用途向けDSPまたはメディアプロセッサとを組み合わせるデジタルテレビ;通常、ユーザインターフェースおよびアプリケーション処理用のプロセッサと、携帯電話GSM、CDMAまたは他のプロトコル処理用の特定用途向けDSPとを組み合わせる携帯電話を含む。 These prior art examples typically include a personal computer that combines a main processor with a separate graphics processor and a separate sound processor; typically a gaming system that combines a main processor and a separately programmed graphics processor; typically a general purpose processor A digital video recorder that combines a mpeg2 decoder chip and mpeg2 encoder chip and a special purpose digital signal processor; typically a digital that combines a general purpose processor, mpeg2 decoder chip and mpeg2 encoder chip, and a special purpose DSP or media processor TV; usually a processor for user interface and application processing and mobile phone GSM, CDMA or others Including mobile phones to combine the application-specific DSP for protocol processing.
米国特許第6,408,381号(特許文献1)は、各種パイプラインステージの命令の状態を示すエントリを有するスナップショットファイルを利用するパイプラインプロセッサを開示する。パイプライン内で命令が移動すると、対応するスナップショットファイルエントリが変更される。これらのファイルをモニタリングすることによって、デバイスは、あるパイプラインステージからの中間結果が、例えば、最初にレジスタに格納されることなく、内部オペランドバスを介して別のステージに直接転送され得る。 U.S. Pat. No. 6,408,381 discloses a pipeline processor that uses a snapshot file having entries indicating the state of instructions at various pipeline stages. As instructions move in the pipeline, the corresponding snapshot file entry is changed. By monitoring these files, the device can transfer intermediate results from one pipeline stage directly to another stage via, for example, an internal operand bus without first being stored in a register.
米国特許第6,219,780号(特許文献2)は、クラスタに分類された複数の実行ユニットでのコンピュータのスループットの向上に関する技術を開示する。この特許は、「生産者(producer)」命令の結果に従属する「消費者(consumer)」命令を識別することを提示する。その後、各生産者命令の複数のコピーが実行され、すなわち、従属する消費者命令を実行するために引き続いて用いられるクラスタごとに1つのコピーが実行される。
一般的な従来技術のアプローチが汎用プロセッサをDSPおよび/または特定用途向けハードウェアと組み合わせる理由は、複数のアクティビティ(例えば、イベントまたはスレッド)をリアルタイムベースで同時にハンドリングする必要があるためであり、ここで、各アクティビティは、異なったタイプの演算素子を必要とする。さらに、従来技術の単一プロセッサは、アクティビティのすべてをハンドリングする容量を有さない。さらに、これらのアクティビティのいくつかは、従来技術のプロセッサがこれらのうちの2つ以上を適切に処理することができないような性質のものである。これは、特に、リアルタイムアクティビティに当てはまり、完全に避けられなければ、オペレーティングシステムの介入によって、これへの時間的パフォーマンスが低下する。 The reason why a general prior art approach combines a general purpose processor with a DSP and / or application specific hardware is that multiple activities (eg, events or threads) need to be handled simultaneously on a real-time basis, where Thus, each activity requires a different type of computing element. Furthermore, prior art single processors do not have the capacity to handle all of the activities. In addition, some of these activities are of a nature such that prior art processors cannot properly handle two or more of these. This is especially true for real-time activity, and if not unavoidable, operating system intervention reduces the time performance to this.
従来技術のアプローチの1つの問題は、ハードウェア設計の複雑性であり、異種の演算素子をプログラムおよびインターフェースする際のソフトウェアの複雑性を併せ持つ。別の問題は、ハードウェアおよびソフトウェアの両方をアプリケーションごとにリエンジニアしなければならないことである。さらに、従来技術のシステムは負荷分散しない。すなわち、容量が、あるハードウェア素子から別のハードウェア素子に転送され得ない。 One problem with prior art approaches is the complexity of hardware design, which combines the complexity of software in programming and interfacing disparate computing elements. Another problem is that both hardware and software must be re-engineered for each application. Furthermore, prior art systems do not load balance. That is, capacity cannot be transferred from one hardware element to another.
本発明の目的は、デジタルデータ処理の改善された装置および方法を提供することである。本発明のさらなる目的は、複数の動作がリアルタイムであろうとなかろうと単一のプロセッサ上で実行することをサポートするような装置および方法を提供すること、および、一緒に動作することができるような複数のプロセッサを提供することである。関連目的は、組込み環境またはアプリケーションに適するような装置および方法を提供することである。別の関連目的は、設計、製造、市場投入までの期間、コストおよび/または保守を容易にするような装置および方法を提供することである。 It is an object of the present invention to provide an improved apparatus and method for digital data processing. It is a further object of the present invention to provide such an apparatus and method that supports running multiple operations on a single processor, whether real-time or not, and to be able to work together. It is to provide a plurality of processors. A related object is to provide such an apparatus and method suitable for embedded environments or applications. Another related object is to provide such an apparatus and method that facilitates design, manufacture, time to market, cost and / or maintenance.
本発明のさらなる目的は、ごく少数挙げると、デジタルテレビ、デジタルビデオレコーダ、ビデオおよび/またはオーディオプレーヤ、パーソナルデジタルアシスタント、パーソナルナリッジナビゲータ、および携帯電話を例として含むがこれらに限定されない、現在および将来のアプライアンスの計算、サイズ、パワーおよびコスト要件を満たす組込み(または他の)プロセシングの改善された装置および方法を提供することである。 Further objects of the present invention are present and future including, but not limited to, digital televisions, digital video recorders, video and / or audio players, personal digital assistants, personal knowledge navigators, and mobile phones, to name a few. It is to provide an improved apparatus and method of embedded (or other) processing that meets the calculation, size, power and cost requirements of the appliance.
さらに別の目的は、種々のアプリケーションをサポートする改善された装置および方法を提供することである。 Yet another object is to provide an improved apparatus and method that supports various applications.
さらに別の目的は、低コスト、低パワーであり、および/または、市場への投入が高速のロバストな実装をサポートするような装置および方法を提供することである。 Yet another object is to provide such an apparatus and method that is low cost, low power, and / or that supports fast and robust implementation on the market.
これらおよび他の目的は、ある局面では、プロセスまたはスレッド(集合的に「スレッド」)を各々が実行する複数の処理ユニットを備える組込みプロセッサを提供する本発明によって達成される。1つ以上の実行ユニットが処理ユニットによって共有され、スレッドからの命令を実行する。イベント送達メカニズムは、命令を実行することなく、それぞれのスレッドにイベント(ハードウェア割込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」およびメモリイベントを例として含むがこれらに限定されない)を送達する。各イベントは、そのスレッドの外で命令を実行することなく、それぞれのスレッドによって処理され得る。 These and other objects are achieved in one aspect by the present invention that provides an embedded processor comprising a plurality of processing units each executing a process or thread (collectively a “thread”). One or more execution units are shared by the processing units to execute instructions from the thread. The event delivery mechanism delivers events (hardware interrupts, software-initiated signaling events (including but not limited to “software events” and memory events) to each thread without executing instructions) Each event can be handled by the respective thread without executing instructions outside that thread.
本発明の関連する局面によると、スレッドが生きている間、これらのスレッドは、それぞれの同じ処理ユニット上での実行を強いられる必要がない。さらに別の関連する局面では、実行ユニットは、これらの命令が、どのスレッドからのものであるかを知ることを必要とせずに、スレッドからの命令を実行する。 According to a related aspect of the invention, while threads are alive, these threads need not be forced to execute on their same processing unit. In yet another related aspect, the execution unit executes instructions from threads without needing to know which threads these instructions are from.
本発明は、他の局面では、複数の実行ユニット上で並列実行するための複数のスレッドからの命令を開始するパイプラインコントロールユニットをさらに備える上述の組込みプロセッサを提供する。このパイプラインコントロールユニットは、仮想処理ユニットのそれぞれ1つと各々が関連付けられた複数の命令キューを備え得、このキューから命令がディスパッチされる。命令キューからの命令クラスをデコードすることに加えて、パイプラインコントロールユニットは、ディスパッチされる命令のソースレジスタおよび宛先レジスタを提供するリソースへのアクセスを仮想処理ユニットによってコントロールし得る。 In another aspect, the present invention provides the above embedded processor further comprising a pipeline control unit that initiates instructions from a plurality of threads for parallel execution on the plurality of execution units. The pipeline control unit may comprise a plurality of instruction queues, each associated with a respective one of the virtual processing units, from which instructions are dispatched. In addition to decoding instruction classes from the instruction queue, the pipeline control unit may be controlled by the virtual processing unit to access resources that provide source and destination registers for dispatched instructions.
他の関連する局面によると、複数の実行ユニットの中に分岐実行ユニットがある。これは、命令アドレス生成、アドレス変換および命令フェッチのいずれかを担当する。分岐実行ユニットは、さらに、仮想処理ユニットの状態を維持し得る。これは、パイプラインコントロールユニットによってコントロールされ得、このユニットは、各仮想処理ユニット命令キューが空になると、分岐実行ユニットにシグナリングする。 According to another related aspect, there is a branch execution unit among the plurality of execution units. This is responsible for any of instruction address generation, address translation and instruction fetch. The branch execution unit may further maintain the state of the virtual processing unit. This can be controlled by a pipeline control unit, which signals to the branch execution unit when each virtual processing unit instruction queue is empty.
本発明の他の局面によると、上述の複数の仮想処理ユニットは、組込みプロセッサ上で実行し得る。他方、関連する局面では、これらの複数の仮想処理ユニットは、複数の組込みプロセッサ上で実行し得る。 According to another aspect of the invention, the plurality of virtual processing units described above may execute on an embedded processor. On the other hand, in related aspects, these multiple virtual processing units may execute on multiple embedded processors.
本発明のさらなる局面は、上述のように、1つ以上のスレッドを各々が実行する、複数の処理ユニットを備える組込みプロセッサを提供する。イベント送達メカニズムは、上述のように、命令を実行することなく、イベントを、それらのイベントが関連付けられたそれぞれのスレッドに送達する。上述のように、処理ユニットは、仮想処理ユニットであり得る。そして、上述のように、これらは1つ以上の組込みプロセッサ上で実行し得る。 A further aspect of the invention provides an embedded processor comprising multiple processing units, each executing one or more threads, as described above. The event delivery mechanism delivers events to the respective threads with which the events are associated, as described above, without executing instructions. As described above, the processing unit may be a virtual processing unit. And, as described above, these can run on one or more embedded processors.
上述のように、組込みプロセッサおよびシステムは、わずかなレイテンシーで、またはレイテンシーなしで、かつオペレーティングシステムスイッチングオーバーヘッドを用いずに、複数のスレッドの実行と複数のイベントの処理とを同時に行うことができる。スレッドは、リアルタイムビデオ処理からLinuxオペレーティングシステム機能、最終使用アプリケーションの範囲であり得る。従って、組込みプロセッサおよびシステムは、非限定的な例として、高品位デジタルテレビ、ゲームシステム、デジタルビデオレコーダ、ビデオおよび/またはオーディオプレーヤ、パーソナルデジタルアシスタント、パーソナルナリッジナビゲータ、携帯電話、および他のマルチメディアデバイスおよび非マルチメディアデバイスのような、マルチメディアまたは他のデバイスに必要とされる多様な機能の直接実行をサポートするアプリケーションを有する。 As described above, embedded processors and systems can simultaneously execute multiple threads and handle multiple events with little or no latency and without operating system switching overhead. Threads can range from real-time video processing to Linux operating system functions, end-use applications. Thus, embedded processors and systems include, by way of non-limiting example, high definition digital television, gaming systems, digital video recorders, video and / or audio players, personal digital assistants, personal knowledge navigators, cell phones, and other multimedia. Having applications that support direct execution of various functions required for multimedia or other devices, such as devices and non-multimedia devices.
さらに、上述のように、組込みプロセッサおよびシステムによって、特定用途向けハードウェアアクセラレータ、特定用途向けDSP、特定用途向けプロセッサ、または他の特定用途向けハードウェアを必要とせずに、すべての機能を単一のプログラミングおよび実行環境で展開および実行することが可能になる。複数のこのような組込みプロセッサが足し合わされた場合、これらは、シームレスに動作し、より多くの実行容量、および、より多くの並列スレッドハンドリング容量の両方を含む全容量をより大きくする。これらのプロセッサの付加は、スレッド、および特定のスレッドに向けたれたイベントの両方の観点からトランスペアレントである。プロセッサが処理するイベントおよびスレッドを割り当てる方法に基づいて、負荷分散もまた、部分的にトランスペアレントである。 In addition, as noted above, embedded processors and systems allow all functions to be single-ended without the need for an application specific hardware accelerator, application specific DSP, application specific processor, or other application specific hardware. Can be deployed and executed in any programming and execution environment. When multiple such embedded processors are added, they operate seamlessly, increasing the total capacity, including both more execution capacity and more parallel thread handling capacity. The addition of these processors is transparent in terms of both threads and events directed to specific threads. Load balancing is also partially transparent, based on how the processor processes and assigns threads.
本発明の他の局面は、上述のような構造を有して動作する、組込みプラットフォーム上で動作しないデジタルデータ処理システムを提供する。 Another aspect of the present invention provides a digital data processing system that operates with the structure as described above and does not operate on an embedded platform.
本発明のさらなる局面は、上述のようなシステムのオペレーションを並列化する方法を提供する。 A further aspect of the invention provides a method for parallelizing the operation of a system as described above.
本発明のこれらおよび他の局面は、以下の図面および詳細な説明において明らかである。 These and other aspects of the invention are apparent in the drawings and detailed description that follow.
図面を参照することによって、本発明がより完全に理解され得る。 The present invention may be more fully understood with reference to the drawings.
本発明による組込みプロセッサは、A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を各々が実行する複数の処理ユニットと、B.前記複数の処理ユニットによって共有され、かつ、前記複数の処理ユニットと通信接続された1つ以上の実行ユニットであって、前記実行ユニットは、前記スレッドからの命令を実行する、1つ以上の実行ユニットと、C.イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、i前記複数の処理ユニットと通信接続され、iiそのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムとを備え、これにより上記目的を達成する。 An embedded processor according to the present invention comprises: A plurality of processing units each executing one or more processes or threads (collectively “threads”); One or more execution units shared by the plurality of processing units and communicatively connected to the plurality of processing units, wherein the execution unit executes instructions from the thread A unit; An event delivery mechanism for delivering the event to a respective thread with which the event is associated, wherein the event delivery mechanism is communicatively connected with the plurality of processing units, and ii executes each such event with an instruction And an event delivery mechanism for delivering to each of the threads, thereby achieving the above objective.
前記イベントが送達される前記スレッドは、前記スレッドの外で命令を実行することなく、前記イベントを処理してもよい。 The thread to which the event is delivered may process the event without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
前記実行ユニットは、どのスレッドからの命令であるかを知ることを必要とせずに、前記スレッドからの命令を実行してもよい。 The execution unit may execute instructions from the thread without needing to know from which thread the instruction is.
各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられなくてもよい。 Each thread may or may not be forced to execute on the same processing unit while the thread is alive.
前記処理ユニットの少なくとも1つは、仮想処理ユニットであってもよい。 At least one of the processing units may be a virtual processing unit.
本発明による組込みプロセッサは、A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を各々が実行する複数の仮想処理ユニットであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の仮想処理ユニットと、B.複数の実行ユニットと、C.前記複数の処理ユニットおよび前記複数の実行ユニットと通信接続されるパイプラインコントロールであって、前記パイプラインコントロールは、前記実行ユニットのうちの複数のユニット上で同時に実行するために、前記スレッドのうちの複数のスレッドからの命令を起動する、パイプラインコントロールと、D.前記複数の処理ユニットと通信接続され、かつ、命令の実行なしに、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、ここで、前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含む、イベント送達メカニズムとを備える組込みプロセッサであって、E.イベントが送達されるスレッドは、前記スレッドの外で命令を実行することなく、前記イベントを処理し、これにより、上記目的を達成する。 An embedded processor according to the present invention comprises: A plurality of virtual processing units, each executing one or more processes or threads (collectively “threads”), each thread forcing execution on the same processing unit while the thread is alive B. a plurality of virtual processing units that may or may not be forced; A plurality of execution units; A pipeline control communicatively connected to the plurality of processing units and the plurality of execution units, wherein the pipeline control is configured to Pipeline control for initiating instructions from a plurality of threads; An event delivery mechanism that is communicatively connected to the plurality of processing units and delivers the event to each thread with which the event is associated without execution of an instruction, wherein the event is a hardware interrupt, An embedded processor comprising an event delivery mechanism, including any of software initiated signaling events ("software events") and memory events; The thread to which the event is delivered processes the event without executing instructions outside the thread, thereby achieving the above objective.
前記パイプラインコントロールは、それぞれの仮想処理ユニットと各々が関連付けられた複数の命令キューを備えてもよい。 The pipeline control may include a plurality of instruction queues each associated with a respective virtual processing unit.
前記パイプラインコントロールは、前記命令キューからの命令クラスをデコードしてもよい。 The pipeline control may decode an instruction class from the instruction queue.
前記パイプラインコントロールは、前記処理ユニットによって、リソース供給ソースと、前記命令キューからディスパッチされた前記命令の宛先レジスタとにアクセスしてもよい。 The pipeline control may access a resource supply source and a destination register of the instruction dispatched from the instruction queue by the processing unit.
前記実行ユニットは、命令アドレスの生成、アドレス変換および命令のフェッチのいずれかを担う分岐実行ユニットを備えてもよい。 The execution unit may include a branch execution unit responsible for any of instruction address generation, address translation, and instruction fetch.
前記分岐実行ユニットは、前記仮想処理ユニットの状態を維持してもよい。 The branch execution unit may maintain the state of the virtual processing unit.
前記パイプラインコントロールは、前記仮想処理ユニットによって、前記実行ユニットにアクセスしてもよい。 The pipeline control may access the execution unit by the virtual processing unit.
前記パイプラインコントロールは、仮想処理ユニットごとの前記命令キューが空になると、前記仮想処理ユニットによって共有される分岐実行ユニットにシグナリングしてもよい。 The pipeline control may signal a branch execution unit shared by the virtual processing unit when the instruction queue for each virtual processing unit becomes empty.
前記パイプラインコントロールは、前記実行ユニットをアイドリングしてもよい。 The pipeline control may idle the execution unit.
前記複数の実行ユニットは、整数ユニット、浮動ユニット、分岐ユニット、比較ユニット、およびメモリユニットのいずれかを備えてもよい。 The plurality of execution units may include any of an integer unit, a floating unit, a branch unit, a comparison unit, and a memory unit.
本発明による組込みプロセッサシステムは、A.複数の組込みプロセッサと、B.前記複数の組込みプロセッサ上で実行する複数の仮想処理ユニットであって、各仮想処理は、1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を実行し、かつ、各仮想処理ユニットは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の仮想処理ユニットと、C.前記複数の処理ユニットによって共有され、かつ、前記複数の処理ユニットと通信接続された1つ以上の実行ユニットであって、前記実行ユニットは、前記スレッドからの命令を実行し、前記実行ユニットは、整数ユニット、浮動ユニット、分岐ユニット、比較ユニット、およびメモリ実行ユニットのいずれかを備える、1つ以上の実行ユニットと、D.イベントが関連付けられるそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、i前記複数の処理ユニットと通信接続され、iiそのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムとを備え、これにより、上記目的を達成する。 An embedded processor system according to the present invention comprises: A plurality of embedded processors; A plurality of virtual processing units executing on the plurality of embedded processors, each virtual processing executing one or more processes or threads (collectively “threads”), and each virtual processing unit comprising: C. a plurality of virtual processing units that may or may not be forced to execute on the same processing unit while the thread is alive; One or more execution units shared by the plurality of processing units and communicatively connected to the plurality of processing units, the execution unit executing instructions from the thread, the execution unit comprising: One or more execution units comprising any of an integer unit, a floating unit, a branch unit, a comparison unit, and a memory execution unit; An event delivery mechanism for delivering the event to a respective thread with which the event is associated, wherein the event delivery mechanism is communicatively connected with the plurality of processing units, and ii executes instructions for each such event. And an event delivery mechanism for delivering to the respective thread, thereby achieving the above object.
イベントが送達される前記スレッドは、前記スレッドの外で命令を実行することなく、前記イベントを処理してもよい。 The thread to which the event is delivered may process the event without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
前記分岐ユニットは、前記スレッドのために実行されるべき命令のフェッチを担ってもよい。 The branch unit may be responsible for fetching instructions to be executed for the thread.
前記分岐ユニットは、命令アドレスの生成およびアドレス変換のいずれかをさらに担ってもよい。 The branch unit may further be responsible for either instruction address generation or address translation.
前記分岐ユニットは、前記それぞれの仮想処理ユニットごとのスレッド状態を格納するスレッド状態記憶装置を備えてもよい。 The branch unit may include a thread state storage device that stores a thread state for each of the virtual processing units.
本発明による組込みプロセッサシステムは、A.前記複数の処理ユニットおよび前記複数の実行ユニットと通信接続されるパイプラインコントロールであって、前記パイプラインコントロールは、前記実行ユニットのうちの複数のユニット上で同時に実行するために、前記スレッドのうちの複数のスレッドからの命令をディスパッチする、パイプラインコントロールを備え、B.前記パイプラインコントロールは、それぞれの仮想処理ユニットと各々が関連付けられた複数の命令キューを備え、C.前記分岐実行ユニットによってフェッチされた命令は、対応するスレッドが実行される前記それぞれの仮想処理ユニットと関連付けられた前記命令キュー内に配置されてもよい。1つ以上の命令が、前記命令キューを等しいレベルに保つという目的で、前記スレッドのために、ある時点にフェッチされてもよい。 An embedded processor system according to the present invention comprises: A pipeline control communicatively connected to the plurality of processing units and the plurality of execution units, wherein the pipeline control is configured to A pipeline control for dispatching instructions from a plurality of threads; The pipeline control includes a plurality of instruction queues each associated with a respective virtual processing unit; Instructions fetched by the branch execution unit may be placed in the instruction queue associated with the respective virtual processing unit in which the corresponding thread is executed. One or more instructions may be fetched at some point for the thread for the purpose of keeping the instruction queue at an equal level.
前記パイプラインコントロールは、1つ以上の命令を、実行するために、ある時点に所与の命令キューからディスパッチしてもよい。 The pipeline control may dispatch one or more instructions from a given instruction queue at some point for execution.
前記パイプラインコントロールによって、所与の時点に所与の命令キューからディスパッチされた多数の命令は、前記キューの命令シーケンス内のストップフラグによってコントロールされてもよい。 With the pipeline control, a number of instructions dispatched from a given instruction queue at a given time may be controlled by stop flags in the queue's instruction sequence.
1つ以上のスレッドからの複数の命令を同時に、前記パイプラインコントロールが起動し、かつ前記実行ユニットが実行してもよい。 A plurality of instructions from one or more threads may be simultaneously activated by the pipeline control and executed by the execution unit.
本発明の組込みプロセッサは、A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を各々が実行する複数の処理ユニットであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の処理ユニットと、B.イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、i前記複数の処理ユニットと通信接続され、iiそのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムとを備え、これにより、上記目的を達しする。 The embedded processor of the present invention includes A. A plurality of processing units, each executing one or more processes or threads (collectively “threads”), each thread being forced to execute on the same processing unit while the thread is alive B. a plurality of processing units, An event delivery mechanism for delivering the event to a respective thread with which the event is associated, wherein the event delivery mechanism is communicatively connected with the plurality of processing units, and ii executes each such event with an instruction And an event delivery mechanism for delivering to each of the threads, thereby achieving the above objective.
イベントが送達される前記スレッドは、前記スレッドの外で命令を実行することなく、前記イベントを処理してもよい。 The thread to which the event is delivered may process the event without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
前記処理ユニットの少なくとも1つは、仮想処理ユニットであってもよい。 At least one of the processing units may be a virtual processing unit.
本発明による組込みプロセッサシステムは、A.複数の組込みプロセッサと、B.前記複数の組込みプロセッサ上で実行する複数の仮想処理ユニットであって、各仮想処理は、1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を実行し、かつ、各仮想処理ユニットは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の仮想処理ユニットと、C.イベントが関連付けられるそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、i前記複数の処理ユニットと通信接続され、iiそのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムとを備え、これにより、上記目的を達成する。 An embedded processor system according to the present invention comprises: A plurality of embedded processors; A plurality of virtual processing units executing on the plurality of embedded processors, each virtual processing executing one or more processes or threads (collectively “threads”), and each virtual processing unit comprising: C. a plurality of virtual processing units that may or may not be forced to execute on the same processing unit while the thread is alive; An event delivery mechanism for delivering the event to a respective thread with which the event is associated, wherein the event delivery mechanism is communicatively connected with the plurality of processing units, and ii executes instructions for each such event. And an event delivery mechanism for delivering to the respective thread, thereby achieving the above object.
イベントが送達される前記スレッドは、前記スレッドの外で命令を実行することなく、前記イベントを処理してもよい。 The thread to which the event is delivered may process the event without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
本発明による組込みプロセシングの方法は、A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の処理ユニットの各々上で実行するステップと、B.前記複数の処理ユニットによって共有される1つ以上の実行ユニットにおいて、前記スレッドからの命令を実行するステップと、C.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドにイベントを送達するステップとを包含し、これにより、上記目的を達成する。 The method of embedded processing according to the present invention comprises: B. executing one or more processes or threads (collectively “threads”) on each of the plurality of processing units; C. executing instructions from the thread in one or more execution units shared by the plurality of processing units; Delivering the event to each thread with which the event is associated without executing the instruction, thereby achieving the above objective.
前記スレッドの外で命令を実行することなく、前記スレッドが送達される前記イベントを処理するステップを包含してもよい。 It may include processing the event delivered by the thread without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
前記1つ以上の実行ユニットにおいて、前記スレッドからの命令を実行するステップは、どのスレッドからの命令であるかを知ることを必要としなくてもよい。 In the one or more execution units, the step of executing an instruction from the thread may not require knowing from which thread the instruction is.
各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられなくてもよい。 Each thread may or may not be forced to execute on the same processing unit while the thread is alive.
前記処理ユニットの少なくとも1つは、仮想処理ユニットであってもよい。 At least one of the processing units may be a virtual processing unit.
本発明による前記組込みプロセシングの方法は、A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の仮想処理ユニットの各々上で実行するステップであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、ステップと、B.前記実行ユニットのうちの複数のユニット上で同時に実行するために、前記スレッドのうちの複数のスレッドからの命令を起動するステップと、C.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップであって、前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含む、ステップと、D.前記スレッドの外で命令を実行することなく、前記スレッドが送達される前記イベントを処理するステップとを包含し、これにより、上記目的を達成する。 The method of integration processing according to the present invention comprises A. Executing one or more processes or threads (collectively "threads") on each of a plurality of virtual processing units, each thread running on the same processing unit while the thread is alive B. Forced or not forced to perform steps; C. invoking instructions from a plurality of threads of the threads for simultaneous execution on a plurality of units of the execution units; Delivering the event to each thread with which the event is associated without executing an instruction, the event comprising a hardware interrupt, a software initiated signaling event ("software event") and a memory event A step comprising any of: Processing the event delivered by the thread without executing instructions outside the thread, thereby achieving the above objective.
前記起動するステップは、前記命令キューからの命令クラスをデコードするステップを包含してもよい。 The step of activating may include the step of decoding an instruction class from the instruction queue.
前記起動するステップは、前記仮想処理ユニットによる、リソース供給ソース、および前記命令キューからディスパッチされた前記命令の宛先レジスタへのアクセスをコントロールするステップを包含してもよい。 The initiating step may include controlling access by the virtual processing unit to a resource supply source and a destination register of the instruction dispatched from the instruction queue.
前記仮想処理ユニットのすべてによって共有される分岐実行ユニットを用いて、命令アドレスの生成、アドレス変換、および命令をフェッチするステップのいずれかを実行するステップを包含してもよい。 A branch execution unit shared by all of the virtual processing units may be used to include any of the steps of instruction address generation, address translation, and instruction fetching.
前記分岐実行ユニットを用いて、前記仮想処理ユニットの状態を維持するステップを包含してもよい。 The branch execution unit may be used to maintain the state of the virtual processing unit.
前記実行ユニットは、整数ユニット、浮動ユニット、分岐ユニット、比較ユニット、およびメモリユニットのいずれかを備えてもよい。 The execution unit may include any one of an integer unit, a floating unit, a branch unit, a comparison unit, and a memory unit.
本発明による組込みプロセシングの方法は、A.複数の仮想処理ユニットを複数の組込みプロセッサ上で実行するステップと、B.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の仮想処理ユニットの各々上で実行するステップであって、各スレッドは、前記スレッドが生きている間、同じ仮想処理ユニットおよび/または同じ組込みプロセッサ上での実行を強いられるか、または強いられない、ステップと、C.前記複数の処理ユニットによって共有される1つ以上の実行ユニットにおいて、前記スレッドからの命令を実行するステップであって、前記実行ユニットは、整数ユニット、浮動ユニット、分岐ユニット、比較ユニット、およびメモリ実行ユニットのいずれかを備える、ステップと、D.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップとを包含し、これにより、上記目的を達成する。 The method of embedded processing according to the present invention comprises: B. executing a plurality of virtual processing units on a plurality of embedded processors; Executing one or more processes or threads (collectively “threads”) on each of a plurality of virtual processing units, each thread being the same virtual processing unit and / or while the thread is alive Or forced or not forced to run on the same embedded processor; Executing instructions from the thread in one or more execution units shared by the plurality of processing units, the execution units comprising an integer unit, a floating unit, a branch unit, a comparison unit, and a memory execution A step comprising any of the units; Delivering the event to each thread with which the event is associated without executing the instruction, thereby achieving the above objective.
前記スレッドの外で命令を実行することなく、前記スレッドが送達される前記イベントを処理するステップを包含してもよい。 It may include processing the event delivered by the thread without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
前記分岐実行ユニットを用いて、前記スレッドのために実行されるべき命令をフェッチするステップを包含してもよい。 The branch execution unit may be used to fetch an instruction to be executed for the thread.
前記分岐実行ユニットで、命令アドレスの生成およびアドレス変換のいずれかを実行するステップを包含してもよい。 The branch execution unit may include a step of executing any one of instruction address generation and address translation.
本発明による方法は、A.前記実行ユニットのうちの複数のユニット上で同時に実行するために、前記スレッドのうちの複数のスレッドからの命令をディスパッチするステップを包含し、B.前記ディスパッチするステップは、前記それぞれのスレッドごとにフェッチされた命令を、前記スレッドが実行される前記仮想処理ユニットと関連付けられた命令キュー内に配置するステップを包含してもよい。 The method according to the invention comprises: B. dispatching instructions from a plurality of threads of the thread for simultaneous execution on a plurality of units of the execution unit; The dispatching step may include placing an instruction fetched for each respective thread in an instruction queue associated with the virtual processing unit in which the thread is executed.
前記ディスパッチするステップは、前記命令キューを等しいレベルに保つという目的で、与えられたスレッドのために、1つ以上の命令をある時点にフェッチするステップを包含してもよい。 The dispatching step may include fetching one or more instructions at a point in time for a given thread for the purpose of keeping the instruction queue at an equal level.
前記ディスパッチするステップは、前記実行ユニットによって実行するために、1つ以上の命令を、ある時点に所与の命令キューからディスパッチするステップを包含してもよい。 The dispatching step may include dispatching one or more instructions from a given instruction queue at a point in time for execution by the execution unit.
前記パイプラインコントロールによって、所与の時点に所与の命令キューからディスパッチされた多数の命令は、前記キューの命令シーケンス内のストップフラグによってコントロールされてもよい。 With the pipeline control, a number of instructions dispatched from a given instruction queue at a given time may be controlled by stop flags in the queue's instruction sequence.
本発明による方法は、1つ以上のスレッドから複数の命令を同時に起動および実行するステップを包含してもよい。 The method according to the present invention may include the step of simultaneously invoking and executing a plurality of instructions from one or more threads.
本発明による組込みプロセシングの方法は、A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の処理ユニットの各々上で実行するステップであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、ステップと、B.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップとを包含し、これにより、上記目的を達成する。 The method of embedded processing according to the present invention comprises: Executing one or more processes or threads (collectively “threads”) on each of a plurality of processing units, each thread executing on the same processing unit while the thread is alive Forced or not forced, step B. Delivering the event to each thread with which the event is associated without executing the instruction, thereby achieving the above objective.
前記スレッドの外で命令を実行することなく、前記スレッドが送達される前記イベントを処理するステップを包含してもよい。 It may include processing the event delivered by the thread without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
前記処理ユニットの少なくとも1つは、仮想処理ユニットであってもよい。 At least one of the processing units may be a virtual processing unit.
本発明による組込みプロセシングの方法は、A.複数の仮想処理ユニットを複数の組込みプロセッサ上で実行するステップと、B.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の仮想処理ユニットの各々上で実行するステップであって、各仮想処理ユニットは、前記スレッドが生きている間、同じ仮想処理ユニットおよび/または同じ組込みプロセッサ上での実行を強いられるか、または強いられない、ステップと、
C.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップとを包含し、これにより、上記目的を達成する。
The method of embedded processing according to the present invention comprises: B. executing a plurality of virtual processing units on a plurality of embedded processors; Executing one or more processes or threads (collectively “threads”) on each of a plurality of virtual processing units, each virtual processing unit being the same virtual processing unit while the thread is alive And / or steps forced or not forced to run on the same embedded processor; and
C. Delivering the event to each thread with which the event is associated without executing the instruction, thereby achieving the above objective.
本発明による方法は、前記スレッドの外で命令を実行することなく、前記スレッドが送達される前記イベントを処理してもよい。 The method according to the invention may process the event to which the thread is delivered without executing instructions outside the thread.
前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含んでもよい。 The events may include any of hardware interrupts, software initiated signaling events (“software events”), and memory events.
図1は、本発明のある実施形態により構成され動作し、かつ、本明細書および添付の図面中で「SEP」と呼ばれることがあるプロセッサモジュール5を示す。このモジュールは、PC、ワークステーション、またはメインフレームコンピュータ等(しかしながら、示された実施形態は組込みプロセッサとして利用される)の汎用プロセッサの基礎を提供し得る。
FIG. 1 illustrates a
モジュール5は、単一で、または、1つ以上の他のそのようなモジュールと組み合わせて用いられ得、計算要件が、実質的に並列であり、同時に実行する複数のアプリケーションおよび/または命令レベル並列性から利益を得るデバイスまたはシステムに特に適している。これは、リアルタイム要件のデバイスまたはシステム、マルチメディアアプリケーションを実行するデバイスまたはシステム、ならびに/あるいは、イメージ、信号、グラフィックおよび/またはネットワーク処理等の高度な計算要件のデバイスまたはシステムを含み得る。このモジュールは、さらに、例えば、アプリケーションを同時に使用する場合に単一プラットフォーム上に複数のアプリケーションを統合するために適切である。このモジュールは、これが組み込まれるか、そうでなければ内蔵されているデバイスおよび/またはシステムを横断して、ならびにネットワーク(有線、無線、その他)を横断して、あるいは、これらのデバイスおよび/またはシステムが結合される他の媒体を横断してシームレスアプリケーションを提供する。さらに、このモジュールは、ピアツーピア(P2P)アプリケーション、およびユーザの対話性を有するアプリケーションに適している。これまでの記述は、モジュール5が適しているアプリケーションおよび環境の広範囲な列挙であることを意図しているのではなく、1例にすぎない。
モジュール5が組込まれ得るデバイスおよびシステムの例は、特に、例えば、図24に示されるタイプのデジタルLCD−TVを含み、モジュール5は、SOC(system−on−a−chip)コンフィギュレーションで具現化される。(当然、モジュールは、単一チップ上に組み入れられる必要がなく、むしろ、おそらく、複数チップ、1つ以上の基板、別々に収容された1つ以上のデバイス、および/またはこれらの組み合わせを含む多数のフォームファクタのいずれかで具現化され得ることがわかる。)さらなる例は、デジタルビデオレコーダ(DVR)およびサーバ、MP3サーバ、携帯電話、スチルおよびビデオカメラ(DVR)、ゲームプラットフォーム、ユニバーサルネットワークディスプレイ(例えば、デジタルLCD−TV、ネットワーク情報/インターネットアプライアンス、および汎用アプリケーションプラットフォームの組み合わせ)、G3携帯電話、パーソナルデジタルアシスタント等を含む。
Examples of devices and systems in which the
モジュール5は、スレッド処理ユニット(TPU)10〜20、レベルワン(L1)命令およびデータキャッシュ22、24、レベルツー(L2)キャッシュ26、パイプラインコントロール28および実行(または機能ユニット)30〜38、すなわち、整数処理ユニット、浮動少数点処理ユニット、比較ユニット、メモリユニット、および分岐ユニットを備える。ユニット10〜38は、図面に示されているように結合されており、以下において、特に詳述されない。
概観として、TPU10〜20は、仮想処理ユニットであり、プロセッサモジュール5内に物理的に実装されており、各々が結合され、そして、1つ(以上)のプロセス(単数または複数)および/またはスレッド(単数または複数)(集合的に、スレッド(単数または複数))を所与の瞬間に処理する。TPUは、汎用レジスタ、述語レジスタ、コントロールレジスタで表されるそれぞれのスレッド単位の状態を有する。TPUは、スレッドの各サイクルの任意の組み合わせから5つまでの命令を起動する、起動およびパイプラインコントロール等のハードウェアを共有する。図面に示されるように、TPUは、さらに、起動された命令を、どのスレッドからのものかを知ることを必要とせずに、起動された命令を独立して実行する実行ユニット30〜38を共有する。
As an overview, TPUs 10-20 are virtual processing units that are physically implemented within
さらなる概観として、示されたL2キャッシュ26は、スレッド処理ユニット10〜20のすべてによって共有され、命令およびデータを、モジュール5が組み入れられたチップの内部(ローカル)および外部の両方の記憶装置に格納する。示されたL1命令キャッシュ22およびデータキャッシュ24もまた、TPU10〜20によって共有され、上述のチップにローカルである記憶装置に搭載される(当然、他の実施形態では、レベル1およびレベル2キャッシュは、例えば、モジュール5に完全にローカルである、完全に外部である、またはその他の)異なった構成であり得ることが分かる。)。
As a further overview, the
モジュール5の設計はスケーラブルである。2つ以上のモジュール5が、Socまたは他のコンフィギュレーションにまとめられ(ganged)、これにより、アクティブスレッドの数および処理パワー全体が増加する。モジュール5によって用いられ、本明細書中に記載されるスレディングモデルに基づいて、結果としてのTPUの増加はソフトウェアトランスペアレントである。示されたモジュール5は、6つのTPU10〜20を有するが、他の実施形態は、より多くの数の(さらに、当然、より少ない数の)TPUを有してもよい。さらに、追加的機能ユニットは、例えば、サイクルごとに起動される命令の数を5から10〜15以上に増加して提供されてもよい。L1およびL2キャッシュ構造の以下の記載において明らかなように、これらの2つはスケーリングされ得る。
The design of
示されたモジュール5は、アプリケーションソフトウェア環境としてLinuxを利用する。マルチスレッドと共に、これは、リアルタイムおよび非リアルタイムアプリケーションが1つのプラットフォーム上で動作することを可能にする。これにより、さらに、オープンソースソフトウェアおよびアプリケーションのレバレッジが製品機能を向上させることが可能になる。さらに、これにより、種々のプロバイダによるアプリケーションの実行が可能になる。
(マルチスレッド)
上述のように、TPU10〜20は、仮想処理ユニットであり、単一のプロセッサモジュール5内に物理的に実装されており、各々が結合され、所与の瞬間に1つ(以上)のスレッド(単数または複数)を処理する。スレッドは、広範囲にわたるアプリケーションを具現化し得る。デジタルLCD−TVにおいて有用な例は、例えば、MPEG2信号多重分離、MPEG2ビデオデコード、MPEGオーディオデコード、デジタル−TVユーザインターフェースオペレーション、オペレーティングシステム実行(例えば、Linux)を含む。当然、これらおよび/または他のアプリケーションは、デジタルLCDTV、およびモジュール5が組み入れられ得る種々の他のデバイスおよびシステムにおいて有用であり得る。
The shown
(Multithread)
As mentioned above, TPUs 10-20 are virtual processing units that are physically implemented within a
TPUによって実行されるスレッドは独立しているが、メモリおよびイベントを通じて通信し得る。プロセッサモジュール5の各サイクルの間、実行ユニットまたは機能ユニット30〜38を利用するために必要な数のアクティブ実行スレッドから命令が起動される。示された実施形態では、この点に関して「公正」を保証するためにそれぞれのスレッドにラウンドロビンプロトコルが課せられる(しかしながら、他の実施形態では、特権プロトコルまたは他のプロトコルが代替的または追加的に用いられてもよい)。(例えば、アプリケーションを起動、スレッドの活性化を容易にする等のために)1つ以上のシステムスレッドがTPU上で実行し得るが、アクティブスレッドを実行するためにオペレーションシステムの介入は必要とされない。
The threads executed by the TPU are independent, but can communicate through memory and events. During each cycle of the
プロセッサごとの複数のアクティブスレッド(仮想プロセッサ)をサポートする基本的理由は以下のとおりである。 The basic reason for supporting multiple active threads (virtual processors) per processor is as follows.
機能能力
プロセッサごとの複数のアクティブスレッドは、単一のマルチスレッドプロセッサが複数のアプリケーション、メディア、信号処理およびネットワークプロセッサに取って代わることを可能にする。これは、さらに、アプリケーション、イメージ、信号処理およびネットワーキングに対応する複数のスレッドが低レイテンシーおよび高性能で同時に動作および相互運用することを可能にする。コンテキストスイッチおよびインターフェースオーバーヘッドは最小化される。MP4でコードのような単一のイメージ処理アプリケーション内であっても、スレッドは、例えば、フレームnが作成されている間にフレームn+1のデータを準備するために、パイプラインの態様で、容易に同時に動作し得る。
Multiple active threads per functional capability processor allow a single multi-threaded processor to replace multiple applications, media, signal processing and network processors. This further allows multiple threads corresponding to applications, images, signal processing and networking to operate and interoperate simultaneously with low latency and high performance. Context switch and interface overhead is minimized. Even within a single image processing application such as code in MP4, a thread can easily, for example, in a pipelined manner to prepare data for frame n + 1 while frame n is being created. Can operate simultaneously.
性能
プロセッサごとの複数のアクティブスレッドは、機能ユニットをより良好に利用し、かつ、メモリおよび他のイベントレイテンシーを容認することによって個々のプロセッサの性能を向上させる。スレッドを4つまで同時に実行するために2x性能の向上を達成することは珍しくはない。パワー消費およびダイサイズの増大は重要ではなく、従って、ユニットごとの性能、パワーおよび価格パフォーマンスが改善される。プロセッサごとの複数のアクティブスレッドは、さらに、分岐およびキャッシュミスによる性能の低下を、これらのイベントの間に別のスレッドを実行することによって低減する。さらに、これは、ほとんどのコンテキストスイッチオーバーヘッドを除去し、リアルタイムアクティビティのレイテンシーを低減する。さらに、これにより、一般的な高性能イベントモデルがサポートされる。
Multiple active threads per performance processor improve the performance of individual processors by making better use of functional units and allowing memory and other event latencies. It is not uncommon to achieve 2x performance improvements to run up to four threads simultaneously. The increase in power consumption and die size is not critical, thus improving performance, power and price performance per unit. Multiple active threads per processor further reduce performance degradation due to branching and cache misses by executing another thread during these events. In addition, this removes most of the context switch overhead and reduces the latency of real-time activity. In addition, this supports a general high performance event model.
インプリメンテーション
プロセッサごとの複数のアクティブスレッドは、パイプラインおよび設計全体の簡略化ももたらす。複雑な分岐プレディケーションの必要がない。なぜなら、別のスレッドが動作し得るからである。これにより、複数のプロセッサチップに対して単一プロセッサチップのコストが低減され、かつ、他の複雑性が除去された場合にコストが低減される。さらに、これにより、単位電力当りの性能が向上する。
Multiple active threads per implementation processor also provides simplification of the pipeline and the overall design. There is no need for complex branch predication. This is because another thread can operate. This reduces the cost of a single processor chip for multiple processor chips and reduces costs when other complexity is eliminated. Further, this improves the performance per unit power.
図2は、従来のスーパースカラプロセッサによるスレッド処理を、示されたプロセッサモジュール5のスレッド処理と比較する。図2Aを参照して、スーパースカラプロセッサにおいて、単一の実行スレッドから(斜めのスティップリングで示される)の命令が、実行されているコード内の実際の並列および依存性に基づいて利用可能な実行ユニット上で実行するように動的にスケジューリングされる。これは、各サイクルの間に平均的にほとんどの実行ユニットを利用することができないことを意味する。実行ユニットの数が増加するにつれて、利用率が、通常、低下する。さらに、実行ユニットは、メモリシステムおよび分岐予測ミス/待ちの間にアイドル状態になる。
FIG. 2 compares thread processing by a conventional superscalar processor with thread processing of the
これとは異なり、図2Bを参照して、モジュール5において、複数のスレッドからの命令(異なったそれぞれのスティップリングパターンで示される)が同時に実行する。各サイクル、モジュール5が複数のスレッドからの命令が利用可能な実行ユニットリソースを最適に利用するようにスケジューリングする。従って、実行ユニットの利用および性能全体がより高くなる一方で、同時に、ソフトウェアにトランスペアレントである。
(イベントおよびスレッド)
示された実施形態では、イベントは、割り込み等のハードウェア(またはデバイス)イベントと、デバイスイベントと等しいがソフトウェア命令によって開始されるソフトウェアイベントと、キャッシュミスの完了またはメモリ生産者−消費者(フル−エンプティ)変換の結果等のメモリイベントとを含む。ハードウェアの割り込みは、通常、アイドル状態のスレッド(例えば、ターゲットスレッドまたはターゲットグループのスレッド)によって扱われるデバイスイベントに変換される。ソフトウェアイベントは、例えば、あるスレッドが別のスレッドを直接起こすことを可能にするために用いられ得る。
In contrast, referring to FIG. 2B, in
(Events and threads)
In the illustrated embodiment, events are hardware (or device) events such as interrupts, software events that are equal to device events but initiated by software instructions, and cache miss completion or memory producer-consumer (full -Empty) including memory events such as the result of the conversion. Hardware interrupts are typically translated into device events that are handled by idle threads (eg, target threads or target group threads). Software events can be used, for example, to allow one thread to wake up another thread directly.
各イベントは、アクティブスレッドにバインドする。特定のスレッドバインディングが存在しない場合、これは、示された実施形態では常時アクティブであるデフォルトシステムスレッドにバインドする。そのスレッドは、その後、新しいスレッドを仮想プロセッサ上でスケジューリングすることを含む、イベントの処理を適宜行う。特定のスレッドバインディングが存在しない場合、ハードウェアまたはソフトウェアイベントが送達されると(後述されるように、イベント送達メカニズムで)、ターゲットスレッドはアイドル状態から実行状態に遷移する。ターゲットスレッドがすでにアクティブであり、実行している場合、イベントはハンドリングのためにデフォルトシステムスレッドに向けられる。 Each event binds to an active thread. If there is no specific thread binding, this binds to the default system thread that is always active in the illustrated embodiment. The thread then processes events appropriately, including scheduling a new thread on the virtual processor. In the absence of a particular thread binding, the target thread transitions from the idle state to the running state when a hardware or software event is delivered (with an event delivery mechanism, as described below). If the target thread is already active and running, the event is directed to the default system thread for handling.
示された実施形態では、スレッドは、キャッシュミスおよび同期化待ちを含むメモリシステムストール(略して遮断(blockage));分岐ミス予測(非常に簡単には遮断);明示的な(ソフトウェアまたはハードウェアによって生成された)イベント待ち;ならびにシステムスレッドによるアプリケーションスレッドの明示的ブロックにより、非実行状態(ブロック)になり得る。 In the illustrated embodiment, the thread is a memory system stall (blockage for short), including cache misses and synchronization waits; branch miss prediction (very simply shut down); explicit (software or hardware) Waiting for events (generated by); as well as explicit blocking of application threads by system threads.
本発明の好ましい実施形態では、イベントは、効率的な動的分散実行環境の基礎を提供する物理プロセッサモジュール5とネットワークとを介してイベントを操作する。従って、例えば、デジタルLCD−TVにおいて実行するモジュール5、あるいは他のデバイスまたはシステムは、スレッドを実行し、ネットワーク(無線、特権、その他)を介して動的に拡散するメモリ、またはサーバまたは他の(リモート)デバイスからの他の媒体を利用する。スレッドおよびメモリベースのイベントは、例えば、スレッドがその原理により動作する任意のモジュール5上でトランスペアレントに実行し得ることを保証する。これにより、例えば、モバイルデバイスが他のネットワークデバイスのパワーをレバレッジすることが可能になる。これにより、さらに、リモートネットワークデバイス上でのピアツーピアおよびマルチスレッドアプリケーションのトランスペアレントな実行が可能になる。優利な点は、性能の向上、機能の向上、およびパワー消費の低減を含む。
In the preferred embodiment of the present invention, the events manipulate the events through the
スレッドは、システムおよびアプリケーションの2つの特権レベルで動作する。システムスレッドは、そのスレッドおよびプロセッサ内のすべての他のスレッドのすべての状態にアクセスし得る。アプリケーションスレッドは、それ自体に対応する非特権状態にのみアクセスし得る。デフォルトにより、スレッド0はシステム特権で動作する。他のスレッドは、システム特権スレッドによって生成されている場合にシステム特権用に構成され得る。
Threads operate at two privilege levels: system and application. A system thread can access all the states of that thread and all other threads in the processor. An application thread can only access the unprivileged state corresponding to itself. By default,
図3を参照して、示された実施形態では、スレッド状態は以下のとおりである。 Referring to FIG. 3, in the illustrated embodiment, the thread states are as follows:
アイドル状態(または非アクティブ)
スレッドコンテキストはTPU内にロードされ、スレッドは、命令を実行していない。アイドルスレッドは、例えば、ハードウェアまたはソフトウェアイベントが生じた場合、実行状態に遷移する。
Idle state (or inactive)
The thread context is loaded into the TPU and the thread is not executing instructions. An idle thread transitions to an execution state when, for example, a hardware or software event occurs.
待ち状態(またはアクティブ、待ち状態
スレッドコンテキストは、TPU内にロードされるが、現在、命令を実行していない。待ちスレッドは、例えば、メモリ命令が続行することを可能にする、キャッシュオペレーション等の、起こるが待たれるイベントが完了した場合に実行状態に遷移する。
A wait state (or active, wait state thread context is loaded into the TPU, but is not currently executing an instruction. A wait thread can, for example, allow a memory instruction to continue, such as a cache operation. When an event that occurs but is awaited is completed, it transitions to an execution state.
実行状態(またはアクティブ、実行状態)
スレッドコンテキストがTPU内にロードされ、現在、命令を実行している。スレッドは、例えば、キャッシュミスまたはエンプティ/フィル(生産者−消費者メモリ(consumer−producer memory))命令が完了し得ない動作をキャッシュが完了することをメモリ命令が待たなければならない場合、メモリ命令が待ち状態に遷移する。イベント命令が実行された場合、スレッドはアイドル状態に遷移する。
Running state (or active, running state)
A thread context is loaded into the TPU and is currently executing instructions. For example, if a memory instruction has to wait for the cache to complete an operation that a cache miss or empty / fill (consumer-producer memory) instruction cannot complete, the memory instruction Transitions to a wait state. If an event instruction is executed, the thread transitions to the idle state.
スレッドは、各TPUと関連したスレッドイネーブルビット(またはフラグまたは他のインジケータ)が、ソフトウェアがTPUにスレッドをロードおよびアンロードするために、いずれのスレッド状態も妨げることなくスレッドをディセーブルする。 Threads disable threads without the thread enable bit (or flag or other indicator) associated with each TPU preventing software from loading and unloading threads to the TPU.
プロセッサモジュール5は、実行する命令のアベイラビリティに基づいてアクティブスレッドにわたって負荷分散する。このモジュールは、さらに、スレッドごとの命令キューを一様にフルに保つことを試みる。従って、アクティブの状態に留まるスレッドがほとんどの命令を実行する。
The
(イベント)
図4は、本発明のある実施形態によるシステムにおけるイベント送達メカニズムを示す。イベントがスレッドに知らされた場合、このスレッドは、(現在、実行状態にある場合)実行をペンディングし、かつ、例えば、仮想アドレス0x0でデフォルトイベントハンドラを実行することによって、そのイベントを認識する。
(Event)
FIG. 4 illustrates an event delivery mechanism in a system according to an embodiment of the invention. When an event is notified to a thread, this thread recognizes the event by pending execution (if currently in the running state) and executing a default event handler at virtual address 0x0, for example.
示された実施形態では、特定のスレッドに知らされ得る5つのイベントタイプがある。 In the illustrated embodiment, there are five event types that can be signaled to a particular thread.
イベントタプルは、次に、受け取られた順序で、イベント−スレッドルックアップテーブル(イベントテーブルまたはスレッドルックアップテーブルとも呼ばれる)42に渡される。このルックアップテーブルは、表示された各スレッドを現在ハンドリングしているのはどのTPUかを決定する。イベントは、次に、イベント−スレッド送達メカニズム44を介して、イベント数で構成されている「TPUイベント」の形態でTPU(および、これにより、そのそれぞれのスレッド)に提供される。特定のイベントをハンドリングするスレッドがまだ示されていない場合、対応するイベントが、TPUの1つでアクティブなデフォルトシステムスレッドに渡される。
The event tuples are then passed to the event-thread lookup table (also called event table or thread lookup table) 42 in the order received. This lookup table determines which TPU is currently handling each displayed thread. The event is then provided to the TPU (and thus its respective thread) via the event-
イベントキュー40は、ハードウェア、ソフトウェアおよび/またはこれらの組み合わせで実現され得る。モジュール5によって表された組み込みSoC(system−on−a−chip)のインプリメンテーションは、必要なキューイング関数を提供する一連のゲートおよび専用バッファとして実現される。これに代わる実施形態では、これは、ソフトウェア(またはハードウェア)リンクリスト、アレイ等で実現される。
The
テーブル42は、ハードウェアデバイスによって提供されたイベントナンバー(例えば、ハードウェア割り込み)またはイベント命令と、そのイベントをシグナリングするために好ましいスレッドとの間にマッピングを確立する。可能なケースは以下のとおりである。 Table 42 establishes a mapping between the event number (eg, hardware interrupt) or event instruction provided by the hardware device and the preferred thread to signal that event. Possible cases are:
イベント数のエントリがない:デフォルトシステムスレッドにシグナリングする
スレッドに提供:スレッドが実行、アクティブまたはアイドル状態にある場合、特定のスレッド数シグナリングし、そうでない場合、特定のシステムスレッドにシグナリングする。
No event number entry: Signal to default system thread Provided to thread: Signal a specific number of threads if the thread is running, active or idle, otherwise signal to a specific system thread.
テーブル42は、専用またはその他の単一の記憶領域であり得、イベントースレッドの更新されたマッピングを維持する。このテーブルは、さらに、分散またはその他の複数の記憶領域を構成し得る。これに関わらず、テーブル42は、ハードウェア、ソフトウェアおよび/またはこれらの組み合わせで実現されてもよい。モジュール5によって表された組込みSoCインプリメンテーションにおいて、テーブルは、イベント−レッドの更新されたマッピングを維持する専用格納領域(単数または複数)で「ハードウェア」ルックアップを実行するゲートによってインプリメントされる。このテーブルは、例えば、TPU10〜20内にスレッドが新規にロードされ、および/または、不活性化およびこれらからアンロードされるとマッピングを更新するシステムレベル特権スレッドによってソフトウェアにアクセス可能でもある。次の実施形態では、テーブル42は、マッピングを維持する格納領域のソフトウェアベースのルックアップによって実現される。
Table 42 may be a dedicated or other single storage area and maintains an updated mapping of event threads. This table may further constitute a distributed or other plurality of storage areas. Regardless, the table 42 may be implemented in hardware, software, and / or a combination thereof. In the embedded SoC implementation represented by
イベント−スレッド送達メカニズム44もまた、ハードウェア、ソフトウェアおよび/またはこれらの組み合わせで実現され得る。モジュール5によって表される組込みSoCインプリメンテーションにおいて、メカニズム44は、それ自体、キューイングが送達されるイベントの一連のゲートおよび専用バッファ46〜48として実現されるTPUキューにシグナリングされたイベントをルーティングするゲート(およびラッチ)によって実現される。上述のように、代替的実施形態では、メカニズム44は、必要な機能を提供するソフトウェア(または他のハードウェア構造)で実現され、同様に、キュー46〜48は、ソフトウェア(またはハードウェア)リンクリスト、アレイ等で実現される。
The event-
示された実施形態におけるハードウェアおよびソフトウェアイベント(すなわち、ソフトウェアによって開始されるシグナリングイベントまたは「ソフトウェア割り込み」)を処理する手順の大要は以下のとおりである。 A summary of the procedure for handling hardware and software events (ie, software initiated signaling events or “software interrupts”) in the illustrated embodiment is as follows.
1.アクティブスレッドを現在実行中のTPUにイベントがシグナリングされる。 1. An event is signaled to the TPU that is currently executing the active thread.
2.そのTPUがアクティブスレッドの実行をペンディングする。例外ステータス、例外IP、および例外Memアドレスコントロールレジスタが、イベントのタイプに基づいてイベントに対応する情報を示すようにセットされる。すべてのスレッド状態が有効である。 2. The TPU is pending execution of the active thread. The exception status, exception IP, and exception Mem address control register are set to indicate information corresponding to the event based on the type of event. All thread states are valid.
3.IPUは、仮想アドレス0x0でデフォルトイベントハンドラのシステム特権の実行を開始し、イベントシグナリングは、対応するスレッドユニットに対してディセーブルにされる。GPレジスタ0〜3および述語レジスタ0〜1は、イベントハンドラによってスクラッチレジスタとして利用され、かつ、システム特権である。慣例により、GP[0]はイベント処理スタックポインタである。 3. The IPU starts executing the default event handler system privilege at virtual address 0x0, and event signaling is disabled for the corresponding thread unit. The GP registers 0 to 3 and the predicate registers 0 to 1 are used as scratch registers by the event handler and have system privileges. By convention, GP [0] is an event processing stack pointer.
4.イベントハンドラは、リエントラントになり、かつ、対応するスレッド実行ユニットへのイベントシグナリングを再イネーブルし得るために十分な状態をセーブする。 4). The event handler is reentrant and saves enough state to be able to re-enable event signaling to the corresponding thread execution unit.
5.イベントハンドラは、その後、イベントを処理する。これは、SWベースのキューにイベントをポスティングするか、または任意の他のアクションをとることができるに過ぎない。 5. The event handler then processes the event. This can only post the event to the SW-based queue or take any other action.
6.イベントハンドラは、その後、状態を復元し、元のスレッドの実行に戻る。 6). The event handler then restores the state and returns to the original thread execution.
メモリ関連イベントは、いくらか異なった態様でハンドリングされる。ペンディング中(メモリ)イベントテーブル(PET)50は、スレッドを実行状態から待ち状態に遷移させる(メモリ参照命令からの)メモリ動作のエントリを保持する。テーブル50は、イベント−スレッドルックアップテーブル42のように実現され得、リファレンスを開始したペンディング中メモリ動作、状態情報、およびスレッドIDのアドレスを保持する。PEIにおけるエントリに対応するメモリ動作が完了し、そのスレッドのPET内に他のペンディング中動作がない場合、対応するスレッドにPETイベントがシグナリングされる。 Memory related events are handled in a somewhat different manner. The pending (memory) event table (PET) 50 holds entries for memory operations (from memory reference instructions) that cause a thread to transition from an execution state to a wait state. The table 50 may be implemented like the event-thread lookup table 42 and holds pending memory operations that initiated the reference, state information, and thread ID addresses. If a memory operation corresponding to an entry in the PEI is complete and there is no other pending operation in the thread's PET, a PET event is signaled to the corresponding thread.
示された実施形態によるメモリイベント処理の大要は以下のとおりである。 The outline of the memory event processing according to the illustrated embodiment is as follows.
1.アクティブスレッドを現在実行中のユニットにイベントがシグナリングされる。 1. An event is signaled to the unit that is currently executing the active thread.
2.そのスレッドがアクティブ−待ち状態であり、イベントがメモリイベントである場合、スレッドは、アクティブ−実行状態に遷移し、現在のIPで実行を継続する。そうでない場合、イベントは無視される。 2. If the thread is active-waiting and the event is a memory event, the thread transitions to the active-execution state and continues execution with the current IP. Otherwise, the event is ignored.
図面においてさらに示されるように、示された実施形態では、スレッド待ちタイムアウトおよびスレッド例外が、スレッドに直接シグナリングされ、イベント−スレッド送達メカニズム44を通じて渡されない。
(トラップ)
マルチスレッドおよびイベントの目標は、スレッドの正常なプログラムの実行が妨げられないようにすることである。発生するイベントおよび割り込みは、イベントを待つ適切なスレッドによって処理される。これが不可能であり、正常な処理が割り込まれることを余儀なくされる場合もある。SEPは、この目的で、トラップメカニズムをサポートする。イベントタイプに基づいたアクションのリストは以下のとおりであり、トラップの全リストは、システム例外状態レジスタに列挙される。
As further shown in the drawings, in the illustrated embodiment, thread wait timeouts and thread exceptions are signaled directly to the thread and not passed through the event-
(trap)
The goal of multithreading and events is to ensure that a thread's normal program execution is not prevented. Events and interrupts that occur are handled by the appropriate thread waiting for the event. This is not possible and sometimes forced to interrupt normal processing. SEP supports a trap mechanism for this purpose. The list of actions based on event type is as follows, and the entire list of traps is listed in the system exception status register:
1.次に実行される命令を特定するIP(命令ポインタ)が例外IPレジスタ内にロードされる
2.特権レベルが例外IPレジスタのビット0内に格納される
3.例外タイプが例外状態レジスタ内にロードされる
4.例外がメモリユニット命令と関連する場合、例外に対応するメモリアドレスが例外メモリアドレスレジスタ内にロードされる
5.現在の特権レベルがシステムにセットされる
6.IP(命令ポインタ)がクリア(ゼロに)される
7.実行がIP0で開始する。
1. 1. An IP (instruction pointer) specifying the next instruction to be executed is loaded into the exception IP register. 2. The privilege level is stored in
(仮想メモリおよびメモリシステム)
示されたプロセッサモジュール5は、64ビット仮想アドレス(VA)空間、64ビットシステムアドレス(SA)(標準的な物理アドレスとは異なった特性を有する)、およびまばらに埋められたVAまたはSAでのシステムアドレスへの仮想アドレスの変換のセグメントモデルを有する仮想メモリおよびメモリシステムアーキテクチャを利用する。
(Virtual memory and memory system)
The
TPU10〜20によってアクセスされるすべてのメモリは、キャッシュとして効率的に管理されるが、オフチップメモリは、DDR DRAMまたはダイナミックメモリの他の形態を利用し得る。図1を再び参照して、示された実施形態では、メモリシステムは、2つのロジックレベルで構成される。レベル1キャッシュは、最適なレイテンシーおよび帯域幅の別個のデータキャッシュ24と命令キャッシュ22とに分割される。示されたレベル2キャッシュ26は、拡張されたレベル2と呼ばれるオンチップ部分とオフチップ部分とからなる。全体として、レベル2キャッシュは、個々のSEPプロセッサ(単数または複数)5のメモリシステムであり、複数のSEPプロセッサ5が用いられるインプリメンテーションの分散した「すべてのキャッシュ」メモリシステムに寄与する。当然、これらの複数のプロセッサは、同じメモリシステム、チップまたはバスを物理的に共有している必要はなく、例えば、ネットワークまたはその他の方法を介して接続され得ることが分かる。
All memory accessed by TPUs 10-20 is efficiently managed as a cache, but off-chip memory may utilize DDR DRAM or other forms of dynamic memory. Referring back to FIG. 1, in the illustrated embodiment, the memory system is configured with two logic levels. The level 1 cache is divided into a
図5は、示されたシステムにおいて用いられるVAからSAへの変換を示し、この変換は、セグメントごとにハンドリングされ、その際(示された実施形態では)これらのセグメントのサイズは、例えば、224〜248バイトと様々であり得る。SAは、メモリシステムにキャッシュされる。従って、メモリシステムに存在するSAは、キャッシュ22/24、26のレベルの1つにエントリを有する。キャッシュ(およびメモリシステム)に存在しないSAは、実質的に、メモリシステムに存在しない。従って、メモリシステムは、ページ(およびサブページ)粒度で、プロセッサ上のページテーブルのオーバーヘッドなしに、ソフトウェアおよびOSに固有の態様でまばらに埋められる。
FIG. 5 illustrates the VA to SA conversion used in the system shown, which is handled segment by segment, where (in the illustrated embodiment) the size of these segments is, for example, 2 It can vary and 24-2 48 bytes. The SA is cached in the memory system. Thus, the SA present in the memory system has an entry at one of the
上述のことに加えて、示された実施形態の仮想メモリおよびメモリシステムアーキテクチャは、以下のさらなる特徴を有する。これらは、分散共有メモリ(DSM)、ファイル(DSF)、オブジェクト(DSO)、ピアツーピア(DSP2P)の直接サポート;スケーラブルキャッシュおよびメモリシステムアーキテクチャ;スレッド間で共有され得るセグメント;ルックアップがタグアクセスと並列であるため、完全な仮想−物理アドレス変換や仮想キャッシュの複雑性を伴わない高速レベル1キャッシュである。 In addition to the above, the virtual memory and memory system architecture of the illustrated embodiment has the following additional features. These include distributed shared memory (DSM), file (DSF), object (DSO), peer-to-peer (DSP2P) direct support; scalable cache and memory system architecture; segments that can be shared between threads; lookups in parallel with tag access Therefore, it is a high-speed level 1 cache that does not involve complete virtual-physical address translation or the complexity of a virtual cache.
(仮想メモリの概観)
示されるシステムにおける仮想アドレスは、メモリリファレンスおよび分岐命令によって構成された64ビットアドレスである。仮想アドレスは、すべてのシステムメモリおよびIOデバイスにアクセスするために用いられるシステムに、セグメントごとに変換される。各セグメントは、224から248バイトまでサイズが様々である。より具体的には、図5を参照して、仮想アドレス50を用いて、図面に示される態様で、エントリがセグメントテーブル52内にマッチされる。図面において識別される仮想アドレスのコンポーネントと組み合わせて用いられた場合、マッチしたエントリ54は、対応するシステムアドレスを特定する。さらに、マッチしたエントリ54は、対応するセグメントサイズおよび特権を特定する。次に、そのシステムアドレスは、システムメモリ(示された実施形態では、別々にフィルされた264バイトを備える)にマッピングする。示された実施形態は、システム特権を有するスレッドによって、アドレス変換がディセーブルされることを可能にし、この場合、セグメントテーブルは、バイパスされ、すべてのアドレスが低32ビットに丸められる。
(Overview of virtual memory)
The virtual address in the system shown is a 64-bit address constructed by a memory reference and a branch instruction. Virtual addresses are translated segment by segment into a system that is used to access all system memory and IO devices. Each segment varies in size from 2 24 to 2 48 bytes. More specifically, referring to FIG. 5, using
示されたセグメントテーブル52は、スレッド(TPU)ごとに16〜32個のエントリを備える。このテーブルは、ハードウェア、ソフトウェアおよび/またはこれらの組み合わせで実現されてもよい。モジュール5によって表される、組込みSoCのインプリメンテーションでは、テーブルは、ハードウェアで実現され、メモリ内の別個のエントリがスレッドごとに提供されている(例えば、スレッドごとに別個のテーブル)。セグメントは、同じシステムアドレスを示すスレッドごとに別個のエントリをセットアップすることによって2つ以上のスレッド間で共有され得る。この目的で、他のハードウェアまたはソフトウェア構造が代替的または追加的に用いられてもよい。
The segment table 52 shown comprises 16 to 32 entries per thread (TPU). This table may be implemented in hardware, software and / or combinations thereof. In the embedded SoC implementation represented by
(キャッシュメモリシステムの概観)
上述のように、レベル1キャッシュは、別個のレベル1命令キャッシュ22およびlレベル1データキャッシュ24として組織され、命令およびデータ帯域幅を最大化する。
(Overview of cache memory system)
As described above, the level 1 cache is organized as a separate level 1
図6を参照して、オンチップL2キャッシュ26aは、タグおよびデータ部分で構成される。示された実施形態では、これは、サイズが5.1Myte、128ブロック、16ウェイ連想である。各ブロックは、128バイトデータまたは16個の拡張L2タグを格納し、拡張L2タグに格納するために64kbyteが提供される。タグ内のタグモードビットは、データ部分が拡張L2キャッシュの16個のタグで構成されることを示す。
Referring to FIG. 6, the on-
拡張L2キャッシュ26bは、上述のように、DDR DRAMベースであるが、他のメモリタイプも用いられ得る。示された実施形態では、1gbyteまでのサイズ、256ウェイ連想であり、16kバイトページおよび128バイトサブページを有する。5mbyteL2キャッシュ26aおよび1gbyteL2拡張キャッシュ26bのコンフィギュレーションの場合、L2拡張を完全に記述するためにオンチップL2キャッシュの12%が必要とされるにすぎない。より大きいオンチップL2またはより小さいL2拡張サイズの場合、このパーセンテージはより低い。L2キャッシュ(オンチップおよび拡張)のアグリゲーションは、分散SEPメモリシステムを構成する。
The
示された実施形態では、L1命令キャッシュ22およびL1データキャッシュ24の両方が8ウェイ連想であり、32kbyteおよび128バイトブロックを有する。図面に示されるように、両方のレベル1キャッシュはレベル2キャッシュの固有のサブセットである。レベル2キャッシュは、オンチップおよびオフチップ拡張L2キャッシュで構成される。
In the illustrated embodiment, both
図7は、L2キャッシュ26aと、示された例では、L2キャッシュ26aにおいてタグルックアップを実行し、L2キャッシュアドレス78とマッチするデータブロック70を識別するために用いられるロジックとを示す。示された実施形態では、ロジックは、16個のキャッシュタグアレイグル−プ72a〜72pと、対応するタグ比較素子74a〜74pと、対応するデータアレイグループ76a〜76pとを備える。示されるように、これらは結合され、L2キャッシュアドレス78をグループタグアレイ72a〜72pに対してマッチさせ、さらに示されるように、示されたデータアレイグループ76a〜76pによって識別されたデータブロック70を選択する。
FIG. 7 shows the
キャッシュタグアレイグループ72a〜72p、タグ比較素子74a〜74p、および対応するデータアレイグループ76a〜76pは、ハードウェア、ソフトウェアおよび/またはこれらの組み合わせで実現され得る。モジュール5によって表される組込みSoCのインプリメンテーションでは、これらは、図19に示されるように実現される。図19は、32x256のシングルポートメモリセルに組み込まれたキャッシュタグアレイグループ72a〜72p、および128x256のシングルポートメモリセルに組み込まれたデータアレイグループ76a〜76pを示し、これらすべては、示されるように、現在の状態コントロールロジック190と結合されている。示されるように、この素子は、次に、L2キャッシュユニット26aの動作を容易にする状態マシン192に本明細書中で一貫した態様で、ならびに、L1命令およびデータキャッシュ22、24からのリクエストをバッファするリクエストキュー192に結合される。
Cache
論理素子190は、L2キャッシュのオフチップ部分26bにインターフェースを提供するDDR DRAMコントロールインターフェース26cとさらに結合される。これは、同様に、少数の例を挙げると、液晶ディスプレイ(LCD)、オーディオ出力インターフェース、ビデオ入力インターフェースビデオ出力インターフェース、ネットワークインターフェース(無線、有線等)、記憶装置インターフェース、ペリフェラルインターフェース(例えば、USB,USB2)、バスインターフェース(PCI、ATA)といったAMBAと互換性のあるコンポーネントにインターフェースを提供するAMBAインターフェース26dに結合される。DDR DRAMインターフェース26cおよびAMBAインターフェース26dは、示されるように、同様に、L2データキャッシュバス198によって、L1命令およびデータキャッシュへのインターフェース196に結合される。
The
図8は、同様に、示された実施形態で用いられ、L2拡張キャッシュ26bにおいてタグルックアップを実行し、かつ、指定されたアドレス78とマッチするデータブロック80を識別するロジックを示す。示された実施形態では、このロジックは、データアレイグループ82a〜82pと、対応するタグ比較素子84a〜84pと、タグラッチ86とを備える。これらは、示されるように結合され、示されるように、L2キャッシュアドレス78をデータアレイグループ72a〜72pに対してマッチさせ、かつ、さらに示されるように、アドレス78の対応する部分とマッチするグループの1つからタグを選択する。マッチングタグからの物理ページ番号は、示されるように、アドレス78のインデックス部分と組み合わせられ、オフチップメモリ26bにおいてデータブロック80を識別する。
FIG. 8 similarly illustrates the logic used in the illustrated embodiment to perform a tag lookup in the L2 extended
データアレイグループ82a〜82pおよびタグ比較素子84a〜84pは、ハードウェア、ソフトウェアおよび/またはこれらの組み合わせで実現され得る。モジュール5によって表された組込みSoCのインプリメンテーションにおいて、これらは、必要なルックアップおよびタグ比較機能を提供するゲートおよび専用メモリで実現される。この目的で、他のハードウェアまたはソフトウェア構造が代替的または追加的に用いられてもよい。
以下に記載されるのは、示された実施形態のL2およびL2Eキャッシュ動作を示す擬似コードである。 Described below is pseudo code illustrating the L2 and L2E cache operations of the illustrated embodiment.
図9を参照して、示された実施形態は、6個までのアクティブスレッドをサポートする6個のTPUを有する。各TPU10〜20は、図9に示されるように、汎用レジスタと述語レジスタとコントロールレジスタとを備える。システムおよびアプリケーション特権レベルの両方のスレッドは、同じ状態を含むが、システム特権レベルにおいて(キーおよびそれぞれのスティプリングパターンによって示されるように)いくつかのスレッド状態情報のみが見られる。レジスタに加えて、各TPUは、ペンディングメモリイベントテーブル、イベントキュー、およびイベント−スレッドルックアップテーブルをさらに備えるが、これらのいずれも図9には示されていない。
Referring to FIG. 9, the illustrated embodiment has six TPUs that support up to six active threads. As shown in FIG. 9, each TPU 10-20 includes a general-purpose register, a predicate register, and a control register. Both system and application privilege level threads contain the same state, but only some thread state information is seen at the system privilege level (as indicated by the key and the respective stippling pattern). In addition to the registers, each TPU further comprises a pending memory event table, an event queue, and an event-thread lookup table, none of which are shown in FIG.
実施形態によるが、48(以下)〜128(以上)個(示された実施形態は128個を有する)の汎用レジスタと、24(以下)〜64(以上)個(示された実施形態は32個を有する)の述語レジスタと、6(以下)〜256(以上)個(示された実施形態は8個を有する)のアクティブスレッドと、16(以下)〜512(以上)個のエントリ(示された実施形態は16個のエントリ)とを有するペンディングメモリイベントテーブルと、スレッドごとの、複数の、好ましくは、少なくとも2個(場合によっては、これより少ない)のペンディングメモリイベントと、256個(以上または以下)のイベントキューと、16(以下)〜256(以上)個のエントリ(示された実施例は32個)を有するイベント−スレッドルックアップテーブルとがあり得る。 Depending on the embodiment, 48 (or less) to 128 (or more) general purpose registers (the illustrated embodiment has 128) and 24 (or less) to 64 (or more) (more than 32 illustrated embodiments). Predicate registers, 6 (below) to 256 (more) active threads (the illustrated embodiment has 8), and 16 (below) to 512 (more) entries (shown). The embodiment has 16 pending entries), multiple, preferably at least 2 (possibly fewer) pending memory events per thread, and 256 ( Event queue with 16 (or less) to 256 (or more) entries (32 in the example shown). There may be a bull.
(汎用レジスタ)
示された実施形態では、各スレッドは、インプリメンテーションによるが、128個までの汎用レジスタを有する。汎用レジスタ3−0(GP[3:0])は、システム特権レベルにおいて見られ、かつ、イベント処理の初期段階において、イベントスタックポインタおよびワーキングレジスタのために利用され得る。
(General-purpose register)
In the illustrated embodiment, each thread has up to 128 general purpose registers, depending on the implementation. General registers 3-0 (GP [3: 0]) are found at the system privilege level and can be used for event stack pointers and working registers in the early stages of event processing.
(プレディケーションレジスタ)
述語レジスタは、汎用SEPプレディケーションメカニズムの一部である。各命令の実行は、リファレンス述語レジスタの値に基づいて条件付である。
(Predication register)
The predicate register is part of the general SEP predication mechanism. Execution of each instruction is conditional based on the value of the reference predicate register.
SEPは、スレッド状態の一部として64個までの1ビット述語レジスタを提供する。 SEP provides up to 64 1-bit predicate registers as part of the thread state.
各述語レジスタは、いわゆる述語を保持し、これは、比較命令を実行する結果に基づいて、1(真(true))にセットされるか、または、0(偽(false))にリセットされる。述語レジスタ3−1(PR「3:1」)は、システム特権レベルにおいて見られ、かつ、イベント処理の初期段階において、ワーキング述語(working predicate)のために利用され得る。述語レジスタ0は、読み出し専用であり、常に1、真と読み出す。これは、実行を無条件にするという命令による。
Each predicate register holds a so-called predicate, which is set to 1 (true) or reset to 0 (false) based on the result of executing the compare instruction. . The predicate register 3-1 (PR “3: 1”) is seen at the system privilege level and can be used for working predicates in the early stages of event processing. The
(コントロールレジスタ)
スレッド状態レジスタ
(Control register)
Thread status register
アプリケーション例外IPApplication exception IP
例外MemアドレスException Mem address
命令Segテーブルポインタ(ISTP)、データSegテーブルポインタ(DSTP)Instruction Seg table pointer (ISTP), Data Seg table pointer (DSTP)
命令またはデータレベル1キャッシュタグポインタ(ICTP、DCTP)Instruction or data level 1 cache tag pointer (ICTP, DCTP)
イベントキューコントロールレジスタEvent queue control register
示された実施形態では、すべてのタイマおよび性能モニタレジスタは、アプリケーション特権でアクセス可能である。
In the illustrated embodiment, all timer and performance monitor registers are accessible with application privileges.
クロックclock
示された実施形態では、各アクティブスレッドは、仮想プロセッサに対応し、かつ、8ビットアクティブスレッド数によって特定される(アクティブスレッド[7:0])モジュール5は、16ビットスレッドID(スレッド[15:0])をサポートし、スレッドの高速のロード(活性化)およびアンロード(不活性化)を可能にする。他の実施形態は、異なったサイズのスレッドIDをサポートし得る。
(スレッド−命令フェッチ抽象化)
上述のように、モジュール5のTPU10〜20は、L1命令キャッシュ22、およびこれらのTPU内でアクティブのスレッドの任意の組み合わせから、各サイクルごとに5つまでの命令を起動するパイプラインコントロールハードウェアを共有する。図10は、機能ユニット30〜38上で実行するためのこれらの命令をフェッチおよびディスパッチするために、モジュール5によって用いられるメカニズムの抽象化である。
In the illustrated embodiment, each active thread corresponds to a virtual processor and is identified by the number of 8-bit active threads (active thread [7: 0]).
(Thread-instruction fetch abstraction)
As mentioned above, the TPUs 10-20 of
この図面に示されるように、各サイクルの間、命令がL1キャッシュ22からフェッチされ、かつ、各それぞれのTPU10〜20と関連付けられた命令キュー10a〜20aに配置される。示された実施形態では、スレッドキュー10a〜20aを等しいレベルに保つという上位目標により、シングルスレッドごとに3〜6つの命令がフェッチされる。他の実施形態では、異なった数の命令がフェッチされてもよいし、および/またはキューをだいたい埋めるために異なった目標がセットされてもよい。フェッチステージの間もまた、モジュール5(および、特に、例えば、上述のイベントハンドリングメカニズム)は、イベント、および対応するスレッドの待ち状態から実行状態への変換を認識する。
As shown in this figure, during each cycle, instructions are fetched from the
ディスパッチステージの間(フェッチおよび実行/リタイアステージと並列して実行する)、1つ以上の実行スレッドの各々からの命令は、そのサイクルのためにそれらのリソースの最良の利用を考慮するラウンドロビンプロトコルに基づいて、機能ユニット30〜38にディスパッチされる。これらの命令は、スレッドの任意の組み合わせからのものであり得る。コンパイラは、例えば、命令セットに提供された「ストップ」フラグを利用して、単一サイクルで起動され得るスレッド内の命令のグループ間の境界を特定する。他の実施形態では、例えば、特定のスレッドを優先するプロトコル、リソースの利用を無視するプロトコル等の他のプロトコルが用いられてもよい。 During the dispatch stage (running in parallel with the fetch and execute / retire stage), instructions from each of one or more execution threads consider the best use of their resources for that cycle Is dispatched to the functional units 30-38. These instructions can be from any combination of threads. The compiler uses, for example, a “stop” flag provided in the instruction set to identify boundaries between groups of instructions in a thread that can be invoked in a single cycle. In other embodiments, other protocols may be used, such as a protocol that prioritizes a specific thread, a protocol that ignores resource usage, and the like.
実行およびリタイア段階の間(フェッチおよびディスパッチステージと並列で実行される)、1つ以上のスレッドから複数の命令が同時に実行される。上述のように、示された実施形態では、5つまでの命令がサイクルごとに、例えば、整数ユニット、浮動ユニット、分岐ユニット、比較ユニット、およびメモリ機能ユニット30〜38によって起動および実行される。他の実施形態では、より多いか、またはより少ない命令が、例えば、機能ユニットの数およびタイプに依存して、およびTPUの数に依存して起動され得る。 During the execution and retirement phases (executed in parallel with the fetch and dispatch stages), multiple instructions are executed simultaneously from one or more threads. As described above, in the illustrated embodiment, up to five instructions are activated and executed every cycle, for example, by the integer unit, floating unit, branch unit, comparison unit, and memory function units 30-38. In other embodiments, more or fewer instructions may be invoked, for example, depending on the number and type of functional units and depending on the number of TPUs.
実行が完了した場合、命令はリタイアされる。その結果は書き込まれ、命令は命令キューからクリアされる。 When execution is complete, the instruction is retired. The result is written and the instruction is cleared from the instruction queue.
他方、命令がブロックした場合、対応するスレッドは、実行状態から待ち状態に変換される。ブロックを引き起こした条件が解決された場合、対応するスレッドのブロックされた命令、および、次に、これに続くすべての命令が再スタートされる。図11は、これを容易にするための、示された実施形態で用いられる3つのポインタのキュー管理メカニズムを示す。 On the other hand, if an instruction blocks, the corresponding thread is converted from an execution state to a wait state. If the condition that caused the block is resolved, the blocked instruction of the corresponding thread and then all subsequent instructions are restarted. FIG. 11 illustrates a three pointer queue management mechanism used in the illustrated embodiment to facilitate this.
この図面を参照して、命令キューおよび3つのポインタのセットがTPU10〜20ごとに維持される。ここで、そのような単一キュー110および112〜116のセットのみが示される。キュー110は、関連したTPU、および、より具体的には、そのTPU内の現在アクティブなスレッドの、フェッチされ、実行し、リタイアした(または無効の)命令を保持する。命令がフェッチされると、これらの命令は、キューの先頭に挿入される。これは、挿入(またはフェッチ)ポインタ112によって指定される。実行するための次の命令が抽出(または発行)ポインタ114によって識別される。コミットポインタ116は、実行がコミットされた最後の命令を識別する。命令がブロックされるか、そうでない場合、中止された場合、コミットポインタ116はロールバックされ、コミットポインタと抽出ポインタ間の命令を実行パイプラインに押し込む。逆に、分岐が用いられた場合、全部のキューがフラッシュされ、ポインタがリセットする。
Referring to this figure, an instruction queue and a set of three pointers are maintained for each TPU 10-20. Only such a set of
キュー110は円として示されるが、他のコンフィギュレーションが利用されてもよいことが分かる。図11に示されるキューイングメカニズムは、例えば、図12に示されるように実現され得る。命令は、デュアルポートメモリ120または、あるいは、一連のレジスタ(図示せず)に格納される。各々の新規にフェッチされた命令が格納される書き込みアドレスは、フェッチコマンド(例えば、パイプラインコントロールによって発行される)に応答して、メモリ120の連続的アドレスを生成するフェッチポインタロジック122によって供給される。発行された命令は、ここでは下部に示された他のポートから取得される。各命令が取得される読み出しアドレスが発行/コミットポインタロジック124によって供給される。そのロジックは、コミットおよび発行コマンド(例えば、パイプラインコントロールによって発行される)に応答し、連続的アドレスを、適宜、生成および/またはリセットする。
(プロセッサモジュールインプリメンテーション)
図13は、特に、TPU10〜20を実現するためのロジックを含む図1のプロセッサモジュール5のSoCインプリメンテーションを示す。図1におけるように、図13のインプリメンテーションは、上述のように構成され動作するL1およびL2キャッシュ22〜26を備える。同様に、このインプリメンテーションは、整数ユニット、浮動小数点ユニットおよび比較ユニットをそれぞれ備える機能ユニット30〜34を備える。さらなる機能ユニットが代替的または追加的に提供され得る。IPU10〜20を実現するためのロジックは、パイプラインコントロール130、分岐ユニット38、メモリユニット36、レジスタファイル136、およびロード−格納バッファ138を備える。図13に示されるコンポーネントは、示されるように、コントロールおよび情報転送するために相互接続される。破線は主要コントロールを示し、実線は述語値コントロールを示し、太い実線は64ビットデータバスを同定し、さらに太い線は128ビットデータバスを同定する。図13は本発明によるプロセッサモジュール5のあるインプリメンテーションを表し、他のインプリメンテーションが実現されてもよいことが分かる。
(パイプラインコントロールユニット)
示された実施形態では、パイプラインコントロール130は、図11〜図12との関連ですでに述べられたスレッドごとのキューを含む。スレッドごとに12、15または18個の命令がパラメータ化され得る。コントロール130は、これらのキューからラウンドロビンベースで命令をピックアップする(しかしながら、上述のように、これは、他のベースでも実行され得る。これは、レジスタファイル136(これは、命令のソースおよび宛先レジスタを提供するリソースである)、および機能ユニット30〜38へのアクセスのシーケンスをコントロールする。パイプラインコントロール130は、スレッドごとのキューからの基本命令クラスをデコードし、命令を機能ユニット30〜38にディスパッチする。上述のように、1つ以上のスレッドからの複数の命令は、同じサイクルのそれらの機能ユニットによって実行するためにスケジューリングされ得る。コントロール130は、さらに、スレッドごとの構成キューを空にすること、分岐ユニット38にシグナリングすること、および、可能である場合、例えば、サイクルごとのベースで機能ユニットをアイドリングしてユーザの消費を低減することを担う。
Although
(Processor module implementation)
FIG. 13 shows in particular the SoC implementation of the
(Pipeline control unit)
In the illustrated embodiment, the
図14は、パイプラインコントロールユニット130のブロック図である。ユニットは、スレッドクラスキューのコントロールロジック140、スレッドクラス(またはスレッドごとの)キュー142それ自体、命令ディスパッチ144、ロングワードデコードユニット146、および機能ユニットキュー148a〜148eを備え、これらは相互に(そして、モジュール5の他のコンポーネントに接続される。スレッドクラス(スレッドごとの)キューは、図11〜12との関連ですでに述べられたように構成され動作する。スレッドクラスキューコントロールロジック140は、これらのキュー142の入力側をコントロールし、従って、図11〜図12に示され、かつすでに述べられた挿入ポインタ機能を提供する。コントロールロジック140は、さらに、ユニットキュー148a〜148eの入力側をコントロールすること、および分岐ユニット38とインターフェースして命令フェッチをコントロールすることを担う。後者に関して、ロジック140は、(例えば、ほとんどの命令をリタイアするTPUを補償するために)上述の態様で命令フェッチのバランシングを担う。
FIG. 14 is a block diagram of the
命令ディスパッチ144は、スレッドクラスキューの各々において利用可能な命令のスケジューリングをサイクルごとに評価および決定する。上述のように、示された実施形態では、命令をより迅速にリタイアするキューを考慮して、キューがラウンドロビンベースでハンドリングされる。命令ディスパッチ144もまた、スレッドクラスキュー142の出力側をコントロールする。これに関して、命令ディスパッチ144は、図11〜図12との関連ですでに述べられた抽出およびコミットポインタを管理し、これは、命令がリタイアされたコミットポインタを更新すること、および命令が中止された場合(例えば、スレッドスイッチまたは例外のため)、そのポインタをロールバックすることを包含する。
ロングワードデコードユニット146は、L1命令キャッシュ22から入来する命令ロングワードをデコードする。示された実施形態では、そのような各ロングワードは、命令へとデコードされる。これは、1つまたは2つのロングワードをデコードするためにパラメータ化され得、それぞれ、3つの命令および6つの命令にデコードされる。デコードユニット146は、さらに、各命令の命令クラスをデコードすることを担う。
The long
ユニットキュー148a〜148eは、機能ユニット30〜38によって実行されるべき実際の命令をキューに入れる。各キューは、スレッド単位ベースで組織され、クラスキューとの一致が保たれる。ユニットキューは、上述のように、コントロールの目的で、スレッドクラスキューコントロール140および命令ディスパッチ144に結合される。キュー148a〜148eからの命令は、対応するパイプライン150a〜150bに転送され、機能ユニットそれ自体30〜38にルーティングされる。命令は、さらに、レジスタファイルパイプライン152に渡される。
図15は、例えば、148a等の個別ユニットキューのブロック図である。これは、TPUごとに1つの命令キュー154a〜154eを備える。これらは、コントロールの目的で、スレッドクラスキューコントロール140(tcqueue_ctlとラベル付けされる)および命令ディスパッチ144(idispatchとラベル付けされる)に結合される。これらは、さらに、示されるように、命令入力のロングワードデコードユニット146(lwdecodeとラベル付けされる)およびスレッド選択ユニット156に結合される。このユニットは、示されるように、命令ディスパッチ144によって提供されるコントロール信号に基づいて、スレッド選択をコントロールする。ユニット156からの出力は、対応するパイプライン150a〜150e、およびレジスタファイルパイプライン152にルーティングされる。
FIG. 15 is a block diagram of an individual unit queue such as 148a. This comprises one
図14を再び参照して、整数ユニットパイプライン150aおよび浮動小数点ユニットパイプライン150bは、それぞれの機能ユニットの適切な命令フィールドをデコードする。各パイプラインは、さらに、それぞれの機能ユニットへのコマンドの時間を測定する。さらに、各パイプライン150a、150bは、分岐または中止に基づいて、それぞれのパイプラインに押し込み(squashing)を適用する。さらに、各々は、パワーダウン信号が1つのサイクルの間に用いられない場合、これをそれぞれの機能ユニットに印加する。示された比較ユニットパイプライン150c、分岐ユニットパイプライン150dおよびメモリユニットパイプライン150eは、そのそれぞれの機能ユニット、比較ユニット34、分岐ユニット38、およびメモリユニット36に同様の機能を提供する。レジスタファイルパイプライン150もまた、同様に、レジスタファイル136に対して同様の機能を提供する。
Referring again to FIG. 14,
ここで、図13に戻って、示された分岐ユニット38は、命令アドレスの生成およびアドレス変換、ならびに命令フェッチを担う。さらに、これは、スレッド処理ユニット10〜20の状態を維持する。図16は、分岐ユニット38のブロック図である。これは、図面に示されるように、相互に(および、モジュール5の他のコンポーネントに)接続されるコントロールロジック160、スレッド状態記憶装置162a〜162e、スレッド選択164、アドレス加算器166、セグメント変換CAM(content addressable memory)168を備える。
Returning now to FIG. 13, the
コントロールロジック160は、パイプラインコントロール130からのコマンド信号に基づいてユニット38を駆動する。これは、示されるように、さらに、入力として、命令キャッシュ22状態およびL2キャッシュ26アクノリッジメントを取得する。ロジック160は、示されるように、スレッドスイッチをパイプラインコントロール130に、かつ、コマンドを命令キャッシュ22およびL2キャッシュに出力する。スレッド状態記憶装置162a〜162eは、それぞれのTPU10〜20の各々のスレッド状態を格納する。これらのTPUの各々に、図3に示され、すでに述べられた汎用レジスタ、述語レジスタ、およびコントロールレジスタが維持される。
The
スレッド状態記憶装置から取得されたアドレス情報は、示されるように、スレッドセレクタにルーティングされる。このセレクタは、その情報からスレッドアドレスを選択し、かつ、コントロール160からのコントロール信号(示される)に基づいてアドレス演算が実行され得る。アドレス加算器166は、示されるように、スレッドセレクタ164、およびレジスタファイル(register sourceとラベル付けされる)によって供給されるアドレス指定情報の出力に基づいて、選択されたアドレスをインクリメントするか、または、分岐アドレス計算を実行する。さらに、アドレス加算器166は、分岐結果を出力する。新規に計算されたアドレスは、上述のように、図5との関連ですでに述べられたように動作し、次の命令フェッチと共に用いるために変換された命令キャッシュアドレスを生成するセグメント変換メモリ168にルーティングされる。
(機能ユニット)
図13に戻って、メモリユニット36は、データキャッシュ24アドレス生成およびアドレス変換を含む、メモリ参照命令の実行を担う。さらに、ユニット36は、上述のように、ペンディング(メモリ)イベントテーブル(PET)50を維持する。図17は、メモリユニット36のブロック図である。これは、図面に示されるように、相互に(および、モジュール5の他のコンポーネントに)接続される、コントロールロジック170、アドレス加算器172、およびセグメント変換CAM174を備える。
The address information obtained from the thread state store is routed to the thread selector as shown. The selector selects a thread address from that information and can perform address operations based on a control signal (shown) from the
(Functional unit)
Returning to FIG. 13, the
コントロールロジック170は、パイプラインコントロール130からのコマンド信号に基づいて、ユニット36を駆動する。これは、示されるように、さらに、入力として、データキャッシュ22状態およびL2キャッシュ26アクノリッジメントを取得する。ロジック170は、示されるように、スレッドスイッチをパイプラインコントロール130および分岐ユニット38に、かつコマンドをデータキャッシュ24およびL2キャッシュに出力する。アドレス加算器172は、レジスタファイル136から提供されたアドレス指定情報をインクリメントするか、または必要なアドレス計算を実行する。新規に計算されたアドレスは、セグメント変換メモリ174にルーティングされる。このメモリは、図5との関連ですでに述べられたように動作し、データアクセスと共に用いるための変換命令キャッシュアドレスを生成する。図面には示されないが、ユニット36もまた、上述のように、PETを備える。
The
図18は、L1命令キャッシュ22またはL2データキャッシュ24のいずれかを実現するキャッシュユニットのブロック図である。このユニットは、データアレイとして機能する16個の128x256バイトシングルポートメモリセル180a〜180pを、タグアレイとして機能する、対応する16個の32x56バイトデュアルポートメモリセル182a〜182pと一緒に備える。これらは、示されるように、L1およびL2アドレスおよびデータバスに結合される。コントロールロジック184および186は、メモリセルと、L1キャッシュコントロールおよびL2キャッシュコントロールとに結合される。
FIG. 18 is a block diagram of a cache unit that implements either the
再び図13に戻って、レジスタファイル136は、機能ユニット30〜38によって実行される命令によってアクセスされるすべてのソースおよび宛先レジスタのリソースとして機能する。このレジスタファイルは、図20に示されるように実現される。ここに示されるように、遅延およびワイヤオーバーヘッドを低減するために、ユニット136は、機能ユニット30〜38ごとに別々のレジスタファイルに分解される。示された実施形態では、各インスタンスは、TPUの各々につき48個の64ビットレジスタを提供する。他の実施形態は、TPUに割り当てられたレジスタの数、TPUの数およびレジスタのサイズにより様々であり得る。
Returning again to FIG. 13,
各インスタンス200a〜200eは、各インスタンスの上部に入る矢印によって示されるように、5個のワイヤポートを有し、これらのポートを介して、機能ユニット30〜38の各々が、出力データを同時に書き込み得る(これにより、インスタンスが均一なデータを保持することを保証する)。各々は、各インスタンスの下部から発する矢印によって示されるように、異なった数の読み出しポートを提供する。このポートを介してそれぞれの機能ユニットがデータを取得する。従って、示されるように、整数ユニット30、浮動小数点ユニット32、およびメモリユニットと関連付けられたインスタンスは、すべて、3つの読み出しポートを有し、比較ユニット34と関連付けられたインスタンスは、2つの読み出しポートを有し、分岐ユニット38と関連付けられたインスタンスは、1つのポートを有する。
Each
レジスタファイルインスタンス200〜200eは、各サイクルのシングルスレッドについてすべてのポートが読み出されることによって最適化され得る。さらに、記憶ビットは、ポートアクセスのワイヤ下で折りたたまれ得る。 Register file instances 200-200e may be optimized by reading all ports for a single thread in each cycle. Furthermore, the storage bit can be folded under the port access wire.
図21および図22は、それぞれ、整数ユニット30および比較ユニット34のブロック図である。図23Aおよび図23Bは、それぞれ、浮動小数点ユニット32、および本明細書中で用いられる乗算加算融合ユニット(fused multiply−add unit)のブロック図である。これらのユニットの構成および動作は、図面で提供されるコンポーネント、相互接続、および表示から明らかである。
(消費者−生産者メモリ)
従来技術のマルチプロセッサシステムでは、スレッドまたはプロセッサ間でデータに基づく処理の流れを実現するための同期オーバーヘッドおよびプログラミングの困難性が非常に高い。プロセッサモジュール5は、あるスレッドが、データが利用可能であることを示す場合に、他のスレッドは、データが利用可能である状態で待ち、かつ、トランスペアレントにウェイクアップすることを可能にして、上述のことが容易に行われることを可能にするメモリ命令を提供する。このようなソフトウェアトランスペアレントの消費者−生産者メモリ動作は、より高性能の細粒度スレッドレベルと、効率的にデータが配向された、消費者−生産者プログラミングスタイルとの並列処理を可能にする。
21 and 22 are block diagrams of the
(Consumer-Producer memory)
Prior art multiprocessor systems have very high synchronization overhead and programming difficulties to implement a data-based processing flow between threads or processors. The
示された実施形態は、「フィル」メモリ命令を提供する。これは、選択されたメモリロケーションにデータをロードし、そのロケーションにある状態、すなわち、「フル」状態を関連付けるためのデータ生産者であるスレッドによって用いられる。命令が実行されるときにロケーションがすでにその状態である場合、実行がシグナリングされる。 The illustrated embodiment provides “fill” memory instructions. This is used by a thread that is a data producer to load data into a selected memory location and associate a state at that location, ie, a “full” state. If the location is already in that state when the instruction is executed, execution is signaled.
この実施形態は、さらに、「エンプティ」命令を提供する。これは、選択されたロケーションからデータを取得するためにデータ消費者によって用いられる。ロケーションがフル状態と関連付けられた場合、データは、そこから読み出され(例えば、指定されたレジスタに)、かつ、命令は、そのロケーションが「エンプティ」状態と関連付けられるようにする。逆に、エンプティ命令が実行されている時点に、ロケーションがフル状態と関連付けられていない場合、命令は、それを実行したスレッドを一時的にアイドル状態(または、これに代わる実施形態では、アクティブ、非実行状態)に遷移させ、これが一旦そのように関連付けられると、これをアクティブ、実行状態に再び遷移させ(そして、エンプティ命令を実行して完了する)。エンプティ命令を用いることによって、低オーバーヘッドおよびソフトウェアトランスペアレンシーでデータが利用可能であるときにスレッドを実行することが可能である。 This embodiment further provides an “empty” instruction. This is used by the data consumer to obtain data from the selected location. If a location is associated with a full state, data is read from it (eg, in a designated register) and the instruction causes the location to be associated with an “empty” state. Conversely, if the location is not associated with a full state at the time that the empty instruction is being executed, the instruction may temporarily idle the thread that executed it (or active, in alternative embodiments, Transition to the non-execution state and once it is so associated, it transitions back to the active, execution state (and completes executing the empty instruction). By using empty instructions, it is possible to execute a thread when data is available with low overhead and software transparency.
示された実施形態では、フィルおよびエンプティオペレーションの対象であるメモリロケーションに関するステータス情報を格納するペンディング(メモリ)イベントテーブル(PET)50がある。これは、ロケーションのアドレス、それぞれのフルまたはエンプティ状態、およびこれらのロケーションのデータの「消費者(consumer)」、すなわち、エンプティ命令を実行し、ロケーションが埋められるのを待っているスレッドの識別情報を備える。このペンディングイベントテーブルは、例えば、例外(例えば、連続的フィル命令が特定のアドレスに実行され、介入するエンプティ命令がない場合等)の原因をシグナリングおよびトラッキングする際に有用であり得る、データの生産者の識別情報をさらに備え得る。 In the illustrated embodiment, there is a pending (memory) event table (PET) 50 that stores status information about memory locations that are the subject of fill and empty operations. This is the location address, the respective full or empty state, and the "consumer" of the data at these locations, i.e. the identity of the thread executing the empty instruction and waiting for the location to be filled Is provided. This pending event table may be useful, for example, in producing data that may be useful in signaling and tracking the cause of an exception (eg, when a continuous fill instruction is executed at a specific address and there is no empty instruction to intervene). It may further comprise identification information of the person.
それぞれのロケーションのデータは、PET50に格納されず、フィルおよび/またはエンプティ命令の対象でないデータと同様に、むしろ、キャッシュおよび/またはメモリシステムそれ自体に残る。他の実施形態では、ステータス情報は、メモリシステム内で、それが関係するロケーションと並んでおよび/または別個のテーブル、リンクリスト等に格納される。
The data at each location is not stored in the
従って、例えば、エンプティ命令が所与のメモリロケーション上で実行される場合、PETがチェックされ、これが、同じロケーションが現在フル状態であることを示すエントリを有するかどうかを決定する。そのエントリを有する場合、フル状態である場合、そのエントリは、データをメモリロケーションからエンプティ命令によって指定されたレジスタに移動させて、エンプティに変更され、読み出しが行われる。 Thus, for example, if an empty instruction is executed on a given memory location, the PET is checked to determine if it has an entry indicating that the same location is currently full. If it has that entry, if it is full, the entry is changed to empty, moving data from the memory location to the register specified by the empty instruction, and is read.
他方、エンプティ命令が実行されているときに所与のメモリロケーションのPeTにエントリがない場合(または、任意のそのようなエントリが、ロケーションは現在エンプティであることを示す場合)、PETにエントリが生成(または更新)されて、所与のロケーションがエンプティであることを示し、かつ、そのエンプティ命令を実行したスレッドが、フィル命令によってそのロケーションに次に格納される任意のデータの消費者であることを示す。 On the other hand, if there is no entry in the PeT for a given memory location when the empty instruction is being executed (or if any such entry indicates that the location is currently empty), there is an entry in the PET. Generated (or updated) to indicate that a given location is empty and the thread that executed the empty instruction is a consumer of any data that is then stored at that location by the fill instruction It shows that.
フィル命令が、次に(おそらく、別のスレッドによって)実行された場合、PETがチェックされて、その同じロケーションが現在エンプティ状態であることを示すエントリを有するかどうかを決定する。このようなエントリが発見されると、その状態は、フルに変更され、そのエントリにおいて識別された消費者スレッドに通知をルーティングするためにイベント送達メカニズム44(図4)が用いられる。そのスレッドがアクティブであり、TPU内で待ち状態である場合、通知はTPUに進み、スレッドがアクティブ、実行状態に入り、そのエンプティ命令を再実行する(今回、完了する)(なぜなら、メモリロケーションは、ここで、フル状態だからである)。そのスレッドがアイドル状態である場合、通知は、システムスレッドに進み(現在実行中のどのIPUにおいても)、これは、スレッドが実行中のアクティブ状態のTPUにロードされるようにし、これにより、エンプティ命令は、再実行され得る。 When the fill instruction is next executed (possibly by another thread), the PET is checked to determine if it has an entry indicating that the same location is currently empty. When such an entry is found, its state is changed to full and the event delivery mechanism 44 (FIG. 4) is used to route the notification to the consumer thread identified in that entry. If the thread is active and is waiting in the TPU, the notification goes to the TPU, the thread enters the active, execution state, and re-executes its empty instruction (this time complete) (because the memory location is Because it ’s full here.) If the thread is idle, notification goes to the system thread (in any currently executing IPU), which causes the thread to be loaded into the active TPU that is running, thereby The instruction can be re-executed.
示された実施形態では、消費者/生産者のようなメモリ動作のための、PETのこの使用は、例えば、フィルおよびエンプティ等の選択されたメモリ命令に関してのみ行われ、より一般的なロードおよびストアメモリ命令では行われない。従って、例えば、現在、エンプティ命令の対象であるメモリロケーションに対してロード命令が実行された場合であっても、そのエンプティ命令を実行したスレッドへの通知は行われず、これにより、命令は再実行され得る。他の実施形態は、この点について異なり得る。 In the illustrated embodiment, this use of PET for memory operations such as consumers / producers is done only with respect to selected memory instructions such as fill and empty, and more general loading and Not done with store memory instructions. Thus, for example, even when a load instruction is currently executed for a memory location that is the target of an empty instruction, the thread that executed the empty instruction is not notified, and the instruction is re-executed. Can be done. Other embodiments may differ in this regard.
図24Aは、3つの相互依存するスレッド230、232および234を示す。これらのスレッド間の同期化およびデータ変換は、本発明によるフィルおよびエンプティ命令によって容易になり得る。例えば、スレッド230は、MPEG2多重分離スレッド230であり、例えば、チューナ、ストリーミングソース等の、例えば、MPEG2ソース236から取得されたMPEG2の多重分離を担う。例を続けるために、TPU10についてアクティブ、実行状態であると想定される。スレッド232は、ビデオデコーディングステップ1スレッドであり、多重分離されたMPEG2信号からのビデオ信号をデコードする第1ステージを担う。TPUについてアクティブ、実行状態であると想定される。スレッド234は、ビデオデコーディングステップ2スレッドであり、LCDインターフェース238または他のデバイスを介して出力するために、多重分離したMPEG2信号からビデオ信号をデコードする第2ステージを担う。TPU14についてアクティブ、実行状態であると想定される。
FIG. 24A shows three
ソース236からのデータストリーミングをリアルタイムで収容するために、スレッド230〜234の各々は、そのアップストリームソースによって提供されたデータを連続的に処理し、従って、他のスレッドと並列でこれを行う。図24Bは、同期を保証し、かつスレッド間のデータ転送を容易にする態様で、これを容易にするフィルおよびエンプティ命令の使用を示す。図面を参照して、矢印240a〜240gは、スレッド間、特に、1つのスレッドによって書き込み(埋められる)、および別のスレッドによって読み出し(空にされる)されるデータロケーション間のフィル依存状態(fill dependencies)を示す。従って、スレッド230は、アドレスA0に予定されたデータを処理する一方で、スレッド232は、そのロケーションに向けられるエンプティ命令を実行し、スレッド234は、(スレッド232が最終的にフィル)アドレスB0に向けられたエンプティ命令を実行する。エンプティ命令の結果、スレッド232は、ロケーションA0のフィルの完了を待っている間、待ち状態(例えば、アクティブ、非実行、またはアイドル)に入り、スレッド234は、ロケーションB0のフィルの完了を待っている間、待ち状態に入る。
In order to accommodate data streaming from the
A0のスレッド230のフィルが完了すると、そのスレッドがA0からのデータを処理することが可能になり、その結果が、フィル命令を介してB0に向けられる。スレッド234は、待ち状態に留まり、依然として、そのフィルの完了を待っている。その間、スレッド230は、アドレスA1に向けられたデータの処理を開始し、スレッド232は、エンプティ命令を実行し、A1のフィルの完了を待っている間、スレッドを待ち状態に置く。
When the fill of the
スレッド232がB0のフィル要求を実行する場合、スレッド234のエンプティが完了して、スレッドがB0からのデータを処理することを可能にし、結果がC0に向けられ、ここでTVビュワーに表示するためにLCDインターフェース(図示せず)によって読み出される。3つのスレッド230、232、234は処理を継続し、MPEG2ストリーム全体の処理が完了するまで、フィルおよびエンプティ命令をこの態様で(図面に示されるように)実行する。
If
フィルおよびエンプティ命令は、その命令フォーマットを精査することによってさらに理解され得る。
(エンプティ)
フォーマット:ps EMPTY cache threads dreg,breg,ireg{,stop}
説明:エンプティは、メモリシステムに命令して、実効アドレスの状態をチェックさせる。状態がフルである場合、エンプティ命令は、その状態をエンプティに変更し、値をdregにロードする。状態がすでにエンプティである場合、命令は、その命令がフルになるまで待ち、待ち挙動は、スレッドフィールドによって表される。
(オペランドおよびフィールド)
ps 述語ソースレジスタは、命令が実行されているかどうかを特定する。真(true)である場合、命令が実行され、そうでなく偽(false)である場合、命令は実行されていない(副次的影響なし)
stop 0 命令グループがこの命令によって表現されていないことを表す。
Fill and empty instructions can be further understood by reviewing the instruction format.
(Empty)
Format: ps EMPTY cache threads dreg, breg, ireg {, stop}
Description: Empty instructs the memory system to check the status of the effective address. If the state is full, the empty instruction changes the state to empty and loads the value into dreg. If the state is already empty, the instruction waits until the instruction is full and the wait behavior is represented by the thread field.
(Operand and field)
The ps predicate source register specifies whether the instruction is being executed. If true, the instruction has been executed; otherwise, if it is false, the instruction has not been executed (no side effects)
stop 0 Indicates that the instruction group is not represented by this instruction.
1 命令グループが、この命令によって表現されていることを表す。
thread 0 無条件スレッドスイッチなし
1 無条件スレッドスイッチ
2 ストール時(スレッドの実行をブロック)条件付スレッドスイッチ
3 リザーブ
scache 0 再利用キャッシュヒントでのtbd
1 再利用キャッシュヒントでの読み出し/書き込み
2 再利用なしのキャッシュヒントでtbd
3 再利用なしのキャッシュヒントでの読み出し/書き込み
im 0 アドレス計算用のインデックスレジスタ(ireg)を表す
1 アドレス計算用のdispを表す
ireg 命令のインデックスレジスタを表す
breg 命令のベースレジスタを表す
disp メモリ参照命令用の2の補数の変位定数(8ビット)を表す
dreg 命令の宛先レジスタを表す
(フィル)
フォーマット:ps FILL cache threads s1reg,breg,ireg{,stop}
説明:レジスタs1regは、実効アドレスでメモリ内のワードに書き込まれる。実効アドレスは、im(即時記憶)フィールドに基づいて、breg(ベースレジスタ)と、ireg(インデックスレジスタ)またはdisp(変位)とを加算することによって計算される。実効アドレスの状態は、フルに変更される。状態がすでにフルである場合、実行がシグナリングされる。
(オペランドおよびフィールド)
ps 述語ソースレジスタは、命令が実行されているかどうかを表す。真である場合、命令が実行され、そうでなく偽である場合、命令は実行されていない(副次的影響なし)
stop 0 命令グループがこの命令によって表現されていないことを表す。
1 Indicates that an instruction group is represented by this instruction.
1 Unconditional thread switch
2 Conditional thread switch at stall (blocks thread execution)
3
1 Read / write with reuse cache hint
2 tbd with a cache hint without reuse
3 Read /
1 represents the index register of the ireg instruction that represents the disp for address calculation. Disp represents the base register of the instruction.
Format: ps FILL cache threads s1reg, breg, ireg {, stop}
Description: Register s1reg is written to a word in memory with an effective address. The effective address is calculated by adding breg (base register) and ireg (index register) or disp (displacement) based on the im (immediate storage) field. The effective address state is changed to full. If the state is already full, execution is signaled.
(Operand and field)
The ps predicate source register indicates whether the instruction is being executed. If true, the instruction is executed; otherwise, it is not executed (no side effects)
stop 0 Indicates that the instruction group is not represented by this instruction.
1 命令グループが、この命令によって表現されていることを表す。
thread 0 無条件スレッドスイッチなし
1 無条件スレッドスイッチ
2 ストール時(スレッドの実行をブロック)条件付スレッドスイッチ
3 リザーブ
scache 0 再利用キャッシュヒントでのtbd
1 再利用キャッシュヒントでの読み出し/書き込み
2 再利用なしのキャッシュヒントでのtbd
3 再利用なしのキャッシュヒントでの読み出し/書き込み
im 0 アドレス計算用のインデックスレジスタ(ireg)を特定
1 アドレス計算用のdispを特定
ireg 命令のインデックスレジスタを特定
breg 命令のベースレジスタを特定
disp メモリ参照命令用の2の補数の変位定数(8ビット)を特定
dreg 命令の宛先レジスタを特定
(ソフトウェアイベント)
ハードウェアおよびソフトウェアイベントの処理は、それらの命令フォーマットを精査することによって、より完全に理解される。
(イベント)
フォーマット:psEVENT s1reg{,stop}
説明:イベント命令は、実行スレッドのイベントキューをポーリングする。イベントが存在する場合、命令は、例外状態レジスタにロードされたイベント状態で完了する。イベントがイベントキューに存在しない場合、スレッドはアイドル状態に遷移する。
(オペランドおよびフィールド)
ps 述語ソースレジスタは、命令が実行されているかどうかを特定する。真である場合、命令が実行され、そうでなく偽である場合、命令は実行されていない(副次的影響なし)
stop 0 命令グループがこの命令によって表現されていないことを表す。
1 Indicates that an instruction group is represented by this instruction.
1 Unconditional thread switch
2 Conditional thread switch at stall (blocks thread execution)
3
1 Read / write with reuse cache hint
2 tbd with cache hint without reuse
3 Read /
1 Specify disp for address calculation Specify index register for ireg instruction Specify base register for breg instruction Specify 2's complement displacement constant (8 bits) for memory reference instruction Specify destination register for dreg instruction (software event) )
The processing of hardware and software events is more fully understood by reviewing their instruction format.
(Event)
Format: psEVENT s1reg {, stop}
Description: The event instruction polls the execution thread's event queue. If an event exists, the instruction completes with the event state loaded into the exception state register. If the event does not exist in the event queue, the thread transitions to the idle state.
(Operand and field)
The ps predicate source register specifies whether the instruction is being executed. If true, the instruction is executed; otherwise, it is not executed (no side effects)
stop 0 Indicates that the instruction group is not represented by this instruction.
1 命令グループが、この命令によって表現されていることを表す。
s1reg 命令の第1のソースオペランドを含むレジスタを特定する
(SWイベント)
フォーマット:ps SWEVENT s1reg{,stop}
説明:SWイベント命令は、イベントをスレッドによってハンドリングされるべきイベントキューにエンキューする。イベントフォーマットのxxxを参照。
1 Indicates that an instruction group is represented by this instruction.
Identify the register containing the first source operand of the s1reg instruction (SW event)
Format: ps SWEVENT s1reg {, stop}
Description: The SW event instruction enqueues an event into the event queue to be handled by the thread. See event format xxx.
(オペランドおよびフィールド:
ps 述語ソースレジスタは、命令が実行されているかどうかを特定する。真である場合、命令が実行され、そうでなく偽である場合、命令は実行されていない(副次的影響なし)
stop 0 命令グループがこの命令によって表現されていないことを表す。
(Operands and fields:
The ps predicate source register specifies whether the instruction is being executed. If true, the instruction is executed; otherwise, it is not executed (no side effects)
stop 0 Indicates that the instruction group is not represented by this instruction.
1 命令グループが、この命令によって表現されていることを表す。
s1reg 命令の第1のソースオペランドを含むレジスタを特定する
(CTLFLD)
フォーマット:ps Ct1Fld ti cfield,{,stop}
説明:コントロールフィールド命令は、cfieldによって特定されたコントロールフィールドを変更する。コントロールレジスタ内の他のフィールドは変更されない。
1 Indicates that an instruction group is represented by this instruction.
Identify the register containing the first source operand of the s1reg instruction (CTLLFLD)
Format: ps Ct1Fld ti cfield, {, stop}
Description: The control field instruction changes the control field specified by cfield. Other fields in the control register are not changed.
(オペランドおよびフィールド)
ps 述語ソースレジスタは、命令が実行されているかどうかを特定する。真である場合、命令が実行され、そうでなく偽である場合、命令は実行されていない(副次的影響なし)
stop 0 命令グループがこの命令によって表現されていないことを表す。
(Operand and field)
The ps predicate source register specifies whether the instruction is being executed. If true, the instruction is executed; otherwise, it is not executed (no side effects)
stop 0 Indicates that the instruction group is not represented by this instruction.
1 命令グループが、この命令によって表現されていることを表す。
ti 0 このスレッドコントロールレジスタへのアクセスを表す
1 IDt_indirect field(スレッドインダイレクション)(特権化)によって特定されたスレッドのコントロールレジスタへのアクセスを表す
cfield
cfield[4:0] コントロールフィールド 特権
1 Indicates that an instruction group is represented by this instruction.
1 cfield indicating access to the control register of the thread specified by IDt_indirect field (thread indirection)
cfield [4: 0] Control field Privilege
図25は、SoCフォーマットに組み込まれた本発明によるデジタルLCD−TVサブシステム242のブロック図である。このサブシステム242は、上述のように構成され、例えば、上述のように、MPEG2信号多重分離、MPEG2ビデオデコーディング、MPEGオーディオデコーディング、デジタルTVユーザインターフェースオペレーション、およびオペレーティングシステムの実行(例えば、Linux)、プロセッサモジュール5を提供するスレッドを同時に実行するように動作するプロセッサモジュール5を備える。モジュール5は、上述のように、L2キャッシュ26のオフチップ部分を備えるDDR DRAMフラッシュメモリに結合される。このモジュールは、AMBAAHBバス244へのインターフェース(図示せず)を備え、これを介して、デジタルLCD−TVのコンポーネントにインターフェース、すなわち、ビデオ入力インターフェース、ビデオ出力インターフェース、オーディオ出力インターフェースおよびLCDインターフェースを提供する「インテレクチャルプロパティ」または「IP」246と通信する。当然、AHBバス5等を介してモジュール5に結合される他のIPが、追加的または代替的に提供されてもよい。例えば、図面において、示されたモジュール5は、デジタルLCD−TVがソース信号を取得および/またはコントロールされる、DMAエンジン248、高速I/Oデバイスコントローラ250および低速デバイスコントローラ252(APBブリッジ254を介する)等の選択的IPと通信する。
FIG. 25 is a block diagram of a digital LCD-
図26は、再びSoCフォーマットで具現化されるデジタルLCD−TVまたは本発明による他のアプリケーションサブシステム256のブロック図である。示されたサブシステムは、図24に示される特定のIPの代わりにAPBおよびAHB/APBで示されるという点を除いて、上述のように構成される。アプリケーションニーズによるが、素子258は、上述のインプリメンテーションにおけるように、ビデオ入力インターフェース、ビデオ出力インターフェース、オーディオ出力インターフェース、およびLCDインターフェース等を備え得る。 FIG. 26 is a block diagram of a digital LCD-TV or other application subsystem 256 according to the present invention, which is again embodied in SoC format. The subsystem shown is configured as described above except that it is shown with APB and AHB / APB instead of the specific IP shown in FIG. Depending on the application needs, device 258 may comprise a video input interface, a video output interface, an audio output interface, an LCD interface, etc., as in the implementation described above.
示されたサブシステムは、さらに、複数のモジュール5、例えば、モジュール5によって利用されるオフチップL2キャッシュ26bの一部とインターフェースし、好ましくは、これを形成する相互接続を介して結合される1〜20(以上)のモジュールを備える。その相互接続は、モジュール5によって、および、より具体的には、L2キャッシュ26によって共有されるシフトレジスタバスを備えるリング相互接続(R1)の形態でもよい。あるいは、これは、モジュール5の組み合わされたメモリシステム内でのデータの迅速な移動を容易にする、プロプライエタリ等、別の形態の相互接続でもよい。これと関係なく、L2キャッシュは、好ましくは、任意の1つのモジュール5のL2キャッシュが個々のプロセッサのメモリシステムのみでなく、プロセッサモジュール5のすべての分散オールキャッシュメモリシステムにも寄与するように結合される。当然、上述のように、モジュール5は、同じメモリシステム、チップまたはバスを物理的に共有する必要はなく、その代わりに、ネットワーク等を介して接続され得る。
The illustrated subsystem further interfaces with a plurality of
これまで、所望の目的を満たす装置、システムおよび方法が記載された。本明細書中に記載された実施形態が本発明の例示であること、および、変更を含む、他の実施形態が本発明の範囲に含まれることは明らかである。 So far, apparatus, systems and methods have been described that meet the desired objectives. It will be apparent that the embodiments described herein are illustrative of the invention and that other embodiments, including modifications, are within the scope of the invention.
10 アドレス変換
14 アドレス変換
20 アドレス変換
22 L1命令キャッシュ
24 L1データキャッシュ
26 L2キャッシュ
28 起動およびパイプラインコントロール
30 整数ユニット(iunit)
32 浮動小数点ユニット(fpunit)
34 比較ユニット(cunit)
36 メモリユニット(memunit)
38 分岐ユニット(brunit)
44 イベント−スレッド送達
46 TPUキュー
48 TPUキュー
70 データブロック
72a キャッシュタグアレイグループ
72p キャッシュタグアレイグループ
74a タグ比較
74p タグ比較
80 データブロック
82a データアレイグループ
82p データアレイグループ
84a マッチしたタグを選択
84p マッチしたタグを選択
86 物理ページ番号
112 挿入(またはフェッチ)ポインタ
116 コミットポインタ
114 抽出(または発行)ポインタ
120 デュアルポートメモリまたはレジスタ
130 パイプコントロール
138 ロード格納バッファ
140 スレッドクラスキューコントロール
142 スレッドクラス
144 命令ディスパッチ
148a ユニットキュー
148e ユニットキュー
160 コントロール
168 セグメント変換
166 アドレス加算器
164 スレッドセレクタ
162a スレッド0状態
162b スレッド1状態
162e スレッドn状態
170 コントロール
172 アドレス加算器
174 セグメント変換CAM
192 状態マシン
194 リクエストキュー
190 現在状態コントロールロジック
196 L1キャッシュインターフェース
26c DDR ドラムCtl
200a 整数レジスタファイル
200b FPレジスタファイル
200c 比較レジスタファイル
200d 分岐レジスタファイル
200e メモリレジスタファイル
236 チューナまたはストリーム生成器
230 MPEG2 DMUXスレッド
232 ビデオデコードステップ1スレッド
234 ビデオデコードステップ2スレッド
10
32 Floating point unit (fpunit)
34 Comparison unit
36 memory unit
38 branch unit
44 Event-
192
200a integer register file 200b
Claims (63)
A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を各々が実行する複数の処理ユニットと、
B.前記複数の処理ユニットによって共有され、かつ、前記複数の処理ユニットと通信接続された1つ以上の実行ユニットであって、前記実行ユニットは、前記スレッドからの命令を実行する、1つ以上の実行ユニットと、
C.イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、
i 前記複数の処理ユニットと通信接続され、
ii そのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムと
を備える、組込みプロセッサ。 An embedded processor,
A. A plurality of processing units each executing one or more processes or threads (collectively “threads”);
B. One or more execution units shared by the plurality of processing units and communicatively connected to the plurality of processing units, wherein the execution unit executes instructions from the thread Unit,
C. An event delivery mechanism for delivering the event to each thread with which the event is associated, the event delivery mechanism comprising:
i communicatively connected to the plurality of processing units;
an embedded processor comprising: an event delivery mechanism that delivers each such event to the respective thread without executing an instruction.
A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を各々が実行する複数の仮想処理ユニットであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の仮想処理ユニットと、
B.複数の実行ユニットと、
C.前記複数の処理ユニットおよび前記複数の実行ユニットと通信接続されるパイプラインコントロールであって、前記パイプラインコントロールは、前記実行ユニットのうちの複数のユニット上で同時に実行するために、前記スレッドのうちの複数のスレッドからの命令を起動する、パイプラインコントロールと、
D.前記複数の処理ユニットと通信接続され、かつ、命令の実行なしに、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、ここで、前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含む、イベント送達メカニズムと
を備える組込みプロセッサであって、
E.イベントが送達されるスレッドは、前記スレッドの外で命令を実行することなく、前記イベントを処理する、組込みプロセッサ。 An embedded processor,
A. A plurality of virtual processing units, each executing one or more processes or threads (collectively “threads”), each thread forcing execution on the same processing unit while the thread is alive With multiple virtual processing units that are or cannot be forced;
B. Multiple execution units;
C. A pipeline control communicatively connected to the plurality of processing units and the plurality of execution units, wherein the pipeline control is configured to Pipeline control that launches instructions from multiple threads,
D. An event delivery mechanism that is communicatively connected to the plurality of processing units and delivers the event to each thread with which the event is associated without execution of an instruction, wherein the event is a hardware interrupt, An embedded processor with an event delivery mechanism, including any of software initiated signaling events ("software events") and memory events,
E. An embedded processor in which a thread to which an event is delivered processes the event without executing instructions outside the thread.
A.複数の組込みプロセッサと、
B.前記複数の組込みプロセッサ上で実行する複数の仮想処理ユニットであって、各仮想処理は、1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を実行し、かつ、各仮想処理ユニットは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の仮想処理ユニットと、
C.前記複数の処理ユニットによって共有され、かつ、前記複数の処理ユニットと通信接続された1つ以上の実行ユニットであって、前記実行ユニットは、前記スレッドからの命令を実行し、前記実行ユニットは、整数ユニット、浮動ユニット、分岐ユニット、比較ユニット、およびメモリ実行ユニットのいずれかを備える、1つ以上の実行ユニットと、
D.イベントが関連付けられるそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、
i 前記複数の処理ユニットと通信接続され、
ii そのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムと
を備える、組込みプロセッサシステム。 An embedded processor system,
A. Multiple embedded processors;
B. A plurality of virtual processing units executing on the plurality of embedded processors, each virtual processing executing one or more processes or threads (collectively “threads”), and each virtual processing unit comprising: A plurality of virtual processing units that may or may not be forced to execute on the same processing unit while the thread is alive;
C. One or more execution units shared by the plurality of processing units and communicatively connected to the plurality of processing units, the execution unit executing instructions from the thread, the execution unit comprising: One or more execution units comprising any of an integer unit, a floating unit, a branch unit, a comparison unit, and a memory execution unit;
D. An event delivery mechanism for delivering the event to each thread with which the event is associated, the event delivery mechanism comprising:
i communicatively connected to the plurality of processing units;
an embedded processor system comprising: an event delivery mechanism for delivering each such event to said respective thread without executing an instruction.
B.前記パイプラインコントロールは、それぞれの仮想処理ユニットと各々が関連付けられた複数の命令キューを備え、
C.前記分岐実行ユニットによってフェッチされた命令は、対応するスレッドが実行される前記それぞれの仮想処理ユニットと関連付けられた前記命令キュー内に配置される、請求項18に記載の組込みプロセッサシステム。 A. A pipeline control communicatively connected to the plurality of processing units and the plurality of execution units, wherein the pipeline control is configured to With pipeline control, dispatching instructions from multiple threads
B. The pipeline control comprises a plurality of instruction queues each associated with a respective virtual processing unit,
C. 19. The embedded processor system of claim 18, wherein instructions fetched by the branch execution unit are placed in the instruction queue associated with the respective virtual processing unit on which a corresponding thread is executed.
A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を各々が実行する複数の処理ユニットであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の処理ユニットと、
B.イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、
i 前記複数の処理ユニットと通信接続され、
ii そのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムと
を備える、組込みプロセッサ。 An embedded processor,
A. A plurality of processing units, each executing one or more processes or threads (collectively “threads”), each thread being forced to execute on the same processing unit while the thread is alive With multiple processing units, which are not forced or
B. An event delivery mechanism for delivering the event to each thread with which the event is associated, the event delivery mechanism comprising:
i communicatively connected to the plurality of processing units;
an embedded processor comprising: an event delivery mechanism that delivers each such event to the respective thread without executing an instruction.
A.複数の組込みプロセッサと、
B.前記複数の組込みプロセッサ上で実行する複数の仮想処理ユニットであって、各仮想処理は、1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を実行し、かつ、各仮想処理ユニットは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、複数の仮想処理ユニットと、
C.イベントが関連付けられるそれぞれのスレッドに前記イベントを送達するイベント送達メカニズムであって、前記イベント送達メカニズムは、
i 前記複数の処理ユニットと通信接続され、
ii そのような各イベントを、命令を実行することなく、前記それぞれのスレッドに送達する、イベント送達メカニズムと
を備える、組込みプロセッサシステム。 An embedded processor system,
A. Multiple embedded processors;
B. A plurality of virtual processing units executing on the plurality of embedded processors, each virtual processing executing one or more processes or threads (collectively “threads”), and each virtual processing unit comprising: A plurality of virtual processing units that may or may not be forced to execute on the same processing unit while the thread is alive;
C. An event delivery mechanism for delivering the event to each thread with which the event is associated, the event delivery mechanism comprising:
i communicatively connected to the plurality of processing units;
an embedded processor system comprising: an event delivery mechanism for delivering each such event to said respective thread without executing an instruction.
A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の処理ユニットの各々上で実行するステップと、
B.前記複数の処理ユニットによって共有される1つ以上の実行ユニットにおいて、前記スレッドからの命令を実行するステップと、
C.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドにイベントを送達するステップと
を包含する、方法。 A method of embedded processing,
A. Executing one or more processes or threads (collectively “threads”) on each of the plurality of processing units;
B. Executing instructions from the thread in one or more execution units shared by the plurality of processing units;
C. Delivering the event to each thread with which the event is associated without executing the instruction.
A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の仮想処理ユニットの各々上で実行するステップであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、ステップと、
B.前記実行ユニットのうちの複数のユニット上で同時に実行するために、前記スレッドのうちの複数のスレッドからの命令を起動するステップと、
C.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップであって、前記イベントは、ハードウェア割り込み、ソフトウェアによって開始されるシグナリングイベント(「ソフトウェアイベント」)およびメモリイベントのいずれかを含む、ステップと、
D.前記スレッドの外で命令を実行することなく、前記スレッドが送達される前記イベントを処理するステップと
を包含する、方法。 A method of the embedded processing comprising:
A. Executing one or more processes or threads (collectively "threads") on each of a plurality of virtual processing units, each thread running on the same processing unit while the thread is alive With steps that are forced or not forced to perform,
B. Activating instructions from a plurality of threads of the threads to execute simultaneously on a plurality of units of the execution unit;
C. Delivering the event to each thread with which the event is associated without executing an instruction, the event comprising a hardware interrupt, a software initiated signaling event ("software event") and a memory event Including any of the steps,
D. Processing the event delivered by the thread without executing instructions outside the thread.
A.複数の仮想処理ユニットを複数の組込みプロセッサ上で実行するステップと、
B.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の仮想処理ユニットの各々上で実行するステップであって、各スレッドは、前記スレッドが生きている間、同じ仮想処理ユニットおよび/または同じ組込みプロセッサ上での実行を強いられるか、または強いられない、ステップと、
C.前記複数の処理ユニットによって共有される1つ以上の実行ユニットにおいて、前記スレッドからの命令を実行するステップであって、前記実行ユニットは、整数ユニット、浮動ユニット、分岐ユニット、比較ユニット、およびメモリ実行ユニットのいずれかを備える、ステップと、
D.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップと
を包含する、方法。 A method of embedded processing,
A. Executing a plurality of virtual processing units on a plurality of embedded processors;
B. Executing one or more processes or threads (collectively “threads”) on each of a plurality of virtual processing units, each thread being the same virtual processing unit and / or while the thread is alive Or steps forced or not forced to run on the same embedded processor, and
C. Executing instructions from the thread in one or more execution units shared by the plurality of processing units, the execution units comprising an integer unit, a floating unit, a branch unit, a comparison unit, and a memory execution A step comprising any of the units;
D. Delivering the event to each thread with which the event is associated without executing the instruction.
B.前記ディスパッチするステップは、前記それぞれのスレッドごとにフェッチされた命令を、前記スレッドが実行される前記仮想処理ユニットと関連付けられた命令キュー内に配置するステップを包含する、請求項48に記載の方法。 A. Dispatching instructions from a plurality of threads of the thread for simultaneous execution on a plurality of units of the execution unit;
B. 49. The method of claim 48, wherein the step of dispatching includes placing instructions fetched for each respective thread in an instruction queue associated with the virtual processing unit in which the thread is executed. .
A.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の処理ユニットの各々上で実行するステップであって、各スレッドは、前記スレッドが生きている間、同じ処理ユニット上での実行を強いられるか、または強いられない、ステップと、
B.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップと
を包含する、方法。 A method of embedded processing,
A. Executing one or more processes or threads (collectively “threads”) on each of a plurality of processing units, each thread executing on the same processing unit while the thread is alive With forced or unforced steps,
B. Delivering the event to each thread with which the event is associated without executing the instruction.
A.複数の仮想処理ユニットを複数の組込みプロセッサ上で実行するステップと、
B.1つ以上のプロセスまたはスレッド(集合的に「スレッド」)を複数の仮想処理ユニットの各々上で実行するステップであって、各仮想処理ユニットは、前記スレッドが生きている間、同じ仮想処理ユニットおよび/または同じ組込みプロセッサ上での実行を強いられるか、または強いられない、ステップと、
C.命令を実行することなく、イベントが関連付けられたそれぞれのスレッドに前記イベントを送達するステップと
を包含する、方法。 A method of embedded processing,
A. Executing a plurality of virtual processing units on a plurality of embedded processors;
B. Executing one or more processes or threads (collectively “threads”) on each of a plurality of virtual processing units, each virtual processing unit being the same virtual processing unit while the thread is alive And / or steps forced or not forced to run on the same embedded processor; and
C. Delivering the event to each thread with which the event is associated without executing the instruction.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/735,610 US7685607B2 (en) | 2003-05-30 | 2003-12-12 | General purpose embedded processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005182791A true JP2005182791A (en) | 2005-07-07 |
Family
ID=34794608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004359188A Pending JP2005182791A (en) | 2003-12-12 | 2004-12-10 | General purpose embedded processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005182791A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010519652A (en) * | 2007-02-21 | 2010-06-03 | クゥアルコム・インコーポレイテッド | On-demand multi-threaded multimedia processor |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04123230A (en) * | 1990-09-14 | 1992-04-23 | Hitachi Ltd | Data processor |
JPH07281896A (en) * | 1994-04-15 | 1995-10-27 | Hitachi Ltd | Information processor |
JPH08278952A (en) * | 1995-02-09 | 1996-10-22 | Nec Corp | Method and device for communication between processors |
JPH09282188A (en) * | 1996-04-16 | 1997-10-31 | Mitsubishi Electric Corp | Interruption processing method and system using the method |
JPH10124316A (en) * | 1996-08-27 | 1998-05-15 | Matsushita Electric Ind Co Ltd | Multithread processor independently processing plural instruction flows and flexibly controlling processing performance by the same instruction flows |
-
2004
- 2004-12-10 JP JP2004359188A patent/JP2005182791A/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04123230A (en) * | 1990-09-14 | 1992-04-23 | Hitachi Ltd | Data processor |
JPH07281896A (en) * | 1994-04-15 | 1995-10-27 | Hitachi Ltd | Information processor |
JPH08278952A (en) * | 1995-02-09 | 1996-10-22 | Nec Corp | Method and device for communication between processors |
JPH09282188A (en) * | 1996-04-16 | 1997-10-31 | Mitsubishi Electric Corp | Interruption processing method and system using the method |
JPH10124316A (en) * | 1996-08-27 | 1998-05-15 | Matsushita Electric Ind Co Ltd | Multithread processor independently processing plural instruction flows and flexibly controlling processing performance by the same instruction flows |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010519652A (en) * | 2007-02-21 | 2010-06-03 | クゥアルコム・インコーポレイテッド | On-demand multi-threaded multimedia processor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4870914B2 (en) | Digital data processor | |
US10929323B2 (en) | Multi-core communication acceleration using hardware queue device | |
JP6708335B2 (en) | User-level branch and join processor, method, system, and instructions | |
JP6240964B2 (en) | Apparatus, method, and system | |
JP5543366B2 (en) | System and method for performing locked operations | |
US20060179277A1 (en) | System and method for instruction line buffer holding a branch target buffer | |
JP5666473B2 (en) | Multi-threaded data processing system | |
US10771554B2 (en) | Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication | |
US20230195464A1 (en) | Throttling Code Fetch For Speculative Code Paths | |
JP4024271B2 (en) | Method and apparatus for processing instructions in a multiprocessor system | |
CN112395000B (en) | Data preloading method and instruction processing device | |
US20240020241A1 (en) | Apparatus and method for address pre-translation to enhance direct memory access by hardware subsystems | |
US10901747B2 (en) | Unified store buffer | |
JP2005182791A (en) | General purpose embedded processor | |
WO2021061626A1 (en) | Instruction executing method and apparatus | |
US20070156990A1 (en) | Load mechanism | |
JP4631442B2 (en) | Processor | |
US20240004808A1 (en) | Optimized prioritization of memory accesses | |
WO2022133842A1 (en) | Apparatus and method for extending enqueue command instructions to general-purpose commands to reduce context-switching in virtualization environment | |
US20210200538A1 (en) | Dual write micro-op queue |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070302 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100319 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100621 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100624 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100716 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100722 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100818 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110511 |