JP3813624B2 - マルチスカラ拡張におけるアドレスマップを最適化するための方法及び機器 - Google Patents

マルチスカラ拡張におけるアドレスマップを最適化するための方法及び機器 Download PDF

Info

Publication number
JP3813624B2
JP3813624B2 JP2005125341A JP2005125341A JP3813624B2 JP 3813624 B2 JP3813624 B2 JP 3813624B2 JP 2005125341 A JP2005125341 A JP 2005125341A JP 2005125341 A JP2005125341 A JP 2005125341A JP 3813624 B2 JP3813624 B2 JP 3813624B2
Authority
JP
Japan
Prior art keywords
memory
location
processing unit
data
functional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005125341A
Other languages
English (en)
Other versions
JP2005310167A (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2005310167A publication Critical patent/JP2005310167A/ja
Application granted granted Critical
Publication of JP3813624B2 publication Critical patent/JP3813624B2/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
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/3824Operand accessing
    • 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
    • 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]
    • 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/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)

Description

本出願は、プロセッサの編成とオペレーションに関し、より具体的には、複数の命令スレッドを独立して実行可能である、複数の演算ユニットを有するプロセッサにおけるメモリの割り当てに関する。
グラフィックレンダリング、モデリング、又は数値解析に関する計算において、例えば、複数の命令スレッドを同時にプロセスすることは、多くの場合は有利なものとなる。例えば、物理的な現象をモデリングすること、又はグラフィカルワールドを構築することに関連する、ある種の状況では、複数の異なるデータセットに関して同じ命令が実行されるようにスレッドを処理することが有利であろう。このような処理は、データの大きな塊、又は独立したデータを複数の実行ユニットに分散して、SIMD(Single Instruction Multiple Data)演算を実行することで、(例えば、数値解析又はモデリングの)処理を行う、という形態をとりえる。
他の形態では、特にスレッドごとに複数の異なる命令を含む場合は、プロセッサの複数の異なる演算ユニットによって、それぞれ独立して複数の異なるプロセススレッドを処理するほうが有利な場合もある。このような実行方法はマルチスカラとして知られる。マルチスカラにおいて、各演算ユニットによって処理されるデータは、他の全ての演算ユニットによるデータ操作の手法とは独立して操作がなされる。
本発明の譲受人に譲渡され、本件と同様に係属中の2001年3月22日に出願の米国出願第09/815,554号にはプロセス環境が記載されており、これは、本発明の背景技術ではあるが、従来技術として認める訳ではない。この出願は参照として本文に包含される。この出願に記載されるように、各プロセッサユニット(PU:Prpcessor Unit)は、複数の命令及びこれらの命令の実行に使用されるデータの格納のために共有メモリの個々に割り当てられた部分を利用する、複数の付加プロセッサユニット(APU:Attached Processor Units)を含む。各APUは、それぞれローカルメモリと複数の命令を実行するための複数の機能ユニットとを含み、各機能ユニットは浮動小数点及び整数ユニットを含む。
しかし、現在の並列処理システムでは、マルチ命令スレッドを実行するために複数のデータをロード及び記録することが求められる。特に、通常は、複数のデータ数値が同じ共有アドレススペース内の複数のロケーションに並列に記録される。これにより、複数のデータ数値が同じメモリパイプラインから要求されるときコンフリクト及びディレイが発生し得ることとなり、また、共有メモリから全ての数値が受信済みになるまで、複数スレッドの実行が全体として遅れることを要求することにもなり得る。
本発明は、SIMDプロセスをサポートするプロセッサのマルチスカラ拡張のようなマルチスレッドプロッセッシング環境にアドレスマップを最適化するためのシステム及び方法を提供することによって、これらの、又、他の問題を解決する。
本発明の一形態において、マルチプロセッサスレッドにおける複数の命令の並列演算において演算する複数のデータ数値に関する複数のアドレスマップを最適化するためのシステムが提供される。好適に、そのようなシステムは共有メモリの使用に起因するメモリコンフリクトとスレッドの遅れを減少する。
本発明のもう1つの態様において、複数のアドレスマップをジグザク配列あるいはスタガ配列に割り当てるための方法が与えられる。これは、シナジスティックプロセッシングユニット(Synergistic Processing Unit:SPU、相乗的プロセッシングユニットとも称される)及び/又はプロセッシングユニットの複数の機能ユニットと複数のローカルストア間にプロセッサとメモリロードを均一に割り当てるために、複数の命令の並列演算中に用いられる複数のデータ数値をマルチプロセッサスレッドに配布する。
本発明のもう1つの形態において、複数のアドレスマップをジグザグ配列に割り当てるための方法が与えられる。これはメモリにおけるデータの実質的な再配置を要求することなしに、SIMDプロセッシングモードからマルチスカラプロセスモードに容易に遷移することを可能にする。
本発明のもう1つの形態によれば、プロセッサの複数かつn個の機能ユニットによって命令を実行するためにある方法が与えられ、このn個の機能ユニットは、SIMD方法での複数の命令を実行可能であり、マルチスカラ方法での複数の命令を実行可能である。
本発明の好適な形態によれば、そのような方法は、共有メモリから1又はそれ以上のレジスタにデータをロードすることを含み、各レジスタは、複数の機能ユニットの特定的な機能ユニットによって演算されるためのデータを保持する。その後、あるオペレーションが以下の二つのうちから実行される。即ち、複数かつn個の機能ユニット全部のレジスタに保持されるデータに対する前記複数かつn個の機能ユニットによる命令を実行するか、x個(0<x<n)の機能ユニットによる1つ以上の命令を前記x個の機能ユニットに属するとともに前記機能ユニットの数であるxに対応した数であるx個のレジスタにロードされたデータに対して実行するか、のうちから実行される。
その後、前記共有メモリの対応する領域における前記共有メモリのロケーションに、前記レジスタに対応する各々に保持された第2データを記録し、前記ロケーションは、更に、相互に垂直にオフセットされているものとなる。
説明目的のため、現在、好適とされている形式が図面に示される。しかし、本発明は、示されている精密な配置及び手段に制限されないことが理解されよう。
図1に本発明の1又はそれ以上の実施形態に従ったマルチプロセスシステム100を示す。なお、図面において、同様の要素には同様の符号を付した。マルチプロセスシステム100は、システムバス130を介してDRAMのような共有メモリ120に接続される複数のプロセッシングユニット110(いくつ用いられてもよい)を含む。共有メモリ120は、必ずしもDRAMである必要がないことに注目されたい。実際上、共有メモリは、知られ得る全ての、又は以下記載の開発されたテクノロジーを用いて形成され得る。各プロセッシングユニット110は、1又はそれ以上のシナジスティックプロセッシングユニット(SPU)140と有利に関連している。これらのSPU140は、各々が少なくとも1つのローカルストア(LS:Local Store)150と関連付けられ、ダイレクトメモリアクセスチャネル(DMAC:Direct Memory Access Channel)160を通じて共有メモリ120の定義される領域に対するアクセスを有する。各PU110は、PUバス170を介してサブコンポーネントと通信を行う。マルチプロセッシングシステム100は、ローカルI/O ASICチャネル180を介して他の複数のマルチプロセッシングシステム又はコンピュータコンポーネントとローカルに通信を行うが、他の通信標準及び通信チャネルが用いられてもよい。ネットワーク通信は、1又はそれ以上のネットワークインターフェースカード(NIC:Network Interface Card)190によって実行される。これには、例えば、イーサネットTM(EthernetTM)、インフィニバンドInfinibandTM [インフィニバンドトレードアソシエーション(Infiniband Trade Association)社の商標]、ワイヤレス、又は他の現在存在する又は後に開発されるネットワークテクノロジーを含む。複数のNIC190を、マルチプロセッシングシステム100に与えてもよく、あるいは、1又はそれ以上の個々のプロセッシングユニット110又はSPUs140に関連づけてもよい。
入力される命令は、特定的なPU110によって処理され、これらの命令は、複数のLS150と共有メモリ120を用いて実行されるよう、1又はそれ以上のSPUs140に配布される。PU110の各々と複数のSPU140によって形成される複数のユニットは、“広帯域エンジン(BE:broadband engine)”115とも称される。
図2は、本発明の実施形態に従ったSPU編成を表すシステム概略図である。SPU140は、命令処理素子(PROC)200とローカルストレージレジスタ(REG)210を含む。PROC200とREG210は、マルチスレッド、即ち、命令のマルチシーケンスをプロセスする。従って、4つのスレッドがプロセスされているとき、命令処理素子200は、命令を機能ユニットの各々である265a、265b、265c、及び265dによって実行されるオペレーションに変換する。レジスタ210は、そのような時、有効なサブレジスタ215a、215b、215c及び215dを形成する。SIMD演算が実行されるとき、機能ユニット265a〜dの各々は、異なるデータに対してではあるが、同じ命令を、レジスタ215a、215b、215c、及び215dに保持されるデータに対して実行する。
複数の命令を実行するために、SPU140は、更に、浮動小数点オペレーションを実行するための浮動小数点ユニット(FPU:Floating Poingt units)220の一セット、整数オペレーションを実行するための複数の整数ユニット(IU:Integer units)230の一セットを含む。複数のローカルストア(LS:Local Stor)の一セットが、SPU140によって共有メモリ120(図1)にアクセスするために与えられる。4つの機能ユニット265a、265b、265c、及び265dを有するSPU140がマルチスレッドを実行する際、4スレッドまで処理可能であるようにSPU140のFPU220とIU230の各々が、総合して“機能ユニット”260を形成する。この場合、機能ユニット265a、265b、265c、及び265dの各々は、対応するFPU225a、225b、225c、及び225dと、又、IU235a、235b、235c、及び235dを含み、ローカルストアLS245a、245b、245c、及び245dにアクセスする。各機能ユニット265a〜dは、機能ユニットFU265a〜dをプロセッシング素子200に電気的に結合するFUバス250を用いる。通常、SPU140は、SPU140における機能ユニット260の数にある個別のスレッド数と同数までマルチスレッドし得る。
図3は、SIMD演算環境におけるスロット毎のマルチバンクメモリ割り当てを表す機能概略図である。この実施形態において、機能SPUを示す表示300は、機能ユニット305a、305b、305c、及び305dを含み、各々が、対応する命令315a、315b、315c、315d、315e、及び315fと同様の実行シーケンス310を実行する。命令315a〜315fと図表における機能ユニット305a〜305dの交点は、命令315a〜315fによってオペレートされるレジスタを表す。
同様に、メモリ325は、4つのローカルストア325a、325b、325c、及び325dとして編成され、1つのローカルストアが各機能ユニット、例えば機能ユニット305aによって用いられる。この際、この実施形態において、メモリ330における4つのローカルストア325a〜325dにわたるいずれの行も、それらに記録された4つの32ビット値を処理するための128ビット境界335を形成し得るようにされている。それ故、命令315bでX値がロードされる。なお、スレッド数をこの例とは異なるものとしてもよく、また、境界335及び値のサイズも、異なる用いてもよい。
メモリ325において、128ビットメモリ行340は、4つのデータ値、即ち、行340におけるLSa(325a)に記録されるXa(340a)値、行340におけるLSb(325b)に記録されるXb(340b)値、行340におけるLSc(325c)に記録されるXc(340c)値、行340におけるLSd(325c)に記録されるXd(340d)値を含む。各32ビット値は、プロセッサオペレーションのためにそれぞれ対応するLS及び行ロケーション340a、340b、340c及び340dからプロセスレジスタ320a、320b、320c、320dにロードされる(345a、345b、345c、345d)。付加のプロセッサ命令315c及び315dの後、命令315eが、共有メモリの対応する機能ユニット305a〜305dのレジスタ350a、350b、350c、及び350d各々のX値をメモリ行360に記録しようと試みる。しかし、この場合、LSa325aが、既にZ値をロケーション360aに記録済みとなっている。
従って、SPUがレジスタ値350a、350b、350c、及び350dを取得して(355a、355b、355c、355d)共有メモリ行360に記録しようと試みても、4つの32ビット値Ya350a、Yb350b、Yc350c及びYd350dの全128ビットの行を記録し得ない。Z値360aが既に存在するので、行360の全128ビットは完全には空いていないからである。Yd値をメモリ行370の別のロケーション375に記録することもできるが、この場合、シングル並列ロード又はストアオペレーションを実行するためには、マルチデータ値の128ビット境界を破壊し、メモリ360,370の複数の行をプロセスすることが要求される。128ビット境界にわたるこのような並列ロード又はストアオペレーションは、並列アクセスというよりはむしろ、シーケンシャルアクセスを要求する。これは、行340のような隣接する行に一度にロード及び記録するのに比較すると、かなり非効率的である。従って、これは、回避されなければならない。
図4は、マルチスレッドされたプロセッシング環境におけるSIMD演算におけるスレッドデータ設定割り当ての一実施形態を表す機能概略図である。前述したように機能SPU表示400は、4つの機能ユニット405a、405b、405c、及び405dを含み、各々は例示的なプロセッサ命令415a、415b、415c、415d、415e、及び415fと同様の実行シーケンス410を実行する。命令415a〜fと図表における機能ユニット405a〜dの交点は、機能ユニット405a〜dによってオペレートされるレジスタを表す。前述したように、実行命令415bで、X値セットがレジスタ420a、420b、420c、及び420dにロードされる。実行命令415aでY値セットはレジスタ430a、430b、430c、430dから共有メモリ445に記録される。
機能共有メモリ表示445が、メモリアドレス440に関して示される。前述したSIMDメモリ領域において、メモリがローカルストアLSa 445a、LSb 445b、LSc 445c、及びLSd 445dに対して割り当てられ、アクセスされる一方、この場合、機能ユニット405a、405b、405c、及び405dは直接、対応するスレッドデータセット460a、460b、460c及び460dのストレージにダイレクトメモリ領域を割り当てる。各スレッドデータのセット460a〜dは、ブロック境界サイズで配列され、この場合、128ビット境界450が4つのローカルストア445a〜dによって与えられる。ブロック境界サイズは、2形式の通常のブロック境界のいずれでもよいが、通常は、少なくとも16ビットサイズ又はそれ以上である。
それ故、X値セットをレジスタ420a〜dにロードする命令415bの実行で、Xa値470aはスレッドaデータセット460aからレジスタ420aにロードされ(425a)、Xb値470bはスレッドbデータセット460bからレジスタ420bにロードされ(425b)、Xc値470cはスレッドcデータセット460cからレジスタ420cにロードされ(425c)、及びXd値470dは、スレッドdデータセット460dからレジスタ420dにロードされる(425d)。同様に、Y値セットをレジスタ450a〜450dから共有メモリ445に記録する命令415eの実行で、レジスタ450aのコンテンツは、スレッドaデータセット460aにYa値480aとして記録され(435)、レジスタ450dのコンテンツは、スレッドdデータセット460dにYd値480dとして記録される(435d)。
このメモリアクセス領域において、数値ロケーションは、特定的に関連されるローカルストアに相互に関連せず、むしろマルチスカラプロセッシング環境における特定的な機能ユニットに割り当てられる特定的なスレッドデータセットに相互に関連している。
図5は、本発明の実施形態に従った等ブロックマルチバンクメモリ割り当て方法の機能概略図を表す。この場合も前述したように、機能SPU表示500は、4つの機能ユニット505a、505b、505c、及び505dを含み、各々は、例示的な命令515a、515b、515c、515d、515e,及び515fの同様の実行シーケンス510を実行する。図表における命令515a〜515fと機能ユニット505a〜505dの交点は、機能ユニット505a〜505dによってオペレートされるレジスタを表す。前述したように実行命令515bにて、X値セットがレジスタ520a、520b、520c、及び520dにロードされる。Y値セットは、実行命令515eでレジスタ530a、530b、530c、及び530dから共有メモリ545に記録される。
ローカルストア(図示されない)又はスレッドデータセット(図示されない)を介したストレージではなく、共有メモリは外部から所定のサイズの複数のメモリバンク550a、550b、550c、及び550dに区分される。バンクのサイズは、メモリアドレス540の既知の数を表し、一般的に2形式の通常のサイズ(一般的に少なくとも16ビット又はそれ以上)のセグメントに割り当てられ、一実施形態では、共有メモリの128ビット境界545に適合するよう128ビットのセグメントに割り当てられる。
それ故、X値セットをレジスタ520a〜520dにロードする命令515bの実行で、Xa値560aは、メモリバンクa550aからレジスタ520aにロードされ(525a)、Xb値560bは、メモリバンクb550bからレジスタ520bにロードされ(525b)、Xc値560cは、メモリバンクc550cからレジスタ520cにロードされ(525c)、Xd値560dは、メモリバンクd550dからレジスタ520dにロードされる(525d)。同様に、レジスタ530aは、Y値セットをレジスタ530a〜dから共有メモリに記録する命令515eの命令で、Ya値としてメモリバンクa550aに記録され(535a)、レジスタ530bは、Yb値570bとしてメモリバンクb550bに記録され(535b)、レジスタ530cは、Yc値570cとしてメモリバンクc550cに記録され(535c)、及びレジスタ530dは、Yd値570dとしてメモリバンクd550dに記録される(535d)。
各スレッドに関して所定のメモリバンクを与えることによって、図3に示す連続メモリアクセスのコンフリクトだけでなくメモリバンク間のコンフリクトも回避される。しかし、メモリ割り当ては、バンクのサイズに極めて制限され、例えばフレキシブル性が低くなる。加えて、図5に描かれている方法は、図3と4に示される他のメモリ管理方法と互換性があるように再編成されることが要求される。
図6は、本発明に従ってスタガ配列されるメモリ割り当ての実施形態を表す機能概略図である。そのようなメモリ割り当ては、並列に実行可能な命令シーケンスのマルチスカラの実行と同様に効率的なSIMDを得やすくする。マルチスカラオペレーション、及びそのようなオペレーションをコントロールするためのシステムと方法は、2004年4月22日に出願で、本発明の譲受人に譲渡された、同時係属中の米国特許仮出願番号60/564673号(発明の名称:“Multi-Scalar Extension for SIMD Instruction Set Processors”)に記載される。この出願は、本文に参照として包含される。
図3、4、及び図5に関連して説明された従来技術の方法の各々は、SIMD演算とマルチスカラ実行を切り替えるとき、ポテンシャルバンクコンフリクトに影響されるか、データの再配列を要求されるかの何れかである。しかし、スタガ配列されるメモリ割り当ては、図6に示されるように、データを再配列することなくSIMD演算モードとマルチスカラ実行モード間の切り替えを可能にし、又、スレッド実行を遅らせ得るスレッド/ロジカルストアのコンフリクトを回避する。
前述したように、機能SPU表示600は、4つの機能ユニット605a、605b、605c、及び605dを含み、各々は命令615a、615b、615c、615d、615e、及び615fである同様の実行シーケンス610を実行するために命令スレッドPROCa〜dを実行する。図表における6命令615a〜fと4機能ユニット605a〜dの交点は、6命令615a〜fによってオペレートされるレジスタを表す。前述したように、Xa値、Xb値、Xc値、及びXd値のセットは、実行命令615bでレジスタ620a、620b、620c、及び620dにロードされる。Ya値、Yb値、Yc値、及びYd値のセットは、実行命令615eでレジスタ630a、630b、630c、及び630dからメモリ640の対応するロケーションに記録される。
メモリ640は、各々が32ビット幅を有する4領域又はバンク640a、640b、640c、及び640dを含み、それ故、128ビット境界650へのシングル命令メモリがアクセスすることを可能する。メモリ640の機能図は、行及び配列図におけるメモリアドレス645を含む。機能ユニット605a〜d、及び対応するスレッドPROCa〜dに関するメモリロケーションは、ベースアドレス及びオフセットに基づいて生成される。それ故、第1機能ユニット605aに関する第1メモリロケーション660は、利用可能なメモリ行におけるメモリ領域640aにおいて開始するゼロオフセット値で生成される。第2機能ユニット605bに関して、メモリの利用可能な異なる行において、第2メモリロケーションが、メモリの2行分プラス一つの32ビットメモリブロックの垂直オフセット665として生成される。
メモリロケーション670は、オフセット665を考慮し、4メモリ領域全て、例えば、メモリバンク640a〜dが確実に用いられる一方で、特定的なメモリ数値のロケーション(図5に示されるような同様のメモリバンクに対しても、又は図4に示されるような複数のスレッドデータセットに対しても、概して同様である)は各特定的なメモリロケーションに対して内部的に同じ状態のままとなり、更にその一方で、共有メモリ640に対してはスタガ配列とされるよう、メモリの次の行にも重なる部分があるようになっている。このようにして、更なる垂直オフセットされたメモリロケーション680と690は、それぞれ機能ユニット605cと605dに対応するように生成され、各々がオフセットブロック675と685を使用する。更に、ブロック700と710、オフセット695と705(ここでは用いられていないが)が、本願に用いられる技術をジグザグ配列するメモリ割り当てを明瞭に示すために示される。
それ故、実行命令615bで共有メモリからX値セットを対応するプロセッサスレッドにロードし、Xa値720aが、機能ユニット605aと関連付けられるメモリロケーション660からレジスタ620aにロードされる(625a)。同様に、Xb値720b、Xc値720c、及びXd値720dは、メモリロケーション670、680、690からそれぞれ対応するレジスタ620b、620c及び620dにロードされる(625a、625b、625c)。
このようにしてデータがSIMD演算のために求められると、データは4領域640a〜640dから共有メモリの垂直にオフセットされている複数ロケーションの4レジスタ620a〜d全部に同時にロードされる。一方では、データがマルチスカラプロセッシングのために求められると、バックトゥバックシーケンシャルアクセスが、データを機能ユニットの個々のレジスタにロードするために与えられる。例えば、データXb値は最初のアクセスでオフセットロケーション720bからレジスタ620bにロードされる。次のバックトゥバックシーケンシャルアクセスで、例えば、Xa値のような別のデータ値がロケーション720aからレジスタ620bにロードされ得るし、メモリがそのような複数のバックトゥバックシーケンシャルアクセスを可能にする。前述の値がメモリの複数の異なる領域(バンク)、複数の異なる垂直オフセットロケーションに位置しているからである。
同様に、Y値セットを記録する命令615eの実行で、レジスタ数値630a、630b、630c、及び630dが対応するメモリ領域660,670,680,及び690における対応するロケーションYa、Yb、Yc、及びYdに記録される。
本発明の一形態では、内部スレッドメモリ領域のコンフリクトなしに、シングル命令マルチデータスレッド(シムド:SIMD)とマルチスカラスレッドをマルチスレッドプロセスするために用いられるように、かつ、SIMDモードからマルチスカラモードへの遷移を可能するために、使用される共有メモリが開示される。この共有メモリのメモリ領域は、ジグザク配置されるようアドレスマッピングされる。
なお、本発明を特定的な実施形態に関連して説明したが、これらの実施形態は本発明の原則とアプリケーションを単に説明する目的のためであることが理解されよう。従って、多くの改変が例示的な実施形態に対して行われ、他の配置が添付された請求項に限定された本発明の趣旨の範囲内において考案されてよいことが理解されよう。
本発明の実施形態に従ったマルチスレッド処理環境を表すシステム概略図である。 本発明の一実施形態に従ったシナジスティックプロセッシングユニットを表すシステム概略図である。 本発明の一実施形態に従った均一のスロットマルチバンクメモリ配置方法を表す機能概略図である。 本発明の一実施形態に従ったスレッドデータセットの配置方法を表す機能概略図である。 本発明の一実施形態に従った均一のブロックマルチバンクメモリ配置方法を表す機能概略図である。 本発明の一実施形態に従ったスタッガーされるメモリ配置方法を表す機能概略図である。
符号の説明
100 マルチプロセスシステム
110 プロセッシングユニット
120 共有メモリ
128 共有メモリ
130 システムバス
180 チャネル
200 命令処理素子
210 レジスタ
250 バス
260 機能ユニット
265a〜d 機能ユニット

