JP2008532131A - マイクロプロセッサアーキテクチャ - Google Patents

マイクロプロセッサアーキテクチャ Download PDF

Info

Publication number
JP2008532131A
JP2008532131A JP2007556643A JP2007556643A JP2008532131A JP 2008532131 A JP2008532131 A JP 2008532131A JP 2007556643 A JP2007556643 A JP 2007556643A JP 2007556643 A JP2007556643 A JP 2007556643A JP 2008532131 A JP2008532131 A JP 2008532131A
Authority
JP
Japan
Prior art keywords
instruction
instructions
processing
execution
operable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007556643A
Other languages
English (en)
Other versions
JP5285915B2 (ja
Inventor
ウィルドマン、レオン・デイビッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ClearSpeed Technology PLC
Original Assignee
ClearSpeed Technology PLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ClearSpeed Technology PLC filed Critical ClearSpeed Technology PLC
Publication of JP2008532131A publication Critical patent/JP2008532131A/ja
Application granted granted Critical
Publication of JP5285915B2 publication Critical patent/JP5285915B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

マイクロプロセッサアーキテクチャは、単一命令多重データSIMDアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の処理素子と、複数の実行装置を含み特定の命令タイプの命令を処理するようにそれぞれ動作可能な逐次プロセッサと、複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を実行装置へ分配するように動作可能な命令制御装置とを具備している。逐次プロセッサの実行装置は並列にそれぞれの命令を処理するように動作可能である。
【選択図】図2

Description

本発明はマイクロプロセッサアーキテクチャに関し、特にSIMDプロセッサアレイを含むプロセッサのアーキテクチャに関する。
添付図面の図1は、単一命令多重データ(SIMD)プロセッサアレイを含んでいる従来考えられたマイクロプロセッサアーキテクチャを示している。このプロセッサは、命令を取り出し、ブランチング及び計算を行う非並列命令を処理するように動作可能な逐次プロセッサ10を含んでいる。アーキテクチャはまたアレイ制御装置12により制御される処理素子20のSIMDアレイ19も含んでいる。アレイ制御装置12は逐次プロセッサ10により制御される。
逐次プロセッサ10は命令キャッシュ(図示せず)から命令流を受信する。逐次プロセッサ10はその後、検索された逐次命令を実行する。逐次プロセッサ10はSIMD命令をアレイ制御装置12へ発し、アレイ制御装置12は受信されたSIMD命令を復号して優先順位を付け、適切な制御信号を処理素子(PE)20のSIMDアレイ19へ送信する。SIMDアレイ19は、処理素子が全てPE20に対する特有のデータについて同じ命令を実行する等の既知の方法で動作する。
図1に示されているように、SIMDアレイ19は並列動作されるように配置されたプロセッサ素子(PE)20のアレイを含んでいる。SIMDアレイ19の各PE20は演算論理ユニット(ALU)22、レジスタファイル24、PEメモリ26、入力/出力(I/O)装置26を含んでいる。SIMDアレイ19は同期された状態で動作し、ここでは各PE20は他のPEと同じ時間に同じ命令を実行するが、個々のPEに特有のデータを使用する。PE中におけるこれらの各実行装置は特定のタスクを実行し、即ちALU22は演算機能を行い、レジスタファイル24はALU22により使用されて内部PEメモリ26へ転送されるデータを記憶し、I/O装置26はPEメモリ26と外部メモリ(図示せず)との間のデータ転送を処理する。PEデータはPEメモリ26中に記憶され、レジスタファイル24を使用してALU22へ転送される。アレイ制御装置12はデータをI/O装置28とPEメモリ26とレジスタファイル24とALU22との間で転送させる命令を発生し、ALU22中のデータで動作するための命令をアレイ19へ発生する。
従来考えられたアーキテクチャには幾つか欠点が存在する。命令はPEにより実行されるように1つの待ち行列中に保持され、これは処理の実質的な遅延を生じさせる可能性がある。また、任意の1つの命令の実行期間中に、各PE20のただ1つの実行装置が占有される。例えば命令が2つの数字を共に乗算することであるならば、各PE20のALU22が動作している。その代わりに、命令が外部メモリからデータアイテムを取り出すことであるならば、各PE20のI/O28のみが作動中である。
それ故、これらの欠点を克服できる技術を提供することが望ましい。
本発明の1特徴によれば、マイクロプロセッサアーキテクチャが提供され、それは
実行装置の単一命令多重データSIMDアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の処理素子と、
特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含む逐次プロセッサと、
複数の命令を受信し、受信された命令の命令タイプに応じて、受信された命令をSIMDアレイと逐次プロセッサの実行装置へ分配するように動作可能な命令制御装置とを具備し、
逐次プロセッサの実行装置は並列でそれぞれの命令を処理するように動作可能である。
本発明の別の特徴によれば、マイクロプロセッサアーキテクチャが提供され、それは
単一命令多重データSIMDアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の処理素子と、
複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置とを具備し、
各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である。
本発明の別の特徴によれば、マイクロプロセッサアーキテクチャが提供され、これは
実行装置の単一命令多重データSIMDアレイ中に配置されている複数の処理素子と、
複数の実行装置を含み、特定の命令タイプの命令を処理するようにそれぞれ動作可能な逐次プロセッサとを具備し、
その逐次プロセッサの実行装置の1つは、逐次プロセッサの少なくとも1つの他の実行装置により処理するためのデータを記憶するように動作するレジスタユニットであり、
そのレジスタユニットは、それぞれの処理スレッドに関連されるレジスタの複数のセットを含んでいる。
本発明のさらに別の特徴によれば、処理素子の単一命令多重データアレイを含んでいるプロセッサの実行装置において命令を実行する方法が提供され、実行装置はそれぞれの命令タイプの命令を処理するように動作可能であり、前記方法は、
命令流を受信し、
実行装置が相互に並列にそれぞれの命令を処理するように動作可能であるように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる。
図2は、本発明を実施するそれぞれのアーキテクチャの主要な素子を示す概略ブロック図である。図2のアーキテクチャは逐次プロセッサ10、並列プロセッサ15、命令制御装置14を含んでいる。命令制御装置14は以下詳細に説明するように、命令を取り出し、復号し、逐次プロセッサ10と並列プロセッサ15へ分配するように動作する。並列プロセッサはPE(プロセッサ素子)20のアレイ19と複数のサブ制御装置を含んでいる。明瞭にする目的で、単一のPEだけが図2に示されている。SIMDアレイ19は任意の数のPE20を含むことができることが容易に認識されよう。図2の例示的な実施形態では、サブ制御装置はアレイ制御装置16、ロード/記憶制御装置17、I/O制御装置18により表されている。命令は命令制御装置から並列プロセッサ15中のサブ制御装置へ、または逐次プロセッサ10へ導かれる。
SIMDアレイ19の各PE20は図2に示されている例では、演算論理ユニット(ALU)22、レジスタファイル(Reg)24、I/O装置(I/O)26を具備している。PE(ALU22、レジスタファイル24およびI/O28)中のこれらの各実行装置はそれぞれのタスクを実行し、即ちALU22は演算機能を行い、レジスタファイル24はALU22により使用されて内部PEメモリ26へ転送されるデータを記憶し、I/O装置28はPEメモリ26と外部メモリ(図示せず)との間のデータ転送を処理する。
命令制御装置14はキャッシュ(図示せず)から命令を受信し、これらを以下のカテゴリへ分類する。
逐次プロセッサ10により実行される命令、
SIMDアレイ19中の各PE20のALU22により実行される命令、
SIMDアレイ19中の各PE20のレジスタファイル24により実行される命令、
SIMDアレイ19中の各PE20のI/O装置28により実行される命令。
命令制御装置14はその後、命令の実行位置にしたがって、命令をアレイ制御装置16、ロード/記憶制御装置17、I/O制御装置18、または逐次プロセッサ10へ導く。アレイ制御装置16、ロード/記憶制御装置17、I/O制御装置18はそれぞれ受信された命令のセットを分類し、それらをSIMDアレイ中のPEの適切な実行装置へ送信する。
図3は、命令制御装置14、逐次プロセッサ10、並列プロセッサ15を含んでいる本発明の一般化された実施形態を示している。図3では、並列プロセッサは処理素子(PE)36のSIMDアレイ19を含んでいる。再度述べるが、明瞭にする目的で、単一のPEだけが図3に示されている。SIMDアレイ19は任意の数のPE20を含むことができることが容易に認識されるであろう。各PEは複数(この例ではN個)の実行装置37、38、39を含んでいる。各実行装置はPE中で特別なタスクを実行するが、同じタスクが2以上の実行装置により行われることができる。図3の実施形態では、並列プロセッサ15は命令制御装置からそれぞれの命令タイプを受信するN個のサブ制御装置30、32、…34も含んでいる。図3のサブ制御装置の数はSIMDアレイ19の各PE36中の実行装置の数に対応している。
図3は、ALU、浮遊小数点演算ユニット(FPU)、乗算−累算ユニット(MAC)、I/O制御およびレジスタ記憶装置を含んでいる。他の実行装置が本発明の1実施形態のPEで設けられることができることが容易に認識されよう。
逐次プロセッサ10もまた複数の実行装置も具備している。実行装置101、102…10NはSIMDアレイ中のPE中の実行装置と類似の方法で動作する。逐次プロセッサは適切な実行装置へ命令を分配する制御装置10aを含んでいる。この制御装置10aは単一の制御装置であってもよく、または逐次プロセッサ中のそれぞれの実行装置に対応する複数のサブ制御装置により与えられることもできる。
命令は命令制御装置により受信され、命令のタイプにしたがって逐次プロセッサ10またはサブ制御装置30、32、34の1つへ分配される。各サブ制御装置はその受信された命令を分類し、それらを処理するためにSIMDアレイ中のPE36の適切な部分へ転送する。
1例では、1つのサブ制御装置は2以上の実行装置へ命令を転送することができる。これは性能の僅かな損失を犠牲にする可能性があるが、IC上のスペースを節約する利点を有する。
図4は処理素子中で使用するためのレジスタファイル42を示しており、これはレジスタファイル中に記憶されたデータで動作し、多数の命令スレッドを処理できる実行装置を含んでいる。レジスタファイルは逐次プロセッサ10で使用されることもできる。このようなレジスタファイルは本発明の別の特徴を実施する。並列プロセッサ15は予め定められた最大数の命令流(スレッド)を処理することができる。レジスタファイル42にはそれぞれこのようなスレッドに対するレジスタのセットが与えられている。したがって、Aスレッドを処理することができる並列プロセッサでは、レジスタファイル42はAグループレジスタを具備している。各グループは予め定められた数xのレジスタを含んでいる。x個のレジスタは個々のレジスタデータアイテムを記憶するために設けられる。1つの可能な例では、128個のレジスタが各グループに設けられている。レジスタファイル42は、アドレスユニット40を使用してアドレスされるデマルチプレクサ44を介してアクセスされる。アドレスユニット40は入力としてスレッドIDとレジスタアドレスを受信し、それによってマルチプレクサの全レジスタアドレスを生成する。このようにして、データ48は出力信号50としてデマルチプレクサ44を介してレジスタ42から転送されることができる。このような拡張されたレジスタ記憶装置は、既存のレジスタ値の出力及び記憶と、次のスレッドに対する新しいレジスタ値の入力とを必要とせずに、処理されているスレッドの高速度の切り替えを可能にすることができる。本発明のこの特徴を実施するレジスタファイルはマルチタスクを可能にする。さらに長いレジスタにより使用されるシリコン領域がレジスタファイルを増加する要因よりも小さいので、このような強化されたレジスタファイルは有効である。例えばレジスタファイルサイズを2倍にするのに対して、シリコン領域の増加は2倍よりも小さい。これはレジスタファイルの容量とは独立して、固定した量の領域が使用される事実によるものである。
図5は命令流が本発明の1実施形態においてどのように分配されるかの1例を示している。示されている例では、それぞれ複数の別々の命令を含む3つの異なる命令スレッドA、B、Cが逐次プロセッサ10または並列プロセッサ15へ供給されるように待ち行列されている。例えばスレッドAは命令A、A、A、Aを含んでいる。1例として、図2を参照して説明されている3つの制御装置16、17、18と逐次プロセッサ10は図5では逐次プロセッサ10に加えて、アレイ制御装置16、ロード/記憶制御装置17、およびI/O制御装置18として示されている。SIMDアレイ19中の多数のPEのうち1つのPE20のみが明瞭にする目的で示されている。各スレッドからの命令は命令制御装置14に入力される。命令制御装置14は命令が実行される場所にしたがって、命令を各制御装置16、17、18または逐次プロセッサ10へ分配する。図5に示されている例では、命令C、B、Aは演算命令であり、したがってALUで実行される。それ故、アレイ制御装置16がALU22への命令の供給を制御するので、これらの命令はアレイ制御装置16へ分配される。I/O部分28で実行される命令はI/O制御装置18へ送信され、レジスタファイル24で実行される命令はロード/記憶制御装置17へ送信される。各制御装置はその後、その受信された命令の固有の待ち行列の優先順位を定める。同様に、命令Cは逐次プロセッサへ転送される。
例えば図5に示されているスレッドCの命令について検討する。命令CはI/O命令CとCを使用して検索されたオペランドで実行される演算命令を表している。したがって、命令CはI/O命令CとCが完了するまでALU待ち行列中に保持されなければならない。
この場合、最初に命令CをPEに送信するのではなく、アレイ制御装置は他のALU命令を他の命令流から送信できる。この優先順位付けは逆にも適用可能である。例えばI/Oまたはメモリ(レジスタファイル)動作は、関係する命令流中のALU命令の後に行われなければならない可能性がある。そのような場合には、他の命令流のI/O命令は他の命令流のALU命令が完了される間に行われることができる。
例えば命令Bが命令BおよびBと独立しているならば、これはスレッドB中の順序外で処理されることができる。
このような優先順位付けはPE20の各実行ユニット(ALU、メモリまたはI/O)が最大の時間量で動作されることを可能にする。このような方式は先に考察したシステムの欠点、即ち他の装置が使用中であるときPEの実行装置が十分な時間期間未使用である欠点を克服する。本発明の実施形態は、前述したように命令流からの個々の命令をスケジュール化し、誘導することによって、SIMD環境で効率的なマルチスレッド化能力を与えることができる。
従来考えられていたSIMDプロセッサアーキテクチャを示す概略ブロック図。 本発明を実施するそれぞれのアーキテクチャの主要な素子を示す概略ブロック図。 本発明を実施するそれぞれのアーキテクチャの主要な素子を示す概略ブロック図。 図2および3のアーキテクチャの一部の概略ブロック図。 本発明の1実施形態における命令のフローを示すフロー図。

Claims (33)

  1. 実行装置の単一命令多重データSIMDアレイ中に配置されている複数の処理素子と、
    特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる逐次プロセッサと、
    複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令をSIMDアレイと逐次プロセッサの実行装置へ分配するように動作可能な命令制御装置とを具備し、
    逐次プロセッサの実行装置は並列でそれぞれの命令を処理するように動作可能であるマイクロプロセッサアーキテクチャ。
  2. 各処理素子は複数の実行装置を含み、各処理素子の実行装置は相互に並列にそれぞれの命令を処理するように動作可能である請求項1記載のマイクロプロセッサアーキテクチャ。
  3. 単一命令多重データSIMDアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる複数の処理素子と、
    複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置とを具備し、
    各処理素子の実行装置は並列でそれぞれの命令を処理するように動作可能であるアーキテクチャ。
  4. 命令タイプはデータ処理及びデータ移動命令を含んでいる請求項1乃至3のいずれか1項記載のアーキテクチャ。
  5. 命令制御装置はそれぞれの処理スレッドに関する複数の命令流を受信し、その並列処理のために少なくとも2つの異なる命令流から実行素子へ命令を分配するように動作可能である請求項1乃至4のいずれか1項記載のアーキテクチャ。
  6. 命令制御装置はそれぞれの処理スレッドに関する複数の命令流を受信し、実行装置へ分配される連続的な命令が異なる命令流からであるように命令を分配するように動作可能である請求項1乃至4のいずれか1項記載のアーキテクチャ。
  7. 実行装置の単一命令多重データSIMDアレイ中に配置されている複数の処理素子と、
    複数の実行装置を含み、特定の命令タイプの命令を処理するように動作可能な逐次プロセッサとを具備し、
    逐次プロセッサの実行装置の1つは、逐次プロセッサの少なくとも1つの他の実行装置により処理するためのデータを記憶するように動作するレジスタユニットであり、
    そのレジスタユニットは、それぞれの処理スレッドに関連されるレジスタの複数のセットを含んでいるマイクロプロセッサアーキテクチャ。
  8. 各処理素子は、それぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、各処理素子の1つの実行装置は関連される処理素子の少なくとも1つの他の実行装置により処理するためのデータを記憶するように動作するように動作可能なレジスタユニットであり、
    レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されている請求項7記載のアーキテクチャ。
  9. 逐次プロセッサは複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を実行装置へ分配するように動作可能な命令制御装置を具備し、実行装置は並列にそれぞれの命令を処理するように動作可能である請求項7または8記載のアーキテクチャ。
  10. 各処理素子はそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置を具備し、各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である請求項7、8または9記載のアーキテクチャ。
  11. 単一命令多重データSIMDアレイ中に配置され、それぞれ複数の実行装置を含んでいる複数の処理素子を具備し、実行装置の1つは関連される処理素子の少なくとも1つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
    レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されるマイクロプロセッサアーキテクチャ。
  12. 各処理素子はそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置を具備し、各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である請求項11記載のアーキテクチャ。
  13. 命令タイプはデータ処理およびデータ移動命令を含んでいる請求項9、10、12または13記載のアーキテクチャ。
  14. 命令制御装置は、それぞれの処理スレッドに関連する複数の命令流を受信し、その並列処理のために少なくとも2つの異なる命令流から処理素子の実行素子へ命令を分配するように動作可能である請求項10、12、13または14のいずれか1項記載のアーキテクチャ。
  15. 命令制御装置はそれぞれの処理スレッドに関する複数の命令流を受信し、実行装置へ分配される連続的な命令が異なる命令流からのものであるように処理素子へ命令を分配するように動作可能である請求項10、12、13または14のいずれか1項記載のアーキテクチャ。
  16. 前記レジスタユニットは関連されるレジスタユニットのレジスタ中に記憶されているデータをアクセスするためのアドレス装置を含んでおり、アドレス装置はレジスタアドレスとスレッドインジケータを受信し、受信されたレジスタアドレスとスレッドインジケータ情報にしたがってレジスタユニットのレジスタにアクセスするように動作可能である請求項7乃至15のいずれか1項記載のアーキテクチャ。
  17. 実行装置の単一命令多重データSIMDアレイ中に配置されている複数の処理素子と、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる逐次プロセッサとを含んでいるプロセッサの実行装置において命令を実行する方法において、
    命令流を受信し、
    実行装置が相互に並列にそれぞれの命令を処理するように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる方法。
  18. 各処理素子は複数の実行装置を含み、各処理素子の実行装置は相互に並列にそれぞれの命令を処理するように動作可能である請求項17記載の方法。
  19. 単一命令多重データSIMDアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置をそれぞれ含んでいる複数の処理素子を含むプロセッサの実行装置中で命令を実行する方法において、
    命令流を受信し、
    実行装置が相互に並列にそれぞれの命令を処理するように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる方法。
  20. 命令タイプはデータ処理およびデータ移動命令を含んでいる請求項17乃至19のいずれか1項記載の方法。
  21. 命令流はそれぞれの処理スレッドに関係し、命令はその並列処理のために少なくとも2つの異なる処理スレッドから実行素子へ分配される請求項17乃至20のいずれか1項記載の方法。
  22. 命令流はそれぞれの処理スレッドに関係し、命令は実行装置へ分配される連続的な命令が異なる処理スレッドからのものであるように分配される請求項17乃至21のいずれか1項記載の方法。
  23. 各処理素子は複数の実行装置を含んでいる請求項17乃至22のいずれか1項記載の方法。
  24. プロセッサはさらに複数の実行装置を含む逐次プロセッサを具備している請求項17乃至23のいずれか1項記載の方法。
  25. 命令流は複数の処理スレッドからの命令を含んでいる請求項17乃至24のいずれか1項記載の方法。
  26. 少なくとも2つの実行装置が相互に並列に異なる処理スレッドからの命令を処理するように命令が分配される請求項25記載の方法。
  27. 実行装置の単一命令多重データSIMDアレイ中に配置されている複数の処理素子と、複数の実行装置を含んでいる逐次プロセッサとを具備するマイクロプロセッサアーキテクチャ中のレジスタをアクセスする方法において、前記逐次プロセッサの実行装置の1つは逐次プロセッサの少なくとも1つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、そのレジスタユニットはレジスタの複数のセットを含んでおり、それらのセットはそれぞれの処理スレッドに関連されており、前記方法は、
    スレッド識別子及びレジスタ識別子を含んでいるアクセスリクエストを受信し、
    受信されたスレッド識別子及びレジスタ識別子にしたがって、レジスタの1つをアクセスするステップを含んでいる方法。
  28. 各処理素子は特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含み、各処理素子の1つの実行装置は関連される処理素子の少なくとも1つの他の実行装置により処理されるためのデータを記憶するように動作可能であるレジスタユニットであり、各レジスタユニットはレジスタの複数のセットを含んでおり、それらのセットはそれぞれの処理スレッドに関連され、レジスタの1つのアクセスは処理素子の実行装置のレジスタのアクセスを含んでいる請求項27記載の方法。
  29. 逐次プロセッサは複数の実行装置を含み、方法はさらに、
    命令流を受信し、
    実行装置が相互に並列にそれぞれの命令を処理するように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる請求項28または29記載の方法。
  30. 各処理素子は特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる請求項27、28または29記載の方法。
  31. 単一命令多重データSIMDアレイ中に配置されている複数の処理素子を具備しているマイクロプロセッサアーキテクチャ中のレジスタをアクセスする方法において、各処理素子は複数の実行装置を含んでおり、それらの実行装置の1つは関連される処理素子の少なくとも1つの他の実行装置により処理されるためのデータを記憶するように動作可能であるレジスタユニットであり、そのレジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連され、方法は、
    スレッド識別子及びレジスタ識別子を含んでいるアクセスリクエストを受信し、
    受信されたスレッド識別子及びレジスタ識別子にしたがって、レジスタの1つをアクセスするステップを含んでいる方法。
  32. 各処理素子は、それぞれ特定の命令タイプの命令を処理するように動作可能である複数の実行装置を含んでおり、方法はさらに、
    各処理素子の実行装置が並列でそれぞれの命令を処理するように、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するステップを含んでいる請求項31記載のアーキテクチャ。
  33. 命令タイプはデータ処理およびデータ移動命令を含んでいる請求項27乃至31のいずれか1項記載の方法。
JP2007556643A 2005-02-25 2006-02-07 マイクロプロセッサアーキテクチャ Expired - Fee Related JP5285915B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0504014A GB2423604B (en) 2005-02-25 2005-02-25 Microprocessor architectures
GB0504014.2 2005-02-25
PCT/GB2006/000414 WO2006090108A1 (en) 2005-02-25 2006-02-07 Microprocessor architectures

Publications (2)

Publication Number Publication Date
JP2008532131A true JP2008532131A (ja) 2008-08-14
JP5285915B2 JP5285915B2 (ja) 2013-09-11

Family

ID=34430281

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007556643A Expired - Fee Related JP5285915B2 (ja) 2005-02-25 2006-02-07 マイクロプロセッサアーキテクチャ

Country Status (5)

Country Link
US (1) US8447953B2 (ja)
JP (1) JP5285915B2 (ja)
CN (1) CN101124569B (ja)
GB (3) GB2423604B (ja)
WO (1) WO2006090108A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2918190B1 (fr) * 2007-06-26 2009-09-18 Thales Sa Dispositif d'adressage pour processeur parallele.
US8578387B1 (en) * 2007-07-31 2013-11-05 Nvidia Corporation Dynamic load balancing of instructions for execution by heterogeneous processing engines
GB0809189D0 (en) 2008-05-20 2008-06-25 Aspex Semiconductor Ltd Improvements relating to single instruction multiple data (SIMD) architectures
GB0907559D0 (en) * 2009-05-01 2009-06-10 Optos Plc Improvements relating to processing unit instruction sets
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
CN103294623B (zh) * 2013-03-11 2016-04-27 浙江大学 一种可配置simd系统的多线程调度电路
GB2516995B (en) * 2013-12-18 2015-08-19 Imagination Tech Ltd Task execution in a SIMD processing unit
US10133572B2 (en) 2014-05-02 2018-11-20 Qualcomm Incorporated Techniques for serialized execution in a SIMD processing system
CN105868126B (zh) * 2016-03-23 2018-09-18 中国电子科技集团公司第三十八研究所 一种提高指令高速缓冲存储器命中率的装置及方法
FR3074931B1 (fr) * 2017-12-13 2020-01-03 Vsora Architectures de processeur

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291659A (ja) * 1991-03-20 1992-10-15 Hitachi Ltd 並列コンピュータシステムおよびその動作方法
JPH08147165A (ja) * 1994-11-25 1996-06-07 Fujitsu Ltd マルチコンテキストをサポートするプロセッサおよび処理方法
JP2001273268A (ja) * 2000-03-28 2001-10-05 Ricoh Co Ltd 演算処理装置
WO2003054714A1 (en) * 2001-12-20 2003-07-03 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
JP2004171530A (ja) * 2002-10-16 2004-06-17 Matsushita Electric Ind Co Ltd 並列実行プロセッサ、命令割当方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機
US5465373A (en) * 1993-01-08 1995-11-07 International Business Machines Corporation Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
US5758176A (en) * 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
US5890222A (en) * 1995-01-04 1999-03-30 International Business Machines Corporation Method and system for addressing registers in a data processing unit in an indirect addressing mode
US5649179A (en) * 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
US7313676B2 (en) * 2002-06-26 2007-12-25 Intel Corporation Register renaming for dynamic multi-threading
US6944744B2 (en) * 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US7143267B2 (en) * 2003-04-28 2006-11-28 International Business Machines Corporation Partitioning prefetch registers to prevent at least in part inconsistent prefetch information from being stored in a prefetch register of a multithreading processor
JP2005182499A (ja) * 2003-12-19 2005-07-07 Matsushita Electric Ind Co Ltd 並列演算装置
US20050251649A1 (en) * 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7330964B2 (en) * 2005-11-14 2008-02-12 Texas Instruments Incorporated Microprocessor with independent SIMD loop buffer

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291659A (ja) * 1991-03-20 1992-10-15 Hitachi Ltd 並列コンピュータシステムおよびその動作方法
JPH08147165A (ja) * 1994-11-25 1996-06-07 Fujitsu Ltd マルチコンテキストをサポートするプロセッサおよび処理方法
JP2001273268A (ja) * 2000-03-28 2001-10-05 Ricoh Co Ltd 演算処理装置
WO2003054714A1 (en) * 2001-12-20 2003-07-03 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
JP2004171530A (ja) * 2002-10-16 2004-06-17 Matsushita Electric Ind Co Ltd 並列実行プロセッサ、命令割当方法

Also Published As

Publication number Publication date
GB0708595D0 (en) 2007-06-13
CN101124569B (zh) 2012-03-21
GB2437836B (en) 2009-01-14
JP5285915B2 (ja) 2013-09-11
GB2423604A (en) 2006-08-30
US8447953B2 (en) 2013-05-21
GB2423604B (en) 2007-11-21
WO2006090108A1 (en) 2006-08-31
GB0504014D0 (en) 2005-04-06
GB0708596D0 (en) 2007-06-13
CN101124569A (zh) 2008-02-13
GB2437837A (en) 2007-11-07
US20080209164A1 (en) 2008-08-28
GB2437836A (en) 2007-11-07

Similar Documents

Publication Publication Date Title
JP5285915B2 (ja) マイクロプロセッサアーキテクチャ
US11915057B2 (en) Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric
US11531543B2 (en) Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric
US11567766B2 (en) Control registers to store thread identifiers for threaded loop execution in a self-scheduling reconfigurable computing fabric
US11868163B2 (en) Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric
US11635959B2 (en) Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
US9207995B2 (en) Mechanism to speed-up multithreaded execution by register file write port reallocation
CN100440139C (zh) 双线程处理器和方法
US8006244B2 (en) Controller for multiple instruction thread processors
US20230153258A1 (en) Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric
US7035998B1 (en) Clustering stream and/or instruction queues for multi-streaming processors
US20060265555A1 (en) Methods and apparatus for sharing processor resources
CN103221933A (zh) 从通用寄存器文件向simd寄存器文件移动数据的方法和装置
US20220206869A1 (en) Virtualizing resources of a memory-based execution device
KR20030074047A (ko) 멀티 프로세서 시스템
Giorgi et al. Dta-c: A decoupled multi-threaded architecture for cmp systems
EP2132645B1 (en) A data transfer network and control apparatus for a system with an array of processing elements each either self- or common controlled
US7315935B1 (en) Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
US11875425B2 (en) Implementing heterogeneous wavefronts on a graphics processing unit (GPU)
US6782470B1 (en) Operand queues for streaming data: A processor register file extension
JP2000259609A (ja) データ処理プロセッサおよびシステム
KR100960148B1 (ko) 데이터 프로세싱 회로
JP2003316571A (ja) 並列プロセッサ
US20090249028A1 (en) Processor with internal raster of execution units
JP4743581B2 (ja) データ処理システムおよびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081126

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20101105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110411

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110411

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110921

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120112

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120120

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120920

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121219

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130118

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130522

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130603

R150 Certificate of patent or registration of utility model

Ref document number: 5285915

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees