• 検索結果がありません。

ARMアーキテクチャ向け命令分解型スーパスカラ

N/A
N/A
Protected

Academic year: 2021

シェア "ARMアーキテクチャ向け命令分解型スーパスカラ"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)2006-ARC-168(15). 社団法人情報処理学会研究報告. 2006/6/9. IPSJSIGTechnicalReports. ARMアーキテクチャ向け命令分解型スーパスカラ 中島康彦↑. ↑奈良先端科学技術大学院大学情報科学研究科〒630-O192奈良県生駒市高山町8916-5 E-mail:↑nakashimoisnaist.』p あらまし組み込み用途プロセッサの業界標準であるARMアーキテクチャは,マルチプルロード/ストアなどの複 合命令を備えたCISC型命令セットを採用しており,そのままスーパスカラ化することが難しい.本研究では,ARM 命令セットをⅢSc型内部命令セットに変換してスーパスカラ実行する際に生じる問題点と解決策を示す.また,パ. イプラインシミュレータによる性能評価の結果を報告する. キーワードARM,命令分解,スーパスカラ. ASuperscalarEmployinglnstructionDecompositionfbrARM Architecture YasuhikoNAKASHIMA↑. ↑NaralnstituteofScienceandlbchnologylhkayama-cho8916-5,Ikoma-shi,Nara,630-O192JAPAN Bmail:↑nakashim◎is・naist、jp AbstractARMarchitectureisoneofdefactostandardembeddedprocessorsandemploysCISOtypeinstruction setthatincludescomplexmultipleload/storeandsoonlngenera1,itisdifIiculttoexecuteCISC-typeinstructions inparallelwithsuperscalartechnique・Thisreportshowstheproblemsandthesolutionsfbrsuperscalartechniques. thatdecomposeARMinstructionsmtosomemSC-typeinternalinstructions・Finally,byevaluatingthemodelwith apipelinesimulator,theperfbrmanceandtheanalysisaredisclosed, KeywordsARM,InstructionDecolnposition,Superscalar. りる方法であり,様々なオーバヘッドを伴うことから,複数の. 1.まえがき. 命令セット全てを実用的速度にて動作させる要求には応えられ. 近年,携帯端末機器や組み込み用途システムでは,OSや制. ない.また,過去には,マイクロプログラム方式のシステムに. 御など命令レベル並列度を期待できないプログラムと,マルチ. おいて,マイクロプログラムの入れ換えによる高速エミュレー. メディア処理など高い命令レベル並列度を期待できるプログラ. ションが可能であったものの,最近のマイクロプロセッサでは. ムとを同時に実行しながら,さらに,高いリアルタイム応答性. 一般的ではない.前述のように複数種類のプロセッサを並置す. 能も要求される状況が一般化してきている特に注目すべきは,. るのは,性能維持のために専用ハードウェアによる実現が不可. 同時に実行するプログラムが,必ずしも同一命令セットアーキ. 欠であること,また,従来のヘテロマルチプロセッサシステム. テクチャに基づかない点である.主な理由は,OSや制御には. の延長として実現が比較的容易なためである.最近では,異な. ソフトウェア資産が豊富な業界標準プロセッサが,また,マル. る命令セットアーキテクチャのプロセッサを1チップに混載し. チメディア処理には並列処理性能の高い低電力プロセッサが有. た商用マルチコア型プロセッサも登場しており,今後,複数の. 利なためである.このような状況では,一般に,複数種類のプ. 命令セットを同時に実行できるプロセッサが徐々に一般化して. ロセッサが並置されている.. いくと考えられる.ただし,複数種類のコアを単純並置する方. ところで,命令セットアーキテクチャが異なるプログラムを. 実行する手法として,すでに,再コンパイル,静的命令変換(実. 式には,全体の回路規模が大きくなったり,コア間通信のため. に,ある程度複雑な調停機構が必要になるなどの欠点がある.. 行形式ファイルの命令レベル変換),インタプリタ実行(命令の. 以上のような背景の下,本研究では,単一アーキテクチャを. 逐次解釈実行),動的命令変換(JIT,OCT,OOCT)が知ら. 対象とする従来のマルチスレッド実行機構を拡張して,複数. れている.しかし,これらはいずれもソフトウェアの助けを借. アーキテクチャを同時実行する枠組みを構築し,全体として面. -77-.