Claims (8)

  1. プロセッサの複数の機能ユニットによって実行するためのデータと命令を保持するための複数のメモリ領域を割り当てるための方法であって、
    前記プロセッサの複数かつn個の機能ユニットの対応する1つにメモリの複数かつn個の領域の対応する1つを割り当て、各機能ユニットは、レジスタを有し、
    前記複数のメモリ領域の第1メモリ領域内ロケーションにデータを記録し、このロケーションは、前記複数のメモリ領域の第2のメモリ領域内のデータが記録されるロケーションから垂直にオフセットされているものであり、
    前記垂直にオフセットされたロケーションは、ベースアドレスに関連するオフセットによって定められ、前記ベースアドレスは、前記機能ユニットの第1機能ユニットに関する前記ロケーションに対応する、
    方法。
  2. 更に、前記メモリの前記n個の領域の前記垂直にオフセットされたロケーションのうちから、同時に前記プロセッサの前記n個の機能ユニットの全部のレジスタへと前記記録されたデータをロードすることを含む、
    請求項記載の方法。
  3. 更に、データをシーケンシャルに前記メモリの個々のロケーションから前記プロセッサにおける前記機能ユニットの前記レジスタの対応する個々のロケーションにロードし、前記メモリの前記対応する領域は、前記メモリの前記対応する前記ロケーションに対するシーケンシャルアクセスを可能にする、
    請求項1記載の方法。
  4. 前記垂直にオフセットされたロケーションは、前記共有メモリの少なくとも1つの行だけオフセットされている、
    請求項記載の方法。
  5. マルチデータセットにシングル命令セットのマルチスレッドを実行するためのシステムであって、
    システムバスを含み、
    前記システムバスに少なくとも1つのプロセッシングユニットを含み、各プロセッシングユニットは、プロセッシングユニットバス、前記プロセッシングユニットバスのダイレクトメモリアクセスコントローラ、前記プロセッシングユニットバスのプロセッサ、前記プロセッシングユニットバスの複数のシナジスティックプロセッシングユニットを含み、各シナジスティックプロセッシングユニットは、レジスタ、命令プロセッサ、及び複数の機能ユニットを含み、各前記機能ユニットは、ローカルストア、浮動小数点ユニット、及び整数ユニットを含み、
    前記システムバスのローカル出入力チャネルを含み、
    前記システムバスに接続されるネットワークインターフェースを含み、
    前記システムバスに接続される共有メモリを含み、前記共有メモリは、前記プロセッシングユニットの前記シナジスティックプロセッシングユニットの前記機能ユニットによって複数のメモリ領域に区分され、前記機能ユニットの各々のデータは、前記メモリ領域の異なるロケーションに記録され、前記ロケーションは、更に、前記機能ユニットに基づいて相互に垂直にオフセットされており、
    前記垂直にオフセットされたロケーションは、ベースアドレスに関連するオフセットによって定められ、前記ベースアドレスは、前記複数の機能ユニットのうちの第1機能ユニットに関する前記ロケーションに対応し、
    前記メモリ領域は、前記プロセッシングユニットの前記シナジスティックプロセッシングユニットの前記機能ユニットと、前記プロセッシングユニットバス及び前記システムバスを通じ、前記ローカルストア及び前記ディレクトメモリアクセスコントローラを介して通信を行う、
    システム。
  6. 前記ロケーションは、前記共有メモリの少なくとも1つの行だけ垂直にオフセットされている、
    請求項記載のシステム。
  7. 前記シナジスティックプロセッシングユニットは、更に、前記共有メモリの対応する領域からデータを前記プロセッサの前記プロセッシングユニットの全てのレジスタに同時にデータをロードし、前記メモリの前記対応する領域は、前記垂直にオフセットされたロケーションに同時にアクセスすることを可能にする、
    請求項記載のシステム。
  8. 前記シナジスティックプロセッシングユニットは、更に、データをバックツーバックかつシーケンシャルに前記共有メモリの個々のロケーションから前記プロセッサの前記機能ユニットの前記レジスタの対応する個々のロケーションにロードし、前記メモリの前記対応する領域は、前記メモリの前記対応する前記ロケーションに対するバックトゥバックのシーケンシャルアクセスを可能にする、
    請求項記載のシステム。
