国产成人福利在线视频播放下载,成人无码www免费视频在线看,放荡的美妇在线播放,大地资源网最新更新,国产成人精品日本亚洲网站

泡泡網(wǎng)CPU頻道 PCPOP首頁      /      CPU     /      評測    /    正文

蓋棺定論 2013年手機(jī)處理器終極指南

    早在2011年,圍繞“Scorpion和Cortex A9到底誰更好”就已經(jīng)展開過一些爭論,隨著時間的過去,事實慢慢證明了,Cortex A9的確技高一籌,而Scorpion則不幸成了“高頻低能”的形象代言人。前文中我們曾提到,驍龍S4所采用的核心是自行研發(fā)的,高通表示這顆處理器的基礎(chǔ)架構(gòu)要遠(yuǎn)比Cortex A9先進(jìn),那么,它算不算ARM新一代架構(gòu)Cortex A15呢?很顯然這一定會引發(fā)另一場爭論——至少在當(dāng)時。為了分析這個問題,我們需要深入到架構(gòu)內(nèi)部。

    首先看一下規(guī)格:3指令發(fā)射、亂序執(zhí)行流水線、3300DMIPS/MHz,的確和Cortex A15很接近。但是實際上Krait核心在大多數(shù)時候的表現(xiàn)卻和Cortex A9相去不多,這究竟是為什么?答案自然是架構(gòu)。雖然高通并沒有公開Krait的詳細(xì)架構(gòu),但是根據(jù)性能表現(xiàn)和一些特征性參數(shù),我們也可以大概猜測一下。

    在開始之前,首先需要來觀察一下Cortex A9的架構(gòu):

    從邏輯角度說,處理器的工作過程是讀取指令->解碼指令->分派給執(zhí)行機(jī)構(gòu)->進(jìn)行運(yùn)算->把結(jié)果寫回內(nèi)存->讀取下一條指令的循環(huán)。對應(yīng)在架構(gòu)圖理,指令從左下角的預(yù)?。≒refetch Stage)級進(jìn)入到上方的解碼(Decode Stage)級,經(jīng)過必要的處理(Register Rename)后,進(jìn)入亂序指令分發(fā)(Dispatch)級,送給各個執(zhí)行(ALU/NEON)器,最后進(jìn)入亂序?qū)懟兀╓rite back)部分。這一條路徑,就是所謂的指令流水線,也就是下面這張圖。

    處理器的工作,就是不斷讀取內(nèi)存中的應(yīng)用指令流,然后把它盡可能快的塞進(jìn)執(zhí)行流水線。因此吞吐量是一個CPU架構(gòu)很重要的指標(biāo),而吞吐量可以用IPC來衡量,即每周期指令數(shù)。Cortex A9的指令解碼器(圖中De)具備單周期解碼兩個指令的能力,因此是一個雙發(fā)射的核心,具備的最大IPC為2。但是光解碼沒有用,還需要把解碼后的指令送入執(zhí)行流水線才可以真正實現(xiàn)功能,而這是靠亂序指令分派器(圖中Iss)實現(xiàn)的。在Cortex A9里,這個部件具備3+1個端口,也就是說總共可以掛接四組執(zhí)行器,但只能同時分派3個(有一個端口是復(fù)用的)。執(zhí)行單元部有兩個通用執(zhí)行器(其中一個除去整數(shù)運(yùn)算以外還支持并發(fā)執(zhí)行一個硬件乘法運(yùn)算)、一個訪存器和命名為“Compute Engine”的運(yùn)算協(xié)處理器,也就是我們知道的VFP和NEON。

    到了Cortex A15,取指寬度提升到了128bit(Cortex A9只有64bit,后文詳述),單周期解碼能力增加到了3,也就是說拾取部分的IPC從2增加到了3。為了可以實際發(fā)揮它,ARM對Cortex A15的指令分派器與執(zhí)行管線進(jìn)行了極大的強(qiáng)化,這也是架構(gòu)圖中變化最大的部分。

    與Cortex A9的3+1分派不同,Cortex A15的分派器具備8指令分派能力,執(zhí)行器也從3類4組擴(kuò)充到了5類8組,額外增加了分支跳轉(zhuǎn)單元和硬件乘除法單元,每一組執(zhí)行器對應(yīng)的分派端口都有自己的獨(dú)立隊列。Cortex A9上,VFP和NEON要屈尊共享一個分派端口,A15就成功平房換別墅,各自擁有了獨(dú)立的端口,吞吐量大大提升。

    那么結(jié)論是什么?至少從架構(gòu)上,Cortex A15要遠(yuǎn)遠(yuǎn)比Cortex A9先進(jìn),兩者的設(shè)計理念之間差了大約有5年。Cortex A9的架構(gòu)更接近于老式的,上個世紀(jì)90年代的順序架構(gòu)處理器,即較少的分派隊列、復(fù)用的執(zhí)行管線與簡單的多指令并發(fā)。當(dāng)然, ARM在Cortex A9上第一次實現(xiàn)了亂序執(zhí)行核心,但至少從架構(gòu)圖上看,結(jié)果可能也僅僅是支持而已。但Cortex A15不同,在Cortex A15上,才是真正看到了可以從亂序執(zhí)行中獲利的設(shè)計,原因很簡單,亂序執(zhí)行的本意是通過打破指令的時間順序,進(jìn)而增加處理器硬件資源的利用率。那么就自然需要CPU的分派單元具備足夠強(qiáng)大的分派能力和硬件資源,可以盡一切可能去填滿所有的執(zhí)行器,因此體積必然會極大膨脹,最理想的情況就是給每一組執(zhí)行器都設(shè)計一個端口和隊列。

    對于這一點(diǎn),Cortex A15做到了,而Cortex A9沒有做到。當(dāng)然這么設(shè)計并不是沒有代價。亂序執(zhí)行需要的資源完全不是順序架構(gòu)可以比擬的,畢竟計算機(jī)程序的指令之間本身就具備邏輯上的先后順序,再亂序,也只能是執(zhí)行時的亂序,最終還是需要一定的順序,這就需要具備額外的硬件資源去記錄指令間的相關(guān)性以及時間狀態(tài)。除此以外,為了保證后續(xù)指令可以跳過前面阻塞的指令執(zhí)行,也需要指令隊列有足夠的容量去保存阻塞的指令。這之間有很多技術(shù)細(xì)節(jié),會導(dǎo)致功耗的激增,如何在引入亂序執(zhí)行核心優(yōu)勢的同時盡可能的去壓制住激增的功耗,這需要非常高深的設(shè)計功力,甚至有時候需要一定的技巧和運(yùn)氣。Intel曾經(jīng)也在探索新架構(gòu)的時候跌了大跟頭,ARM沒有任何理由可以免費(fèi)得到這種好處,因此Cortex A15也為此付出了代價。至于代價有多大,留到下篇再說。

    Krait的資料就比較缺乏了,高通一向有保密的傳統(tǒng),所以目前只知道單周期解碼能力為3、指令分派能力為4、執(zhí)行單元一共有7個,僅此而已。但是這已經(jīng)足夠讓我們?nèi)ゲ聹yKrait的設(shè)計,關(guān)鍵在于指令分派能力:4,也就是說,Krait的具體架構(gòu)應(yīng)當(dāng)和Cortex A9類似,主要強(qiáng)化的是執(zhí)行器規(guī)模。換句話說,Krait是一個大幅閹割了吞吐量的Cortex A15,或者說是一個大幅提升了“肥胖度”的Cortex A9。原因不用多說,只在省電二字。因此Krait空有接近Cortex A15的3300DMIPS/MHz理論運(yùn)算能力與3 IPC,卻并無法發(fā)揮,原因也在這里。單純增加碼頭容量和工廠容量,卻不提升連接碼頭和工廠的道路寬度,最終都是白費(fèi)力氣。

    分派之后是執(zhí)行,執(zhí)行主要靠一組組的運(yùn)算與邏輯單元構(gòu)成。相比Cortex A9,A15增加了硬件乘法器和專門用來處理分支的Branch ALU,而且有跡象標(biāo)明,Load/Store的性能也得到了很大的加強(qiáng)。這些對于某些情況下的應(yīng)用性能會帶來較大的改變,但更為明顯的變化其實是在NEON與VFP上。Cortex A15中這兩個SIMD ALU不僅擁有獨(dú)立的端口,內(nèi)部還實現(xiàn)了雙發(fā)亂序執(zhí)行流水線。

    上圖就是Cortex A9的浮點(diǎn)運(yùn)算單元。它的內(nèi)部實現(xiàn)了管線化架構(gòu)設(shè)計,擁有自己獨(dú)立的指令隊列和指令分派,但是每個周期只能分派一個指令,執(zhí)行管線也是單發(fā)順序的。雖然圖上沒有畫出來,但是VFP/NEON指令的具體解碼在Cortex A9中是在浮點(diǎn)運(yùn)算單元中實現(xiàn)的,因此相對于其他的執(zhí)行管線而言,獨(dú)立性顯得比較明顯。

    到了Cortex A15,浮點(diǎn)運(yùn)算單元被以其他運(yùn)算器相同的運(yùn)作方式整合到了處理器的主管線中,具體而言,就是VFP和NEON的指令解碼和其它類型的指令一樣是在前端指令解碼部分直接實現(xiàn),再由分派器統(tǒng)一分派。再加上內(nèi)部的雙發(fā)亂序,Cortex A15的VFP/Neon可以同時執(zhí)行兩條SIMD指令,四個融合MAC運(yùn)算,運(yùn)算能力要大大超越Cortex A9。根據(jù)現(xiàn)有的資料和實際的運(yùn)行結(jié)果,高通也實現(xiàn)了雙發(fā)的VFPv4,但是Neon與是否支持亂序則無從判斷??梢圆聹y,Krait的SIMD部分性能可能會弱于Cortex A15。

    作為總結(jié),用一張圖來簡單比較一下Cortex A9、Krait和Cortex A15的執(zhí)行管線:

    再好的核心如果得不到數(shù)據(jù),也只能停擺,所以緩存是現(xiàn)代處理器設(shè)計中一個很重要的部分。多處理器系統(tǒng)的緩存大體上有兩種設(shè)計思路,一種是每個核心擁有自己獨(dú)立的緩存,通過外部總線進(jìn)行一致性維護(hù),例如Pentium D和Atom;另一種是設(shè)計一塊共享的大緩存,使用總線訪問。Cortex A9和A15、Krait都采用了后一種設(shè)計,但是細(xì)節(jié)有所不同。

    Cortex A9的二級緩存通過外部總線連接到處理器組??梢钥吹?,兩顆Cortex A9處理器通過標(biāo)記為PL310的二級緩存控制器連接到1MB的緩存上。PL310的內(nèi)部結(jié)構(gòu)如下:

    PL310提供了兩個AMBA3 AXI接口,寬度都是64bit。結(jié)合之前的架構(gòu)圖,可以得到一個八九不離十的推測,那就是這兩個接口一個會用作指令拾取,而另一個則用于訪問二級緩存。

    這個設(shè)計好不好呢?顯然是不好的,否則ARM也不會把Cortex A15上的二級緩存控制器直接整合進(jìn)A15多核心控制器SCU中。這是Cortex A15的一大升級,它的二級緩存不再是一個游離的組件,終于與所有的核心構(gòu)成了一個緊密耦合的整體。它的好處,后面我們還會詳細(xì)解釋,而它的壞處,我們會在下篇中為大家分析。

    不僅如此,Cortex A15的二級緩存針對多核心訪問設(shè)計了4個獨(dú)立的TAG隊列,數(shù)據(jù)的讀取和寫入由兩個不同的接口實現(xiàn)(這里不太確定),還支持直接的CPU到CPU數(shù)據(jù)傳輸,這一切都是為了提升多核心下并發(fā)訪問緩存的性能。Intel曾經(jīng)說過Cortex A9糟糕的二級緩存性能限制了它的性能,很明顯,ARM決心在Cortex A15上改進(jìn)這個缺陷。

    至于高通S4平臺,從高通自己提供的核心框圖上看,似乎是采用了一整片L2緩存為所有核心所共享,但是nVIDIA在發(fā)布Tegra4的時候給出了一張幻燈片,里面對于Krait的L2緩存有非常清晰的說明:

    很明顯,Krait并沒有設(shè)計為一體式L2緩存,依然保留著早期Scorpion的每顆核心包含自己獨(dú)立緩存的架構(gòu)。這是異步架構(gòu)特有的問題和設(shè)計之一,緩存之間需要靠外部接口進(jìn)行一致性維持,有效容量僅有總?cè)萘?核心,對于Krait而言,不論多少個核心,有效二級緩存永遠(yuǎn)只有512KB。當(dāng)然,這樣的設(shè)計擁有高帶寬低延遲的好處,畢竟緩存是私有的,這點(diǎn)在對陣Cortex A9的時候會有一定的優(yōu)勢,但是面對Cortex A15就很難說有什么好處了。

    到這里大家應(yīng)該就明白了,認(rèn)為Krait是類似于Cortex A15架構(gòu)的說法是不準(zhǔn)確的。事實上,驍龍S4的“Krait”架構(gòu)相對上代Scorpion而言雖然得到了很大的強(qiáng)化,但距離Cortex A15還有一定的距離,甚至說設(shè)計上與Cortex A9的親緣關(guān)系更近,看作是“肥胖版”的Cortex A9也許會更合適一些。這樣的架構(gòu)注定很難發(fā)揮它的理論性能。

0人已贊

關(guān)注我們

泡泡網(wǎng)

手機(jī)掃碼關(guān)注