(2) 表lSPARCとARMの実行命令数比較. Immcni別In. ALU(+Shifi). condSRCd5IRcg(円「Cl)fhimm肥.Reg(5m). MuItiply. comdqlR。g(。.!)|Rcg(…|…。)…。. Lo2dノSIO配. cond.. Reg(dsl) Reg(basc) Sfi(immノ配艮・HRcg(s”) CoMpCg(。剛)|風.…1㎡(i,mllWPdWlig(S歴). T泡blelComparisonbetweenthenumberofexecutedinstruc- tionsbySPARCandARM.. (a)MiBench(small)の場合. ImmfYli別le. 、-丘一一一●. MiBench 〃. LPニニ已刀一巳. addr=base+ofHict,(base++)+offSct,(++base)+oHSct. Load/StoICMuItiple. comdlRog(…). RegistcrList(l6biO. PCOfT§Cl. Branch(+Link). 図1ARM命令セットの特徴. Fig.1CharacteristicsofARMinstructionset.. SPARC. ARM. (内reg・Windowミス分). (固定小数点演算のみ). basicmath. 58,765k. (7.8%). bitcount. 58,470k. (25.7%). qsort. 20,486k. (0.0%). Sugan. 23,686k. (0.0%). jpeg. 25,688k. (o、1%). typeset. 68,623k. (09%). dijkstra. 67,488k. (1.2%). patricia. 56,636k. (3.8%). 459,662k. (0.2%). 154k. (0.0%) (0.0%). ghostscript. 積や電力遅延積を小さくできる高性能プロセッサアーキテク. stringsearch. チャを模索する.具体的には,命令セットアーキテクチャ毎に. blowfish. 31,040k. 専用の命令変換ステージを設け,各々,共通の内部命令に変換. rijndael. 27,211k. (0.0%). した後に,共通デコードステージ以降のSMT(Simultaneous. sha. 13,316k. (00%). CRC32. 26,009k. (00%). FFT. 26,491k. (3.7%). a。 pcm. 31,177k. (0.0%). Multithreading)機構において命令を混合して並列実行する構 成を仮定するハードウェア共用につきものの,資源競合に伴 う性能低下を抑えつつ,全体の回路規模を縮小することによ. ▲▲. ▲. ▲▲ ▲▲. 9013●DC876425倍. 幾何平均1.19倍. り,総合性能としてはより高性能化できる可能性を探る.本報. baSiCmathとFFTを除く幾何平均0.94倍. 告では,組み込み用途システムにおいて業界標準となっている. (b)SPECint2K(train)の場合. ARMアーキテクチャ[11をとりあげ,まず,多少の浮動小数点. SPARC. ARM. 演算が含まれる一般的な整数系ベンチマークプログラムに対し,. SPECint2K. 浮動小数点演算器を装備しない構成でも十分な性能が得られる. (内reg・Windowミス分). (固定小数点演算のみ). 164 ・gzlp. 49,476,829k(0.0%). ため,命令変換機構が簡単化できることを示す.次に,ARM. 175 ・vpr. 18,283,034k(08%). 命令セットをRISC型内部命令に分解して命令レベル並列実行. 176.9cc. 4,991,055k(2.1%). 機構に組み込む際に考慮すべき点と解決策を示す.さらに,パ. 181.mcf. 10,315,436k(0.5%). 186.Craft y. 34,800,552k(0.7%). イプラインシミュレータ上において整数系ベンチマークプログ ラムを走行させて得た評価結果を示す.. 197 、parser. 12,847,182k(7.0%). 253.perlbmk. 26,443,490k(6.5%). 254 ・gap. 2.ARM命令セットの特徴. ▲. 8,742,972k(7.3%). 255.vortex. 18,593,963k(11.7%). さほど命令レベル並列度を期待できない整数系プログラムの. 256.bzip2. 57,268,422k(00%). 実行には,浮動小数点演算を省いた小さな命令セットがあれば. 300、twolf. 17,635,619k(0.0%). ▲ 021●■□985340倍. 幾何平均1.00倍. よい.ARM命令セットでは,これまで版を重ねた過程におい vpr. て,浮動小数点演算命令がオプションに位置付けられており,. を除く幾何平均0.92倍. 演算ライブラリによる実行が一般的である.また最近の版で. は,浮動小数点演算命令が,一般的なRISCプロセッサと同等. プジェクトを生成した.一方ARMについては,整数除算や浮. のFPA体系から,並列演算が可能なVFP体系[2]に移行して. 動小数点演算命令を生成せず,代わりに演算ライブラリを呼び. おり,高性能計算向けモデルのみが浮動小数点演算機構を備え. 出すコンパイルオプション(gcc-march=armv4‐msoft-Hoat. る状況が明確になっている.. -O1)を用いた.最適化レベルがSPARCよりも低いのは,使. 本章では,32ビットプロセッサの評価に多用される整数系 ベンチマークプログラム(SPECint2KおよびMiBench)を用. 用したgcc-400では最適化レベルをO2にすると,正常なオ ブジェクトが生成されないためである.. いて,多少の浮動小数点演算が含まれる場合でも,浮動小数. さて,上記コンパイルオプションおよび演算ライブラリによ. 点演算器を装備しない構成により,遜色のない性能が得られる. り使用されるARM命令セットの概要を図1に示す.演算命令. ことを示す.比較対象は,代表的な商用RISCであるSPARC. ごとのSビットにより条件コードの更新/無変更を指定し,後. アーキテクチャのうち,32ビットアーキテクチャの最終版であ. 続命令に実行条件を付加(プレデイケート)することにより,分. るV8[31とした.整数乗除算および浮動小数点演算命令を生成. 岐予測ミスペナルテイが伴う条件分岐命令を削減できる.ALU. するコンパイルオプション(gcc-msupersparc-O2)によりオ. 演算命令およびロード/ストア命令は,第2オペランド内にシ. -78-.

(3) 動小数点演算を含まないことは,変換機構の簡単化に大きく貢. 表2RISC型内部命令への分解. TEble2DecompositionintointernalRISC-typeinstructions.. 献する.本章では,図1に示したARM命令をRISC型命令に. 命令数. 分解する際に考慮すべき点について述べる.まず,単一RISC. ARM命令. 内部命令 E. 1. 型命令への対応付けが難しい機能と対策を以下に示す.. SE. 2. [Mml*4. 8. 第2オペランド内シフト機能(ALU/Load/Store):ALU. [Mm]*8m. 17. mm[Mm]*8Em*3. 22. La. 2. ン構成との相性が良く,従来のインプリメントのほとんどがこ のような構成である.しかし,粒度の小さい演算器を並列に配. ALU(シフト無し). ALU(シフト無し) 乗算(32bit*32bit+32bit→32bit) 乗算(32bit*32bit+64bit→64bit) 乗算(符号付32bit*32bit→64bit). LD/ST(sft無,後でbasereg更新) LD/ST(sft無,先にbasereg更新) LD/ST(sft有,後でbasereg更新) LD/ST(sft有,先にbasereg更新) マルチLD/ST(Nは対象reg数) PC相対分岐. 演算やアドレス計算にシフト操作が組み込まれているARM命 令セットは,シフタとALUをカスケード接続するパイプライ. aL. 2. LSa. 3. 置し演算器の利用率向上を図る一般的なスーパスカラ機構には,. SaL. 3. 演算レイテンシが増加し演算の組合せが制約を受けるカスケー. aa[aL}*Na 2*N+3. ド接続は馴染まない.このため,共通内部命令セットではシフ. B. 1. ト操作を独立させ,シフトを含むALU演算やアドレス計算は 2命令に分解して実行するのが妥当である.. フト操作を指定することにより,一般的なRISC命令では2命. 整数積和演算(Multiply):ARMには,符号付き乗算結果. 令になるところを1命令に記述することができる.同様にロー. の64ビットを既存の64ビットに累算する禎和演算など,3オ. ド/ストア命令は,同時にベースレジスタの更新が可能であり,. ペランド形式のRISC命令よりも多くのソースオペランドを必. シフト操作と併せて3命令になるところを1命令に記述でき. 要とする演算がある.3オペランド形式かつ1サイクルにて実. る.さらにマルチプルロード/ストア命令は,ベースレジスタ. 行可能な内部命令(32*8ビット乗算や符号反転など)に分解す. により指定した連続主記憶領域と複数レジスタとのデータ転送. ることにより,一般的なスーパスカラ機構の枠組に納めること. を1命令により記述でき,15番レジスタに対するロード/ス. ができる.. トアがPCへの書き込み/読み出しに対応することと併せて,. マルチプルロード/ストア機能(Load/StoreMultiple):. 関数呼び出し/復帰時の命令数を大幅に削減できる.このよう. 連続主記憶領域と複数レジスタとのデータ転送についても同様. にARM命令は,4バイト固定長でありながら,複雑な機能を. に,複数のロード/ストア命令とペースレジスタ更新命令に分. 1命令に記述可能なCISC型命令である.. 解する.. 表1に実行命令数の比を示す.なお,ARMでは演算ライブ. 実行条件付き命令:実行条件付き命令は,それ自身は複雑な命. ラリにより実行され,SPARCでは1命令により記述可能な命. 令ではない.しかし,先行命令の実行結果を後続命令が待ち合. 令に関し,SPARCが実態以上に有利にならないよう,SPARC. わせるスーパスカラ機構において,先行命令となった実行条件. の整数除算は70,浮動小数点加減乗算は4,単精度除算は16,. 付き命令がデスティネーションレジスタヘの書き込みを抑止す. 倍精度除算および平方根は19と実行レイテンシに相当する重. ると,後続命令の待ち合わせ先を別の先行命令に切り替えなけ. み付けを行って計上している.またSPARCの実行命令数には,. ればならず,複雑な機構が必要となる.このため,実行条件付. プログラムに明示的に含まれない,レジスタウインドウ・オー. き命令については,条件に関わらず依存関係が変化しない命令. バフロー/アンダフローに伴って実行される命令も含まれる. 列に組み替える必要がある.具体的には,. (ウインドウ数は4と仮定).表中の▲はARMの実行命令数が SPARCの1.0倍を超えていること,▲▲は2.0倍を超えてい. (1)i/(conddtfo〃)ADDR1,R2-R3 を表現するARM命令は,作業用レジスタを介する,. ることを示す.MiBenchおよびSPECint2Kのいずれにおいて. (1)ADDR1,R2→Rtmp. も,実行命令数比率の幾何平均はほぼ等しくなり,浮動小数点. (2)j/(condjtio〃)Rfmp→R3elseR3→R3. 演算器を装備しなくても大幅な性能低下は避けられると言える.. の2命令に分解することにより,R3を参照する後続命令が条. また,浮動小数点演算を多用するbasicmathFFT,175.vpr. 件に依らず常に第2の選択命令に依存するようにできる.. を除くと,むしろARMのほうが実行命令数が少なく,複雑な 命令を記述可能なARM命令セットの特徴が現れたと言える.. 以上をまとめると,ARM命令をスーパスカラ実行するため に必要な内部命令セットは次のようになる. シフト演算(S):左右論理シフト右算術シフト,ローテート. 3.RISC型内部命令への分解. 3オペランド形式のALU演算(E):一般的な加減算および. 以上のようなARM命令列と,高い命令レベル並列度を期待 できる命令列(必ずしもARMではない)とを効率良く混合実. 論理演算. 3オペランド形式のアドレス計算(a):ベースレジスタの更. 行するためには,デコードステージ以降に共通内部命令を高速. 新にも使用する一般的な加減算. 実行するスーパスカラ機構を配置し,主に並列度の高いプログ. 積和演算用の基本乗算(M):8通りの32*8ビット乗算(4. ラムに対応しながら,ARM命令については,逐次,共通内部命. 通りのバイト位置と,演算結果の64ビットのうち前半/後半. 令セットに変換して空き演算器に投入するよう命令スケジュー. のいずれを取り出すかの組合せ). リングを行う方式がよいと考えられる.この際,変換対象が浮. 積和演算用の補助演算(、):絶対値,部分積加算,符号絶対. -79-.

(4) 四. ARM命令用フロントエンド. し011. 回国□回□国授□閏I 回国;. ロロ□国 □. 共通命令用パックエンド 図2パイプライン構成. Fig2StructureofpipeIine. 表3パイプラインモデルのパラメタ. は,前述の命令分解を行う.1サイクルに可能な分解は,最大2. TEble3ParametersofpipelmemodeL. 個のARM命令から最大4個の内部命令とする.4命令を超え. 分岐予測(gshare). pht:2bit×4Kentry,PCと. る分解は複数サイクルにより行う.関数呼び出しに用いるPC. 9 hr下位6bitのxorにより選択. 相対分岐命令の場合は,関数呼び出しからの復帰先を予測する. RET-AS. 8entr y. 命令ウィンドウ兼物理レジスタ. 32entry. ストアパッファ. 8entry. キャッシュライン. 64byte. 11キャッシュ. 4wayJ6KB,ミス時10cycle. D1キャッシュ. 4 wayi 16KB,ミス時10cycle. 付けることができるため,リターンアドレススタックの制御が. L2キャッシュ. 4waV,2MB,ミス時100cycle. 難しく,後述するようにヒット率向上が課題である.なお,予. リターンアドレススタック(RET-AS)に次アドレスを格納し, 15番レジスタへの書き込み命令の場合は,復帰とみなしてリ ターンアドレススタックから取り出した予測復帰先アドレスを. IFステージに送る.ただし,ARMでは復帰命令に実行条件を. 測の正誤は後述するRETIREステージにおいて判明し,もし. 誤りの場合はパイプラインをフラッシュする.2段目の命令デ. 値,符号検査,符号反転. ロード/ストア命令(L):4バイト長までのロード/ストア 条件分岐命令(B):PC相対の分岐命令. 選択命令(s):条件コードに基づき2つのソースレジスタか ら1つを選択. 括弧内の略号を用いて,各ARM命令がどのような命令列に. 分解されるかを表2に示す.例えば32*32ビットの符号付き乗 算は,各ソースレジスタの絶対値を求める、,32*8ビットの 乗算を繰り返して64ビットの上位/下位各32ビットを求める Mとmの組(8組),ソースレジスタの符号ビットから演算結 果の符号を求めるE,結果の符号に応じて乗算結果の上位/下. 位の2の補数を求める、(2命令),演算結果の64ビットから. 条件コード(NegativeおよびZero)を生成するmの合計22 命令に分解される.また,各ARM命令の先頭においてalways 以外の実行条件が指定されている場合には,前述の方法により, 汎用レジスタを更新する内部命令をさらに2命令に分解する. なお,言うまでもなく,分解後命令間の中間値の受け渡しには. 汎用レジスタを使用できない.以上に示した命令分解のために, 16本の汎用レジスタ以外に,作業用レジスタを6本設ける.. コード(HOST-D)では,前述の実行条件付き命令の分解を行 う.1サイクルに可能な分解は,最大4個の内部命令から最大4. .個の内部命令とする.以上がARM命令専用のステージである. 続くMAPでは,32ビット幅の3オペランド形式に統一さ れた内部命令について,汎用レジスタと作業用レジスタからな る論理レジスタから,命令ウインドウを兼ねる物理レジスタへ. のマッピングを行う(最大4命令).論理レジスタ数が16本 と一般的なRISCプロセッサの半分であること,また,作業用 レジスタ番号は命令分解のパターン毎に固定され競合しやすい. ことから,リネーミングの効果が高いと考えられる.SEL/RD では,演算器からのバイパスが利用可能かどうかも含めて,依 存関係の待ち合わせおよび命令発行を行う(最大4命令).条 件コードの待ち合わせおよび条件分岐命令の実行も担当する. さて,続く演算器については,分解後の内部命令がなるべく 並列実行され,かつ,バイパスが必要以上に複雑にならないよ う機能をグループ化すると効率的である.例えば表2に示し た乗算では,Mとmを同時実行できれば効果が高い.同様に ロード/ストアを毎サイクル実行するためには,L,S,aの同. 時実行が必要である.一方,SとMの同時実行,および,aと. 4.評価モデルのパイプライン構成. 、とsの同時実行が必要となる局面は出現頻度が低いと予想さ. 図2に,一般的なスーパスカラ実行機構に,これまでに説明. れる.以上をまとめると,「SとM」,「E」,「aと、とs」,「L」. した命令分解機構を埋め込んだパイプライン構成を示す.命令. フェッチ(IF)では,gshare分岐予測機構(BP)と連携して, 命令キャッシュ(I1-cache)の8バイト境界から連続2命令を 命令バッファに取り出す.1段目の命令デコード(ARM-D)で. の合計4グループを各機能ユニット「SFM:シフタおよび乗算 器」,「ALU」,「EAG:アドレス計算と積和補助と選択」JOP1:. キャッシュおよびストアバッファ」に対応付けるのが効率的と 言える.残るWRITEでは,命令ウインドウ兼物理レジスタへ. -80-.

(5) 表4ARM命令タイプの出現頻度(%). 表51PCと演算器動作率(%). TEble4PercentagesofARMinstructiontypes.(%). TEble51PCandoperatmgratioofunits.(%) (a)MiBench(small)の場合. (a)MiBench(small)の燭台. ARMdh内冊命 ARM命内部命. ESE SElMm41Mml8mm..LaaLLSaLaa牢二 {Mml4[Mm18mm.. LaaLLSaSaLaa.. B basic bitco. qSOTt SuFPLn. jpeg types. dijks patri 9 host. ispel strin. blowf. rijnd Bha CRC FFT. adpc. 令IPC行IPC 令IPC令IPC. 1 2 3 5743612809巳●■ 78034651●CO①92 06●■DCの421 01●■DB543 0●■①のら19 026134●■◆B879 2132501678943●中cGB□ 0●印の■ O1o40265●◆P387 4012●□■の7536 40216753c●■98 2. baBicmath bitcount. 1. 1. 12. qsort 昼Unpnm. jpeg. typeset. dijkstra patricia ghostBcript ispelI string8earch. 1. 1. blowfiBh. rijndael sh&. 1. 21. CRC32 FFT. a。 pcm. (b)SPECint2K(train)の靭合. gzup vpr. gCc. mcf.. Craft y parseT. perlb gap vortex. bzip2 twolf. ★. ★. ★★. 512 12. ★. 21. 15 778 939 422 0. (b)SPECint2K(train)の燭合. 4327561●GBb■4032 21634079●512 0 ●◆21 0 ●①の803 0 ●、e10 0712●GB■86950 312 945●■062183 0 ●の 0 021 ■●97385 1209345●862 1259743巳G●C026. ARM命内部命 令IPC令IPC. 164.9Zip 175.vpr. l76薊gcc 181.mCf. 186.crafty 197.parser 253.perlbmk 254 ・gap. 255.vortex. 256.bzip2 300・twolf. の書き込みを行う(最大4命令).RETIREでは,先行命令が. SFM動ALU動BAC動OP1動 作率作率作率作率. 0 ●Ce巳■763582140 10 ●■□◆352896740 52486● 3179 351246079 ●□口凸CD314 34156829白●■7306 21397860●の巳⑪■、152 2. ★★. ★★. 算術平均0611.13 0 611 13 算術平均. 全て完了した命令を命令ウインドウ兼物理レジスタから外して 論理レジスタを更新する(最大4命令).. 01●の■cDB7968543 102●■DBO5943867 4908326●S■17 6734258190●■ 5238410679●の。■巳 12364705●■①の98 2. 0 801 36 算術'平均OBO136 算術平均. ESE SEMml41MmI8mm,LaaLLSSaLaa..: [Mm14[Mm18mm.. LaaLLSaSaLaa.. B. SFM動ALU動EAG動OP1動 作率作率作率作率. 1. 7 933 140 426 1. イクル数比.1回あたり約1サイクルのペナルティが生じる.. 5.性能評価. Flush:同様に分岐予測がミスした場合に,パイプラインをフ. 本章では,以上のようなパイプラインモデルにおいて,表3. ペナルティが生じる.. に示すパラメタを仮定し,SPECint2KおよびMiBenchを走. 行させて得た結果を示す.これまでの仮定と対比させながら分 析するために,以下の項目について測定を行った. ARM命令の各出現頻度:表2に示した各命令パターンの出 現頻度. SFM,ALU,EAG,OP1各動作率:全サイクルに対する, SFM,ALU,EAG,OP1の動作率. ARM命令/内部命令のIPO1サイクルに実行(リタイア) したARM命令数および内部命令数の平均. 分岐予測ミス:実行(リタイア)した全内部命令のうち分岐予 測ミスしたPC相対分岐命令の命令数比率,および,分岐予測 ミス率. RET-ASミス:同様にRET-ASがHITしなかった内部間接. 分岐命令の命令数比率,および,RET-ASミス率 11ミス:ARM命令フェッチ時の11キャッシュミス回数の命. 令数比率,および,ミス率 D1ミス:内部命令オペランドフェッチ時のD1キャッシュミ. ス回数の命令数比率,および,ミス率 L2ミス:ARM命令および内部命令オペランドフェッチ時の L2キヤッシュミス率 Reifbtch:GshareまたはRET-ASによる分岐先予測アドレ. スが次命令でない場合に,命令フェッチをやり直した回数のサ. ラッシュした回数のサイクル数比.1回あたり約7サイクルの. 表4に,リタイアしたARM命令タイプの出現頻度を示す. 各列は表2に示した各命令タイプに対応する.シフト無しALU. 命令(E)がほぼ半数を占め,シフト無しロード/ストア命 令(La,aL),PC相対分岐命令(B),シフト付きALU命令. (SE)がこれに続く.乗算(M,、),および,ロード/ストア. 後にベースレジスタを更新するシフト付き命令(LSa)の頻度 は低いことがわかる.特に乗算の出現頻度が低いことは,ビッ. ト幅の小さい乗算器の繰り返し利用でも性能に大きな影響を与 えないことを示唆している.. 表5に,ARM命令および内部命令のIPCと,各演算器の. 動作率を示す.まずIPCの比から,1個のARM命令が18個 程度の内部命令に分解されていることがわかる.ARM命令の フエッチ速度を2命令/サイクル,内部命令の実行を2倍の4. 命令/サイクルとする構成が妥当であったと言える.ALUと EAGが主に動作しており,SFMの動作率はさほど高くないも. のの,シフタや乗算器の機能を他の演算器に無理なく組み込む ことは難しいため,前述した演算器のグループ化は妥当であっ. たと言える.MiBenchよりもSPECint2KのIPCが低いのは, 後者の方がOP1の比率が高いことから,キャッシュミスが一因 ではないかと推測できる.なお表中の★は,IPCがL1未満で あることを示している.. -81-. さらにパイプラインの挙動を分析するために,表6にパイ.

(6) 表6性能低下の分析(%) TEble6Analysisofperfbrmancedegradation.(%). (a)MiBench(small)の場合 分岐予測ミス. RET-ASミス. 11ニス回数 11ミス回数. Dlミス回数 D1ミス回数. 回数(ミス率). 回数(ミス率). (ミス) (ミス率). (ミス率). basicmath. bitcount. qsort Susan. jpeg. dijkstra patricia. ghostscript ispell stringsearch. ★. blowfish. rijndael sha. Reifetch. ★. 1. 1. ★★. 1. ★ 2. CRC32 FFT. adpcm. Flush. ★0●a■4253681 くI!l2540●13698J 01●◆C5726394 Ilく⑲仰皿巫虹必弘蝕狙、江私pu麺Ⅲ2064795831jJ 0■●、165 I-くl01■●6□巴OG34 01●⑪O■c。532 くlI106O●c■74253 2908463157●■□29 03829674●■51 06457982●ロ■1o 81. ★. ★. typeset. L2ミス率. ★. 1. 1. 9. (b)SPECint2K(train)の場合. 分岐予測ミス. RET-ASミス. 11ニス回数 11ミス回数. D1ミス回数 Dlミス回数. 回数(ミス率). 回数(ミス 回数(ミス率). (ミス (ミス率). (ミス) (ミス率). 164 ・gzlp. 175.vpr. 186.Craft y 197 .parser. 253.perlbmk 254. gap 255.vortex. 256.bzip2 300,twolf. Reifetch. Flush. 0 ●p465731 Iくl3945861●D■27 01●24358 Il1-435278く90●651J 01●□29538 1くIl025●□■4871 104●の76539 I!2くl5438●7601 012596●■巳743 8074956●■13 407358216●■ 1. l76.gcc 181.mCf. L2ミス率. ★. ★★. ★. ★ 1. ★. !. 1. 1幻★. ★★ 1. 2. プラインインタロックの要因および発生頻度を示す.表中の. 導入により実行条件付き命令を効率良くスーパスカラ機構に組. ★は,表5に示した各★に対応しており,IPCの低下に関与. み込めること,1個のARM命令が約1.8個の内部命令に変換. したと考えられるパイプラインインタロックを強調している.. されること.整数系ベンチマークプログラムでは乗算の出現頻. SPECint2Kでは11およびD1のミス回数およびミス率がと. 度が低く,より幅の小さい乗算器の繰り返し利用で十分である. もにMiBenchよりも高く,SPECint2KのIPCが低い主要因. ことを示した.また,さらなる性能向上のためには,実行条件. は,命令およびオペランドキヤッシュミスにあると言える.一. 付き復帰命令に対応可能なリターンアドレススタックを考案し,. 方,分岐予測に関わる機能では,gshareのミス率は低いのに対. ヒット率を向上させる努力が必要であることがわかった.. し,リターンアドレススタックによる復帰先予測のミス率は高. く,パイプラインフラッシュの頻度を押し上げている.1回あ たり約7サイクルのペナルティを伴うパイプラインフラッシュ は性能に大きな影響を与えることから,今後,リターンアドレ. 文献. [11ARMArchitectureReferenceManuaLARMLimited,ARM DDIOlOOE(2000).. [21VFP11VectorFloating-pointCoprocessorTbchnicalReferenceManuaLARMLimited,ARMDDIO274E(2005). [31TheSPARCArchitectureManualVersion8,Revision. ススタックのヒット率向上が課題であると言える.. SAVO80SI9308,SPARCInternationallnc(1992). 6.あとがき 本報告では,ARM命令セットをRISC型命令に分解して. スーパスカラ実行する機構について述べた.特に,選択命令の -82-.

(7)

参照

関連したドキュメント

チューリング機械の原論文 [14]

脱型時期などの違いが強度発現に大きな差を及ぼすと

とディグナーガが考えていると Pind は言うのである(このような見解はダルマキールティなら十分に 可能である). Pind [1999:327]: “The underlying argument seems to be

(自分で感じられ得る[もの])という用例は注目に値する(脚注 24 ).接頭辞の sam は「正しい」と

北区で「子育てメッセ」を企画運営することが初めてで、誰も「完成

[r]

これからはしっかりかもうと 思います。かむことは、そこ まで大事じゃないと思って いたけど、毒消し効果があ