JP2005125341A 2004-04-23 2005-04-22 マルチスカラ拡張におけるアドレスマップを最適化するための方法及び機器 Expired - Fee Related JP3813624B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US56484304P 2004-04-23 2004-04-23

Publications (2)

Publication Number Publication Date
JP2005310167A JP2005310167A (ja) 2005-11-04
JP3813624B2 true JP3813624B2 (ja) 2006-08-23

Family

ID=34966387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005125341A Expired - Fee Related JP3813624B2 (ja) 2004-04-23 2005-04-22 マルチスカラ拡張におけるアドレスマップを最適化するための方法及び機器

Country Status (3)

Country Link
US (1) US20050251649A1 (ja)
JP (1) JP3813624B2 (ja)
WO (1) WO2005103887A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042502B2 (en) 2014-12-24 2021-06-22 Samsung Electronics Co., Ltd. Vector processing core shared by a plurality of scalar processing cores for scheduling and executing vector instructions

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2437837A (en) * 2005-02-25 2007-11-07 Clearspeed Technology Plc Microprocessor architecture
US7567567B2 (en) 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
WO2006123822A1 (ja) * 2005-05-20 2006-11-23 Sony Corporation 信号処理装置
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
US7750915B1 (en) * 2005-12-19 2010-07-06 Nvidia Corporation Concurrent access of data elements stored across multiple banks in a shared memory resource
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2014028B1 (en) * 2006-04-21 2010-11-10 Oracle America, Inc. Asymmetrical processing for networking functions and data path offload
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US7809925B2 (en) * 2007-12-07 2010-10-05 International Business Machines Corporation Processing unit incorporating vectorizable execution unit
WO2009145917A1 (en) 2008-05-30 2009-12-03 Advanced Micro Devices, Inc. Local and global data share
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175862A (en) * 1989-12-29 1992-12-29 Supercomputer Systems Limited Partnership Method and apparatus for a special purpose arithmetic boolean unit
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
EP0931290A1 (en) * 1997-03-21 1999-07-28 International Business Machines Corporation Address mapping for system memory
US6460134B1 (en) * 1997-12-03 2002-10-01 Intrinsity, Inc. Method and apparatus for a late pipeline enhanced floating point unit
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6233662B1 (en) * 1999-04-26 2001-05-15 Hewlett-Packard Company Method and apparatus for interleaving memory across computer memory banks
AU2001245520A1 (en) * 2000-03-08 2001-09-17 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files
US6665768B1 (en) * 2000-10-12 2003-12-16 Chipwrights Design, Inc. Table look-up operation for SIMD processors with interleaved memory systems
US6826662B2 (en) * 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP2003196259A (ja) * 2001-12-27 2003-07-11 Sharp Corp データ駆動型情報処理装置およびデータ処理方法
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
US7143264B2 (en) * 2002-10-10 2006-11-28 Intel Corporation Apparatus and method for performing data access in accordance with memory access patterns
US7136987B2 (en) * 2004-03-30 2006-11-14 Intel Corporation Memory configuration apparatus, systems, and methods

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042502B2 (en) 2014-12-24 2021-06-22 Samsung Electronics Co., Ltd. Vector processing core shared by a plurality of scalar processing cores for scheduling and executing vector instructions

