創作內容

0 GP

Shady 錯了!TOC 沒比立刻開啓一個堆疊快。

作者:千秋 真一│2011-02-28 17:50:35│巴幣:0│人氣:259
之前 Shady 的有關 TOC 之文章中有說 TOC 較堆疊快,
但實際是直接使用堆疊會較快。

Shady 之所以會說 TOC 會較快的原因為:
IBM 的 PowerPC 組合語言相關文章中有提到 TOC 通常是在 Cache 中。

但經 Shady 以更改 setzero 組語函式實際測試後又再想想,
64KB 的 TOC 根本不可能一開始就在 Cache 中,
就算它有在 Cache 中,
那也是 L2 Cache 而不是 DCache。

害 Shady 以為就算直接馬上開個堆疊,
也不會比直接載入在 DCache 中的 TOC 還快,
但經 Shady 證明後並非如此。

所以馬上開個堆疊,
這堆疊會在 Dcache 中,
而 TOC 還是從記憶體載入到 L2 Cache、DCache 中,
故 TOC 只有在第一次載入後,
於第二次載入時才會對整體效能有所幫助。

雖說 TOC 沒比馬上開啟堆疊快,
但會比資料在記憶體或者是更新出 Cache 中的堆疊快就是了。

在 IBM 的一些有關組語的文章中,
其組語的例子中都會有類似以下的 " TOC 宣告 " (紅字):
_start:
       .quad ._start, .TOC.@tocbase, 0

如果你不使用 TOC 請省略這 " TOC 宣告 ",
因為就算沒使用 " TOC 內容 " 或 " 設置 TOC 內容 ",
只要有 " TOC 宣告 " 就會造成函式被呼叫時,
函式和其 TOC 會同時被載入到 Cache 中。

目前最快的 setzero.s

其 tick 值於 4KB 對齊 128 Byte 下的測試結果為:13 ~ 16 ticks。(注1)

當中無使用 TOC 也沒有 " TOC 宣告 ",
亦無 Altivec ABI 的指令,
但若做了 " TOC 宣告 " 則會使 tick 值增加到 25 ticks 以上 (注2),
所以不要隨便做 " TOC 宣告 "。

注1:呼叫函式前有使用 dcbt 預先載入函式,
      若無使用 dcbt 則成績為 17 ~ 25 ticks。
注2:呼叫函式前有使用 dcbt 預先載入函式。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=1245436
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Cell|PS3|Linux

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★shady 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:再提"雙發射&... 後一篇:電腦壞了!...

追蹤私訊切換新版閱覽

作品資料夾

ROSEVEN1217大家
【汴京行】:古風甜文,燕家香藥舖六少爺和瓦子女藝人的冒險故事,每天一大早更新,不甜不要錢哦!!!^0^看更多我要大聲說7小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】