FAreg,FBreg,FCregが 実 数 格 納 用 の レ ジ ス タ で,こ れ ら はT800で は ス タ ッ ク 構 造 だ
ドROMにFPU命 令 の 実 行 状 態 を 定 義 す る こ とで,FPU用 の ス テ ー トマ シ ンが 省 略 で き る た め で あ る.四 則 演 算 な どの 時 間 が か か る演 算 を 行 う際 に は,FPU制 御 部 はCPUの マ イ ク ロ コー ドROM制 御 部 に に計 算 中 で あ る こ とを 示 すfpbusy信 号 を送 る.fperrは 実 数 演 算 の 際 の 例 外 発 生 をCPUに 伝 え る た め の 信 号 で,エ ラー フ ラ グ レ ジ ス タで あ るerrに 接 続 さ れ る.
デ コー ド方 式 を 採 用 した 理 由 は,FPUを マ イ ク ロ コー一ドROMで 直 接 制 御 して しま う とそ の 制 御 情 報 は既 存 の命 令 に は 関 係 ない 情 報 な の で,図5.3の 斜 線 領 域 が 無 駄 に な っ て しま うか らで あ る.
無 駄 に → 日
な って しまう} 787
FPU命 令 用 の 状 態
図5.3:マ イ ク ロ コ ー ドROMに よ るFPU制 御
こ の 実 装 に お い て マ イ ク ロ コ ー ドROM制 御 部 か ら来 る 信 号 を,改 め てFPU制 御 部 で デ コ ー ドす る た め 回 路 の 動 作 速 度 が50MHzを 下 回 る 可 能 性 が あ っ た が,TimingAnalyzer20で 解 析 し た と こ ろ50MHzで 動 作 す る こ と を 確 認 し た(図5.4).
Tユ皿1nσ3㎜arY=
T■ 皿1n肛eエ=o〔3:0Sco【e;0〔5etupノ 班ax呂0,Hold;0)
Con3t【aint3COve■141303736182path3,0net3,and4ε794co厩uなeCt10n3
De3■qn3taし 工3し ユcs=
H■n1皿 ㎜pe=10d:⊥9.819n3{1} く聾ax1遊u皿frequency:50.457HHz〕
Footnote3 ユ)The皿 ■n工nu並per工od3tat■3tlca3su瓜e3a113=LnqlecYcledelaY3・
An&1Vsエ3co皿pletedUEDI2JAN14:0:492011
図5。4:TimingAnalyzerに よ る 動 作 速 度 解 析
20回路 の動作速 度を解 析す る ソフ トウェア
5.4CPU部 の 変 更 点
CPU部 に は以 下 の変 更 を 加 え た.
・datab囎 にFPUの 出 力 を 流 せ る よ うに す る
・fpbusyを マ イ ク ロ コ ー ドROMの 分 岐 条 件 に加 え る
●fperrを エ ラー フ ラ グ レジ ス タで あ るerrに セ ッ トで き る よ うにす る
これ らの 動 作 は新 た なマ イ ク ロ命 令 と して定 義 さ れ る.実 装 した 実 数 演 算 は全 て 実 行 サ イ クル 数 が 固定 で あ る ため,マ イ ク ロ コー ドROMに 待 機 状 態 を別 々 に 割 り当 て る こ とで 実 装 可能 だ が,fpbusyで 分 岐 さ せ る こ とに よ りマ イ クロ コー ドROMの 状 態 数 を減 ら して い る.こ の 他 に は3章 同 様,マ イ ク ロ コー ドROMに 実 行 ル ー チ ン を追 加 す る こ とが 必 要 と な る.
5.5FPU命 令 実 行 ル ー チ ン
例 と してfpadd,fpld漁lsn命 令 に つ い て 述 べ る.
5.5.1fpadd命 令
実 数 加 算 命 令 で,そ の 動 作 は 以 下 の と お り.
FAregラ=FB璽eg十FAfeg FBfeg,=FCreg FCreg,=undefined
実 行 ル ー チ ン は 以 下 の よ うに な る.
サ イ クルCPU動 作 FPU動 作
博1り泊
fpaddstartfpbusyく=1 wait讐fpbusy(calculatiag)
ρり78
waitrfpbusy(finish)」 尊)busy〈=O
fpaddfinishFAregく=fpalu,FBreg〈 ・=FCreg
この 命 令 で は,CPUはFPUが 計 算 を 終 え る ま で 待 機 し,計 算 終 了 を 確 認 す る とCPUは 命 令 終 了 状 態 に遷 移 す る.FPU側 は命 令 開 始 時 のmcraddrか ら加 算 回路 を起 動 させ,命 令 終 了 状 態 のmcraddrで 結 果 を レ ジス タ に取 り込 む.fpbusyに よ り5サ イ クル 分 の 待 機 状 態 を1つ の状 態 で 表 して い る.こ の 時 の 動 作 を 図5。5に 示 す.正 し く動 い て い る こ とが
r"craddr fpBusy …
faregfbreg fcre彗 l lfpu口ut
ODO o 40捌E4F 3FgEO419 00000000 40161E4F
001 o 40帖1E4F 3FgEO419 00000000 40181E4F
31E 0 40161E4F 3F3EO419 00000000 40161E4F
31F 0 40181E4F 3FgEO419 00000000 40161E4F ←
31F 1 40161E4F 3FgEO419 00000000 40161E4F
b
31F 1 40161E4F 3FgEO419 oooooooo 40161E4F
31F 1 40161E4F 3FgEO4田 00000000 40161E4F
31F 1 40161ε4F 3FgEO419 00000000 40161E4F
320 o 40161E4F 3F3EO419 00000000 40181E4F
000 0 40161E4F 3FgEO419 00000000 4065205C ←
001 o 陸065205C 00000000 ooooooool 4065205C
fpbusyが0に なる の を 待 つ (実際 の マイク ロコー ドROMの 状
態 は1サ イクル 遅 れ て い る)
計 算 結 果 は
#3F9EO419+#40161E4F=#4065205C (1.2345+2.3456=3.5801)
fpadd開 始
fpadd終 了
図5.5:fpadd命 令 の 動 作 確 認
5.5.2fpldnlsn命 令
メ モ リ か らFPUに 値 を ロ ー ドす る 命 令 で,そ の 動 作 は 以 下 の と お り.mem[Areg]は メ モ リ のAreg番 地 の 値 で あ る.
Areg'=Breg,Breg'=Creg,Creg,=undefined FAreg,=mem[Areg],FBreg,=FAreg,FCreg,=FBreg
実 行 ル ー チ ン は以 下 の よ うに な る.
サ イ クルCPU動 作 FPU動 作
1 abus=Areg,en
2 databus=mem[Areg]FAreg〈=databus
Areg〈=BregFBregく ・=FAreg
Bregく=CregFCregく=FBreg
abusは メ モ リ の ア ド レ ス バ ス,enは メ モ リ の 読 み 出 し 要 求 で,1サ イ ク ル 目 は メ モ リ の 読 み 出 し を 行 っ て い る.FPUは 命 令 開 始 時 に は 何 も動 作 を し な い の で,1サ イ ク ル 目 の mraddrで は な く,2サ イ ク ル 目 のmraddrか ら制 御 信 号 を 生 成 し て い る.
命 令 実 行 の 様 子 を 図5.6に 示 す.緑 枠 で 囲 っ て あ る 部 分 はstnl命 令 で,Areg番 地 にBreg の 値 を 格 納 す る 命 令 で あ る.つ ま り,メ モ リ ア ド レ ス:#80000800に 値:#3F9EO419が 格 納 さ れ る.こ の 後 にfpldnlsnを 実 行 す る と,こ の 時 のAregも#80000800で あ る の で 先 ほ ど格 納 し た 値 がFAregに 読 み 出 さ れ る.そ の 様 子 が 図 か ら確 認 で き る.
: fareg fbre竃
曲… fcreg T‑一 『{一 一皿} 『
oooooooo OOOOOOOO OOOOOOOO
「fpuOut
一 areiぎ
『 〒 一 ㎜breg」o creζi mcraddr
一一一 腕
000 0田 010
fp8usyへ 一r o o o
00000000 00000000 00000000
00000000 00000000 00000000
00000000 00000000 00000000
80000000 80000800 80000800
『 3FgEO419 3FgEO419
一 山 一一}‑
80000800 80000809 80000800
l
o7AOOO oo 0000000000000000 0000000000000000 0000000000000000 ooooooooOOOOOOOO 8000080080000脚/ 3FO41980000800翻 器器1
001 004 000 001 316
o o O o o
00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000
090DO
00000000 00000
00000 00000000 00000noO
/顧800 80000800 80000800 80000800 800008囎
ム80000800 80000800
80000800 80000800 80090800
80000800 80000800 80000800 80000800 80000800 317
000
o o
00000000 r9{}o㈱
oooo OOOOO
ド 00000000 00000000
00000000 00000000
80000800 80000800
80000800
80000800
器器器器1
aOO1 004
0 0
00000000 00000000
00000000 00000000
fpldnlsn命 令 実 行 後 に 値 が 正 しく読 み 出 さ れ て い るstnl命 令
3FgEO419 3FgEO419
80000800 80000800
80000800 80000800
80000800 80000800
〔3FgEO41gr 3FgE中19
「
mem【Areg】 にBregを 格 納
図5.6:fpldnlsn命 令 の 動 作 確 認
5.6FPUを 組 み 込 ん だTPCORE
新 た にFPUを 組 み 込 ん だTPCOREの 構 成 は 図5.7と な る.ま た,今 回 追 加 したFPU 命 令 をT800の 実 行 サ イ クル 数 との比 較 と共 に表5.1に ま とめ て お く.fpdivがT800と 比 べ て サ イ クル 数 が 倍 とな っ てい る の は,実 装 した 除 算 回 路 が1ビ ッ トず つ に 減 算 して い る
ため で,こ れ を2ビ ッ トず つ の 減 算 へ 変 更 した な ら ばサ イ クル 数 は 同等 に で き る.
くコ
← う
蕪nk部
繊 耀
藝 鰻 鱒
鐸・圏堀 鷲
、,も,17.:
講 脚
難
雛 騒濾総
∵ ・∴・‑
.鷲.き一 ド
漁隷
丁}・へ}
蓮 鱒{ 購
叩六 ㍉
DS‑Link
Vir窒ualChannel Pmcessor
△ △ △
▽ v \z\z
Memoryoontroller
△ △ △ △
\7\1 \1\1
RAM 8K×8bit
RAM 8K×8bit
RAM 8K×8bit
RAM 8Kx8bit
Memory
図5.7:FPUを 組 み 込 ん だTPCORE
表5.1:FPU命 令 と 実 行 サ イ ク ル 数
T800 TPCORE T800 TPCORE
fpentry 1 1 fpldnladdsn 10 9
fpdup 1 1 fpldnlmulsn 14 10
fprev 1 1 fpchkerr 2 1
fpldnlsn 3 2 fptesterr 2 1
£pldnlsni 5 4 fpuseterr 1 1
fpstnlsn 3 2 fpuclrerr 1 1
fpadd 7 7 fpgt 5 1
fpsub 7 7 fpeq 4 1
fpmul 11 8 fporderd 4 1
fpdiv 17 36 fpnan 3 1
fpldzerosn 1 1 丘)not且nite 2 1
fpumulby2 8 1 fpint 6 3
fpudivby2 8 1 fpstnli32 4 3
fpuexpinc32 8 1 fpuchki32 4 1
fpuexpdec32 8 1 fprtoi32 10 5
fpuabs 2 1 fpi32tor32 11 6
6性 能評価
この 章 で は,今 回 のハ ー ドウ ェ ア実 装 に よ る 実数 演 算 命令 と ソ フ トウ ェ ア実 装 に よ る実 数 演 算 命 令 とのパ フ ォー マ ンス の 比 較 を この 章 で行 う.こ こで は,こ れ ま で実 数 演 算 で用 い て き た ソ フ トウ ェア 演 算 を ソ フ ト実 装,T425の イ ン ス トラ クシ ョン に よ る ソ フ トウ ェ
ア演 算 をT425互 換,外 付 けFPUに よ る演 算 を 外 付 け型,TPCOREに 組 み 込 ん だFPU に よ る 演 算 を 内蔵 型 と呼 ぶ こ と にす る.
6.1ハ ー ドウ ェ ア の 変 化
本 研 究 着 手 前 の 状 態(未 実 装)と 今 回行 っ た そ れ ぞ れ の 実 装 に お け るFPGAリ ソー ス の 利 用 度 合 い を 表6.1に 示 す.外 付 けFPUはIEEE1355リ ン ク部 分 とCORDICの 演 算 回 路 を 含 ん だ も の を載 せ て い る.FF(FhpFlop)は 回路 上 の記 憶 素 子,LUT(LookupTable) はFPGAで 任 意 の ロ ジ ッ ク を 実 現 す る た め の メモ リの 一 種 で,こ れ らの 個 数 が 多 けれ ば そ れ だ け 回 路 の 規 模 も大 き い.
表6.1:各 実 装 の 回路 規 模 お よ び動 作 周 波 数
未実装 T425互 換 外付け 内蔵
FF個 LUT個 動作速劇MHz}
3170 6956 50
3258 7844 50
492 1980
150
3468 9072 50
評価 ボ ー ド上 で 動 作 さ せ た 際 の 入 力 ク ロ ッ クの制 限 か ら,動 作 速 度(周 波 数)は 表6.1に 記 載 した値 とな った.FPUを 内蔵 させ て も動 作速 度 は50MHzを 保 て たが,回 路 の 規 模 は L3倍 とな った.
6.2単 純 ル ー プ
4章 で 用 い た 単 純 ル ー プ の プ ロ グ ラ ム(ル ー プ数:10000)を 各4通 りの 場 合 に つ い て 実 行 さ せ た 経 過 時 間 を 図6.1の グラ フ に示 す.こ こで は加 算 の み で は な く,乗 算 と除 算 に関 して も測 定 した.外 付 け 型 よ りもT425互 換 の ほ うが 計 算 時 間 が短 く,四 則 演算 で はハ ー ドウ ェア実 装 に よ る 計 算 時 間 の 短 縮 よ りも通 信 に よ るオ ー バ ー ヘ ッ ドの ほ うが 大 きい とい え る.ソ フ ト実 装 はaddで 比 較 した 場 合,内 蔵 型 の310倍,T425互 換 の60倍,外 付 け型 の50倍 の 時 間が か か っ て い る.
6.3Machinの 公 式 で πを 計 算
(
div
dm
(OOOOFdo2)鯨
add
98.7 11.8
1
5
121.4
8
15044.1
噂
「15.4
96.05 65.4
14931.6B
一
「15.6
96.05 .15
1
8
14849.7
iI
10 100 1000 10000
ロ 内 蔵 ロ外 付 け 口丁425互換
■ソフト
時 間 【ms】
図6.1:ル ー プ プ ロ グ ラ ム 実 行 時 間
ソ フ ト実 装,外 付 け 型 はOc6amラ イ ブ ラ リのarctan関 数 を 使 用 す る こ とが で き な い の で,実 行 す る プ ロ グ ラ ム の 条 件 を そ ろ え る た め にarctan関 数 はTaylor展 開 に よ り実 装 し た も の を用 い て計 算 を行 う.つ ま りソ フ ト実 装,外 付 け型 の プ ロ グラ ム はTaylor展 開 の四 則 演 算 を そ れ ぞ れ 四則 演 算 ライ ブ ラ リ,FPUア ク セ ス プ ロ セ ス に置 き換 え た もの に な る.
Taylor展 開 に よ る計 算 は,先 の 単 純 ル ー プ と異 な り四 則 演 算 を全 て 利 用 した 計 算 の た め, 総 合 的 な 計 算 結 果 の比 較 が行 え る.結 果 を 図6.2に 示 す.こ こで の ソ フ ト実 装 と内蔵 型 の 差 は380倍 で あ っ た.
41 1
330.8
}}
ii【暫‑N囲 ・輔 ・222 .1
15806
、}
罵
iil
10 100 1000 10000 100000
ロ 内蔵 0外 付 け
■τ425互 換 .ソ フト
時 闇[μs]
図6.2:π 計 算 時 間
6.4高 速 フ ー リ エ 変 換
これ ま で の 結 果 か ら今 回 実 装 した3つ の 方 法 は ソ フ ト実 装 よ りも プ ロ グ ラ ム 実 行 時 間 が 短 くな る こ とが わ か っ た.さ らに外 付 けFPUと して のCORDICの 有 効 性 を 見 る た め に,高 速 フー リエ 変 換(FFT)プ ロ グ ラム での 評 価 を行 った.FFT中 の 三 角 関数 呼 び 出 し をOccamラ イ ブ ラ リを 用 い て 実 行 した場 合 と外 付 けFPUのCORDICを 用 い た場 合 を比 較 す る.プ ロ グ ラ ム は[10]のJavaに よ るFFTプ ロ グ ラ ム をOccamに 直 した も の を用 い た.入 力 す るデ ー タ は
sin(2πオ)十〇.25sin(40πオ)
をサ ン プ リン グ した もの を 用 い て い る.デ ー タ数 を64,128と した場 合 の結 果 が 図6.3で, 語 尾 にcdと つ い て い る もの が プ ロ グラ ム 中 の 三角 関数 呼 び 出 しをCORDICに 置 き換 え た 実 行 結 果 で あ る.
外 付 け 型 がCORDICを 適 用 す る こ と に よ りCORDICな しのT425互 換 を 上 回 る結 果 とな っ た.他 の2つ の 実 装 につ い て もCORDIC適 用 に よ る効 果 が 現 れ て い る.デ ー タ数 128の 内蔵 型 で 比 較 す る と1.2倍 高 速 に な って い る.
)
挙1
、ト 128
64
1 肇0
時 間[ms]
100
個 内 蔵 ℃d
、口 外 付 け ℃d ロT425互 換 一cd 層 内 蔵
■T425互 換
図6.3:FFT実 行 時 間
7ま と め
7.1結 論
本 研 究 で は 実 数 演 算 の高 速 化 を 目指 し,次 の3つ の 方法 で 実 数 演 算 機 構 の 実 装 ・評 価 を 行 った.
1.T425の 命 令 の 補 完
2.プ ロ セ ッ サ へ のFPU組 み 込 み
3.外 部 リン クを 用 い た周 辺 回路 と して のFPU
これ ら3つ の 方 法 の 全 て に於 い て,従 来 の ソ フ トウ ェア実 装 よ り も高 速 に計 算 が 行 え る こ とを 確 認 した.さ ら に既 存 の命 令 の不 具 合 を 修 正 す る こ とで,プ ロセ ッサ と して の完 成 度 を 高 め る こ とが で き た.ま た,演 算 の種 類 に よ っ て は外 部 回 路 に よ る演 算 補 助 が 有 効 に働
くこ とが 確 か め られ た.
7。2今 後 の 課 題
今 回の 外 付 け のFPU実 装 は,四 則 演 算 で の 結 果 か らわ か る よ うに,FPUで 行 う処 理 の 時 闇 よ りも通 信 時 間 の ほ うが 大 きい た め,効 果 的 にFPUを 利 用 で き て い る と はい い が た い.FPU本 来 の 性 能 を 引 き 出 す た め に もTPCOREの リ ン ク速 度 を 上 げ る こ とが 必 要 に な る.そ の た め の方 法 と して は,TPCOREのCPU部 と は異 な る ク ロ ッ ク で リ ン ク部 を 動 か す,パ ラ レル 方 式 で 通 信 す る,と い った こ とが考 え られ る.
内蔵 型FPUに 関 して は,倍 精 度 の サ ポ ー ト,CPUとFPUの 並 行 動 作 な どや り残 した こ とを消 化 し,T800と の 互 換 性 を 完 全 に す る こ とが 必 要 で あ る.
ま た,ハ ー ドウ ェア 実 装 を優 先 しソ フ トウ ェア側 の 評価 が十 分 に行 えて い な い た め,TP‑
COREの ソ フ トウ ェア を充 実 さ せ 様 々 な視 点 か らTPCOREを 評 価 す る必 要 が あ る.今 回 強 化 され た実 数 演 算 を 有効 活 用 す る に は,画 像 解 析 や 数 値 シ ミュ レー シ ョ ンな どへ の適 用 が 考 え られ る.