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

一 ROM 図5.2:内 蔵FPU構 成

ドキュメント内 判 等 譲 (ページ 42-53)

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を 評 価 す る必 要 が あ る.今 回 強 化 され た実 数 演 算 を 有効 活 用 す る に は,画 像 解 析 や 数 値 シ ミュ レー シ ョ ンな どへ の適 用 が 考 え られ る.

ドキュメント内 判 等 譲 (ページ 42-53)

関連したドキュメント