※ 引述《a5000ml (咖啡裡的海洋藍)》之銘言:
: ※ 引述《jk21234 ()》之銘言:
: : 勘誤一些硬體觀念的部分.
: : 理想狀態下是480個(理由同第二段,fMADD以及fADD)
: 確實是 3 倍 (720個), 可以寫程式測試, 理由在下面描述
: 還有不是 FMAD+FADD, 而是 FMAD+FMUL
: 詳見 realworld tech 那篇 nv 工程師團隊寫的文章
: http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242&p=9
: FADD太簡單了, 為它做個專屬的硬體單元划不來
事實上,fMUL在硬體複雜度或者是軟體的模擬上都比fADD簡單.
由於浮點數是以乘冪的方式儲存,所以兩個乘冪型態的乘法.
會很簡單處理.直接底數拿去作整數相乘,然後2^N次方的部分相加就好了
相對的,浮點數的加法就必須先解開乘冪.再相加後,重新計算乘冪.
因此這個部分的相對cost高於浮點數乘法的兩倍以上...
(不過...以上這點和CUDA programmer沒有直接關係..除了為了補足
GPU的浮點數的精確度不夠,採用數值方法的時候才會有一點點關連 orz)
: FMAD 平均可在一個 cycle 做 a*b+c, 裡面執行一個乘法和一個加法運算,
: PTX 確實有這道指令, 詳見 ToolKit 中附的 ptx_isa 的 pdf 文件
: 在 FLOP 的定義上 FMAD 是兩個浮點運算 throughput, 否則會混淆不清,
: 這種定義並不是在灌水 *****
這個是我扯太遠,應該說幾十年前的機器是直接拿他們的flops
出來互相評比,而當時認為只有"完整的fMADD才是一個flops"
但是後來有廠商開始以一個fADD或者是一個fMUL當成一個flops
開始公布後(為了讓數字好看),其他競爭廠商也只好跟進.
到最後才演變成fMADD相當於兩個flops.
我說的灌水是指這段很久以前的歷史...
: : 構成256bit對256bit的crossbar架構.
: 嗯嗯, 這方面我會再去查清楚, 因為之前我看的是「資料線寬度」,
: 256 bit 就是在一個 bus 的 clock 上可傳 256 bit,
: dual channel 用互補的記憶體控制器, 達到平均在一個 bus clock 下傳送兩筆資料
: 這技術是 AMD 和 nv 共同做出來的 (類似 dual issue 技術)
: data rate 的倍數是在 DRAM 晶片上, 傳的時候還是要透過 bus,
: 並不是變成 DDR5 就可以傳 5 倍.
: 就好像 100BaseT 的乙太網路, 並不會因為電腦由 Pentium 升級成 Quad Core,
: 而讓傳輸速度變 4 倍一樣, 頂多只是反應快一點而己
在你看到的資料,兩組互補的應該指的是晶片上的時脈訊號.
DQ/DQS "互補",指的是在Clock上面的相位剛好差一半.
造成Clock Rate可以有有兩倍觸發的能力.
以你計算的公式來說,900MHZ是經過DQ/DQS等訊號
達成的Clock Rate(實際上經過在電路板上跑的Clock
Rate會更低...),上下緣觸發造成有兩倍的Data Rate.
另外如Rambus,CPU外頻等也具有類似的特性.
實際的Data Rate數倍於時脈頻率.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.146.142
※ 編輯: jk21234 來自: 140.114.78.62 (12/12 21:01)