Also Published As

Publication number Publication date
WO2005103887A2 (en) 2005-11-03
JP2005310167A (ja) 2005-11-04
WO2005103887A3 (en) 2006-09-21
US20050251649A1 (en) 2005-11-10

Similar Documents

Publication Publication Date Title
JP3813624B2 (ja) マルチスカラ拡張におけるアドレスマップを最適化するための方法及び機器
KR100991912B1 (ko) 토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치
KR101303119B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
EP2159702B1 (en) Cache control device and control method
JP4187720B2 (ja) マルチスレッド・プロセッサにおけるレジスタ・ファイルのポートを削減するための方法および装置
JP3098071B2 (ja) 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム
EP1550032B1 (en) Method and apparatus for thread-based memory access in a multithreaded processor
US5457789A (en) Method and apparatus for performing memory protection operations in a single instruction multiple data system
US5003458A (en) Suspended instruction restart processing system based on a checkpoint microprogram address
JPH0472272B2 (ja)
US20060092161A1 (en) Method and apparatus for management of bit plane resources
US20150100754A1 (en) Data processing apparatus and method for performing speculative vector access operations
US6003126A (en) Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
KR20180033527A (ko) 레지스터 뱅크에 저장된 데이터 요소들의 하나 이상의 벡터와 메모리 사이에서 복수의 데이터 구조를 전송하는 장치 및 방법
JPH09138778A (ja) セマフォ命令用のセマフォ・バッファを用いた装置と方法
JPH06195229A (ja) パイプラインプロセッサにおける割込み処理のための装置
US7441099B2 (en) Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
US20170220346A1 (en) Method and apparatus for inter-lane thread migration
JP2023554311A (ja) レジスタのニアメモリ決定
US8001358B2 (en) Microprocessor and method of processing data including peak value candidate selecting part and peak value calculating part
WO2019126787A2 (en) A multiple-pipeline architecture with special number detection
JP2824484B2 (ja) パイプライン処理計算機
JPS63168762A (ja) マルチプロセツサ起動装置
JPS6049952B2 (ja) メモリ制御装置のビジ−制御方式
US5963498A (en) Method for controlling memory address of digital signal processor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060501

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: 20060530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060531

R150 Certificate of patent or registration of utility model

Ref document number: 3813624

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100609

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100609

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110609

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110609

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120609

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120609

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130609

Year of fee payment: 7

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

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