《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 獨(dú)霸市場(chǎng)數(shù)十年,X86處理器究竟難在哪里?

獨(dú)霸市場(chǎng)數(shù)十年,X86處理器究竟難在哪里?

2020-10-08
來(lái)源:半導(dǎo)體行業(yè)觀察
關(guān)鍵詞: X86 處理器 AMD 英特爾

  這些年來(lái),相信各位閑閑沒(méi)事,就會(huì)在網(wǎng)路各角落看到,不同領(lǐng)域的各路英雄好漢一直有相同疑惑:為何今天的x86 處理器市場(chǎng),臺(tái)面上只剩下英特爾AMD 兩家美國(guó)公司?頂多再加個(gè)存在感稀薄的臺(tái)灣VIA,和少人知悉的俄羅斯Elbrus?對(duì)技術(shù)有點(diǎn)基礎(chǔ)認(rèn)知的人,多少會(huì)直接想到「x86 指令集很復(fù)雜很難搞,又有英特爾的授權(quán)問(wèn)題,所以x86 處理器非常不好做」之類的標(biāo)準(zhǔn)答案。

  當(dāng)然,更不乏某些夜郎自大的高論,像「就算x86 指令集再?gòu)?fù)雜,控制單元也還是很好設(shè)計(jì)」、「微指令轉(zhuǎn)譯早就克服了所有x86 指令集的瓶頸」等。拜托,「做出勉強(qiáng)能動(dòng)的東西」和「開(kāi)發(fā)出有市場(chǎng)競(jìng)爭(zhēng)力的產(chǎn)品」完全是天差地別的兩件事,要不然你以為英特爾和AMD 天文數(shù)字般的產(chǎn)品開(kāi)發(fā)經(jīng)費(fèi),都拿去填海了嗎?

  總之,高效能x86 處理器之所以難做,混雜了諸多技術(shù)和商業(yè)因素,暗藏在臺(tái)面下的細(xì)節(jié)非外人足以道也。但我們可以回到x86 處理器最重要的歷史轉(zhuǎn)捩點(diǎn):1993 年P(guān)entium 處理器,抽絲剝繭一般人難以察覺(jué)到的蛛絲馬跡。

  以「唯偏執(zhí)狂得以生存」(Only the Paranoid Survive)留名于世的英特爾創(chuàng)辦人之一Andy Grove 曾經(jīng)說(shuō),2003 年的Centrino 是英特爾的「第二個(gè)兒子」與「十年來(lái)最重要的品牌」 ,那「第一個(gè)兒子」和「十年前最重要的品牌」,想當(dāng)然爾就是1993 年的Pentium 了。

  Pentium 之名起源于希臘文的Penta(意思是「五」),再加上拉丁文的ium 結(jié)尾,意指「第五代x86 處理器」,英特爾自此也不再使用80×86 來(lái)定義處理器世代(要不然現(xiàn)在還真的講不出來(lái)到底是「幾86」)。而Pentium 也在不知不覺(jué)中,一步步轉(zhuǎn)型為入門級(jí)低價(jià)處理器品牌,更不再受限于1993 年的P5,進(jìn)而橫跨歷代英特爾的超純量(Superscalar)x86 微架構(gòu)。

  原始Pentium 里的P5 處理器微架構(gòu),并沒(méi)有像后繼Pentium Pro 的P6 活得如此之長(zhǎng),影響又如此深遠(yuǎn)(到2011 年Sandy Bridge 才結(jié)束)。但Pentium 問(wèn)世的時(shí)機(jī),卻是眾多歷史機(jī)運(yùn)的集大成:

  「x86 處理器走向高效能化」。

  「x86 開(kāi)始與RISC 正面競(jìng)爭(zhēng)」。

  「x86 指令集的缺陷讓廠商感到棘手」。

  「x86 處理器進(jìn)軍多處理器平臺(tái)」。

  「?jìng)€(gè)人電腦市場(chǎng)因Windows 95 的問(wèn)世而蓬勃成長(zhǎng)」。

  「筆記型電腦即將逐漸普及」。

  「英特爾默默埋下讓擅長(zhǎng)改良的以色列海法研發(fā)團(tuán)隊(duì),主導(dǎo)x86 處理器技術(shù)發(fā)展」。

  「x86指令集的相容性,成為其他競(jìng)爭(zhēng)者的潛在障礙,也造成軟件開(kāi)發(fā)商的困擾」。

  這些因素交錯(cuò),奠定了之后25 年技術(shù)演進(jìn)與市場(chǎng)發(fā)展的基礎(chǔ)邏輯,連時(shí)下「AMD 處理器的核心太多,竟然造成Windows 操作系統(tǒng)的大麻煩」,也和Pentium 留下的遺產(chǎn),多少有些千絲萬(wàn)縷的糾結(jié)。

  既然連AMD Zen成功的背后,都有這么多不為人知的故事,了解英特爾「Landmark」芯片Pentium的軌跡,將有助跳脫琳瑯滿目的技術(shù)營(yíng)銷名詞,重新建立屬于自己的「x86處理器世界觀」 ,值得各位細(xì)細(xì)品味。

  x86 指令集先天不足后天失調(diào)的原罪

  催生「計(jì)算機(jī)結(jié)構(gòu)」(Computer Architecture)一詞的「指令集架構(gòu)」(Instruction Set Architecture),為「電腦的基礎(chǔ)語(yǔ)言」與「軟硬件中間的介面」(Interface Between Hardware and Software),相同指令集的電腦理應(yīng)可執(zhí)行一樣軟件,具備彼此相容性,對(duì)電腦與處理器微架構(gòu)(Microarchitecture)的未來(lái)發(fā)展有舉足輕重的影響力。

  不同的時(shí)空背景,也會(huì)產(chǎn)生相異的指令集設(shè)計(jì)理念,沒(méi)有絕對(duì)的優(yōu)劣對(duì)錯(cuò)──x86算是少見(jiàn)的例外,另一個(gè)則是DEC VAX,兩者的共同點(diǎn)只有「著毋庸議」的糟糕,英特爾IA-64(Itanium)和DEC Alpha的激烈反動(dòng),足以證明連生父都如此厭惡小孩。

  說(shuō)到指令集架構(gòu)如何影響處理器微架構(gòu)的設(shè)計(jì),這幾年來(lái)最有名的實(shí)例,就是蘋果利用充分掌握封閉平臺(tái)的優(yōu)勢(shì)在「最短時(shí)間內(nèi)驅(qū)逐32位元應(yīng)用程序」,掌握ARM指令集邁向64位元的過(guò)程帶來(lái)的改革與機(jī)會(huì),讓A7之后的自家ARM處理器,徹底為64位元的ARMv8-A量身訂做,研發(fā)出一系列能同時(shí)有效處理更多指令的先進(jìn)微架構(gòu)。

  所謂的CISC(復(fù)雜指令集)出自記憶體容量稀少、缺乏成熟的高階語(yǔ)言編譯器、大多數(shù)人使用語(yǔ)言撰寫程序的時(shí)空背景,程序設(shè)計(jì)者寄望直接用透過(guò)微碼(Microcode)組成功能強(qiáng)大的單一指令,像十進(jìn)位數(shù)字和復(fù)雜字串處理等,撰寫應(yīng)用程序。

  相較之下,RISC(精簡(jiǎn)指令集)則是在「萬(wàn)事皆備」的環(huán)境,追求更快更便宜的電腦,將電晶體預(yù)算砸在「最經(jīng)常被使用的簡(jiǎn)單指令和運(yùn)算元定址模式」的刀口上,盡量用硬件線路去取代微碼,并藉由強(qiáng)制僅載入(Load)/儲(chǔ)存(Store)指令可存取記憶體,搭配大型化的資料暫存器與快取記憶體,填補(bǔ)處理器和記憶體之間越來(lái)越大的效率鴻溝。

  時(shí)過(guò)境遷,在x86 主宰云端資料中心、中低階伺服器、工作站、桌機(jī)一路到筆電的今日,可能已經(jīng)沒(méi)有多少人能回想起「RISC 與CISC 之爭(zhēng)」曾發(fā)生在1990 年代初期的史跡,但畢竟x86 指令集公認(rèn)是充滿缺陷的產(chǎn)物,連當(dāng)代最偉大的計(jì)算機(jī)結(jié)構(gòu)教科書都「白紙黑字」并「燒錄」于無(wú)數(shù)莘莘學(xué)子的腦中,而AMD K5 的創(chuàng)造者更是用一句「毫無(wú)道理可循」(it just doesn't make a lot of sense)一錘定音,幾無(wú)爭(zhēng)議空間。

  讓人滿臉黑線的,只有動(dòng)輒揮出「逆向思考全壘打」的大恩大德,將x86 的市場(chǎng)勝利,視為「x86 指令集架構(gòu)優(yōu)良」佐證的天真論點(diǎn),并時(shí)有所聞,連ARM 都比x86 更「記憶體存取密集」(Memory-Intensive)這種話都講得出口。

  我們先來(lái)瞧瞧當(dāng)年AMD K5 的總工程師Mike Johnson 怎么評(píng)論x86 指令集,由設(shè)計(jì)x86 處理器的大師級(jí)人物(他本人的確是超純量管線技術(shù)的先驅(qū)者,那份變成首本超純量技術(shù)專書的史丹佛大學(xué)博士論文非常有名,附錄更深度分析設(shè)計(jì)超純量x86 處理器的困難點(diǎn))寫出來(lái)的批評(píng),特別有說(shuō)服力,也一再被后人引述:

  The complexity of the x86 is not an impassable barrier. The x86 really isn't all that complex—it just doesn't make a lot of sense… The biggest weakness in the x86 instruction set is the lack of registers coupled with an extremely painful addressing scheme.

  從這短短一段話,可看到幾個(gè)重點(diǎn):

  「毫無(wú)道理可循」(doesn't make a lot of sense):相較于指令編碼程度統(tǒng)──4 Bytes(32 bits)的多數(shù)RISC體系,x86指令集的格式和編碼極度混亂,長(zhǎng)短粗細(xì)肥瘦不一,從1~17 Bytes都有可能。影響所及,遍及所有的環(huán)節(jié),從快取記憶體擷取指令、實(shí)作指令管線化,到處理器發(fā)生中斷例外時(shí)要迅速儲(chǔ)存執(zhí)行狀態(tài)并盡快回復(fù)等,都造成非常嚴(yán)重的后遺癥,激增研制高效能x86處理器的門檻,也增加驗(yàn)證產(chǎn)品的時(shí)間與成本。

  「缺乏足夠的暫存器」(the lack of registers):一般RISC指令集都會(huì)定義32個(gè)通用資料暫存器(講的精確一點(diǎn)是31個(gè))或浮點(diǎn)運(yùn)算暫存器,但x86在64位元和AVX之前,怎么樣都只有少少的8個(gè)(因?yàn)橐鄣鬍SP和EBP,說(shuō)6個(gè)或許比較貼切)。當(dāng)引進(jìn)指令管線化和更先進(jìn)的超純量管線后,自然就激增了暫存器沖突的機(jī)率,這也是激發(fā)x86處理器擁有強(qiáng)大非循序指令執(zhí)行(暫存器重新更名)與高效率記憶體子系統(tǒng)的主因。

  「讓人感到極度痛苦的定址模式」(extremely painful addressing scheme):定址模式講得白話一點(diǎn)是「存取所需運(yùn)算元(運(yùn)算的目標(biāo),例如某個(gè)暫存器或某個(gè)記憶體位址)的方式」,歷經(jīng)多年疊床架屋的x86定址模式,尤其是惡名昭彰的節(jié)區(qū)記憶體(Segmentation),不只加重產(chǎn)生有效位址的工作負(fù)荷,也激增整數(shù)邏輯運(yùn)算(ALU)和控制單元的復(fù)雜度,「副作用」跟第一項(xiàng)「毫無(wú)道理可尋」可謂不相上下。

  這些燙手山竽,就是1980 年代末期和1990 年代初期,眾多企圖研制高效能x86 處理器的有志之士,包含不小心制造出這些「炸彈」的英特爾,不得不面對(duì)并設(shè)法克服的挑戰(zhàn),身為x86 世界首顆「超純量(Superscalar)管線」處理器的Pentium,則是第一個(gè)提出的「有效解決方案」,英特爾為此付出了不小代價(jià)。

  一個(gè)時(shí)脈周期執(zhí)行一個(gè)以上指令的「超純量管線」

  近似近代工業(yè)生產(chǎn)線的概念,讓所有人都「閑閑有事做」的管線化(Pipeline)一直是提高效率的最基本手段,80386 的預(yù)先指令擷?。≒refetch)已有雛型,而80486 是x86世界首款真正達(dá)成指令管線化的處理器,為了確保記憶體跟得上運(yùn)算需求,也配置指令/資料共用的第一階快取記憶體,雖然真正「每個(gè)時(shí)脈周期都可穩(wěn)定輸出」者,也只限于簡(jiǎn)單的整數(shù)邏輯運(yùn)算指令。

  套句臺(tái)灣某前領(lǐng)導(dǎo)被罵翻的名言:一個(gè)便當(dāng)吃不飽,你可以花錢買第二個(gè)。執(zhí)行一個(gè)指令不夠多,當(dāng)然得想出辦法硬塞第二個(gè)。「一個(gè)時(shí)脈周期內(nèi)執(zhí)行一個(gè)以上指令」的超純量管線(Superscalar),早在1965 年發(fā)跡于RISC 始祖的CDC6600,1980 年代陸續(xù)出現(xiàn)在RISC 處理器,如1985 年P(guān)ower 前身的IBM「America」計(jì)畫(也是「超純量」一詞由來(lái))、1988 年Motorola MC88100、1989 年英特爾i960CA、1990 年AMD 29050 等。各位絕對(duì)沒(méi)看錯(cuò),英特爾、AMD 也做過(guò)RISC 處理器。

  指令管線化、超純量管線、非循序指令執(zhí)行、大型化快取記憶體等常見(jiàn)的效能加速手段,清一色優(yōu)先降臨RISC 處理器的原因,也很簡(jiǎn)單:RISC 指令集的單純性與簡(jiǎn)潔性,讓設(shè)計(jì)者更輕易導(dǎo)入這些技術(shù),并用更短的時(shí)間完成產(chǎn)品開(kāi)發(fā)與驗(yàn)證。

  1990 年代上半期,一提到高效能處理器,幾乎都由RISC 獨(dú)領(lǐng)風(fēng)騷,像至今碩果僅存的IBM Power、HP 的PA-RISC、SGI 的MIPS、Sun 的UltraSPARC、Fujitsu 的SPARC64 及充滿傳奇色彩的DEC Alpha 等,這也是「RISC 優(yōu)于CISC」的理論基礎(chǔ)。

  但「理論」是一回事,不代表CISC 的x86「實(shí)務(wù)上」做不到,更何況又是擁有一整支龐大「研發(fā)軍隊(duì)」的英特爾,革命性的第五世代x86 處理器Pentium 在1993年3 月22 日登上歷史舞臺(tái),不只要迎擊來(lái)自AMD、Cyrix、NexGen(被AMD 購(gòu)并,Nx686 變成K6)的競(jìng)爭(zhēng)產(chǎn)品(之后還多出Centaur 和Transmeta),更要面對(duì)AIM 聯(lián)盟(Apple、 IBM、Mororola,不是美國(guó)的空對(duì)空飛彈)PowerPC 的挑戰(zhàn),后者享有威鎮(zhèn)四方的「RISC 王者」IBM Power 當(dāng)強(qiáng)大后盾,市面更不乏「專書」鼓吹PowerPC 相對(duì)x86 的優(yōu)越性,把Pentium 批評(píng)得一文不值。

  更扯的是,意圖搶奪英特爾勢(shì)力范圍的IBM 還開(kāi)發(fā)了「腳位與Pentium 相容,可以同等效率硬件執(zhí)行x86 程序碼,并兼具32 / 64 位元PowerPC 指令集相容性」的PowerPC 615,要不是微軟可能覺(jué)得難搞,不符成本效益,拒絕支援這顆處理器,導(dǎo)致永遠(yuǎn)無(wú)法量產(chǎn),英特爾的處境會(huì)更危險(xiǎn)。至于PowerPC 615 取消后,研發(fā)團(tuán)隊(duì)就投靠Transmeta,接著就無(wú)疾而終了。

  也許各位難以想像「為什么x86 會(huì)受PowerPC 威脅,不是屬于不同市場(chǎng)嗎」,但此時(shí)此刻,沒(méi)半個(gè)正常人會(huì)將連伺服器市場(chǎng)邊都沾不上的x86 和「高效能」三個(gè)字聯(lián)想在一起,甚至連那時(shí)候英特爾內(nèi)部,都很少人愿意相信x86 還有未來(lái)性,否則也不會(huì)出現(xiàn)IA-64 指令集和Itanium 處理器了。況且微軟1993 年7 月發(fā)表未來(lái)操作系統(tǒng)基礎(chǔ)的Windows NT,打從一開(kāi)始就同時(shí)支援x86、MIPS 和Alpha 三版本,之后還加碼PowerPC 和IA-64,「不將雞蛋放在同一個(gè)籃子里」意圖太明顯了。

  換句話說(shuō),英特爾當(dāng)時(shí)的戰(zhàn)略地位,并不像今天如此牢不可破,更早在1990 年同步啟動(dòng)第六世代Pentium Pro 研發(fā)案,完全沒(méi)有承受失敗的本錢與余裕。

  天底下沒(méi)有白吃的午餐

  Pentium 是如假包換的x86 世界首款超純量處理器,可在同一個(gè)時(shí)脈周期內(nèi)執(zhí)行最多兩個(gè)指令,整體結(jié)構(gòu)近似雙重管線的「放大發(fā)展版」80486,但也因扛著x86指令集的原罪,由外到內(nèi)付出了不少代價(jià)。爬文至此,建議各位回頭復(fù)習(xí)一次Mike Johnson 評(píng)論的3 個(gè)重點(diǎn),你一定會(huì)更有感觸。

  我們光從初代Pentium(P5)的晶粒圖,即可清楚看到x86 相容性的代價(jià):大型化的快取記憶體(盡管實(shí)質(zhì)容量不高,但內(nèi)部結(jié)構(gòu)卻出奇復(fù)雜)、巨大的指令擷取單元、解碼與復(fù)雜指令微碼控制單元(Complex Instruction Support),這也是日后所有高效能x86 處理器的共同特色。

  指令/資料分而治之的第一階快取記憶體:x86指令集因缺乏足夠的資料暫存器,且包含了大量「暫存器/記憶體互通有無(wú)」與直接以記憶體為運(yùn)算目標(biāo)的指令,不像RISC的「載入/儲(chǔ)存」架構(gòu)「一次從記憶體抓了大量資料進(jìn)來(lái),算完后再一次性丟回記憶體」,特別需要強(qiáng)力的記憶體子系統(tǒng),所以采用指令/資料分開(kāi)的第一階快取記憶體,確保兩邊足以喂飽個(gè)別的需求。而Pentium的指令快取和資料快取,更是各自大有文章。

  前面有提及「x86 指令最大長(zhǎng)度是17Bytes」,Pentium 第一階指令快取的內(nèi)部結(jié)構(gòu),是以兩個(gè)最小存取單位16Bytes 區(qū)塊,組成單一32Bytes 的快取線(Cache-Line),假若發(fā)生最糟糕的情況,17Bytes 長(zhǎng)度的指令「橫跨」了兩條32Bytes 快取線,但仍希望一次擷取到指令管線,那該怎么辦?Pentium 導(dǎo)入跨指令線分離式擷?。⊿plit Fetch),可連續(xù)讀取橫跨邊界的兩條16Bytes 最小區(qū)塊,而指令讀取緩沖區(qū)也是4 倍于80486 的128Bytes,以確保擷取指令的效率可「喂飽」兩條管線的指令解碼器。

  順便對(duì)照一下從NexGen Nx686 發(fā)展而來(lái)的AMD K6。AMD 取消了兩倍核心時(shí)脈的第一階快取記憶體,但除了既有的預(yù)先解碼位元(Pre-decoded Bits)用來(lái)標(biāo)定指令邊界,再追加第二個(gè)指令存取埠,以應(yīng)付這種狀況。反正各家廠商都各顯神通,直到可降低指令解碼器使用率的微指令快?。╱Op cache)同時(shí)成為英特爾和AMD 的制式武裝為止。

  資料快取亦不遑多讓,資料快取具備3 個(gè)存取埠,可同時(shí)應(yīng)付來(lái)自快取資料一致性協(xié)定與雙重執(zhí)行管線的需要,更進(jìn)一步將每條32Bytes 快取線,切成彼此交錯(cuò)的8 個(gè)獨(dú)立4Bytes「Bank」,只要兩個(gè)資料存取需求不會(huì)同時(shí)使用同一個(gè)Bank,即可在單一時(shí)脈內(nèi)搞定。這是計(jì)算機(jī)工業(yè)史上的第一次嘗試,但這也大幅加重了快取記憶體的復(fù)雜度,也連帶不得不強(qiáng)化配置資料快取的虛擬/實(shí)體位址轉(zhuǎn)換緩沖區(qū)(TLB,Translation-Lookaside Buffer ),并新增判斷Bank 是否發(fā)生沖突的功能電路。

  巨大的微程序唯讀記憶體:基于「加速常用的簡(jiǎn)單指令」的理念,Pentium的指令解碼器可直接硬件解碼大多數(shù)「暫存器→記憶體」與「記憶體→暫存器」之類的「相對(duì)簡(jiǎn)單」運(yùn)算指令,但x86歷代累積下來(lái)的龐大復(fù)雜指令,還是需要?jiǎng)佑梦⒋a組成微程序產(chǎn)生控制訊號(hào)。

  Pentium 的單一微碼字元長(zhǎng)度是92Bits,總共存放了4K 數(shù)量。換言之,產(chǎn)生了高達(dá)47kB 容量的唯讀記憶體(ROM)空間,還遠(yuǎn)多于第一階快取記憶體的容量(8kB+8kB),相當(dāng)驚人,老舊指令相容性帶來(lái)的巨大負(fù)擔(dān),由此可見(jiàn)一斑,這就是維持回溯相容性,所必須付出的昂貴代價(jià)。

  4個(gè)輸入的位址計(jì)算單元:一套所謂「復(fù)雜」的指令集,除了不規(guī)則的指令編碼長(zhǎng)度,亂無(wú)章法的運(yùn)算元定址模式和記憶體定址,更是必備的條件(可回顧一下AMD Mike Johnson講過(guò)的話)。實(shí)現(xiàn)高效能的超純量管線化x86處理器,并非只需弄好管線前端的指令擷取、解碼,與執(zhí)行階段的存取記憶體,高效率的有效位址計(jì)算(Address Calculation)能力,更是x86有別于RISC體系的一大差異點(diǎn),坊間人云亦云、積非成是的「x86處理器只有指令解碼器比較難做」完全是大錯(cuò)特錯(cuò)的誤解。

  為了加速記憶體位址計(jì)算,讓執(zhí)行單位盡快得到「運(yùn)算目標(biāo)」,Pentium 的兩條指令管線個(gè)別有一套4 個(gè)輸入值的加法器(4-Input Address Adder),對(duì)應(yīng)x86 指令集產(chǎn)生有效位址的4 個(gè)數(shù)字:

  節(jié)區(qū)描述器(Segment Descriptor)提供的基底值(Base)。

  來(lái)自通用暫存器的基底位址(Base Address)。

  取自通用暫存器的索引值(Index,再加上scale)。

  指令編碼附上的的移位值(Displacement)。

  因此部分僅支援3 個(gè)輸出值的486,需耗費(fèi)兩個(gè)時(shí)脈周期完成位址計(jì)算的復(fù)雜指令,Pentium 只需一個(gè)時(shí)脈周期即可,更利于管線化執(zhí)行指令。

  但慘劇尚未劃下句點(diǎn),x86 的節(jié)區(qū)記憶體(Segment),必須強(qiáng)制檢驗(yàn)每個(gè)節(jié)區(qū)的大小,確保記憶體運(yùn)算元落在節(jié)區(qū)描述器所定義的記憶體范圍內(nèi)。80286 時(shí)代的保護(hù)模式,節(jié)區(qū)描述器會(huì)影響節(jié)區(qū)位置與體積的參數(shù),總計(jì)有:

  32 位元基底值(Base)。

  20 位元范圍值(Limit)。

  范圍值單位Page 或Byte(前者上限4GB,后者則1MB)。

  針對(duì)堆疊(Stack)資料結(jié)構(gòu)的向下擴(kuò)展(Expand-Down)欄位。

  處理器需采取不同的方式計(jì)算最高與最低位址,結(jié)果Pentium 的兩條指令管線,為此個(gè)別又得「再」加上一套4 個(gè)輸入值的加法器(4-Input Segment-Check Adder) ,為檢查節(jié)區(qū)正確性之用,而486 的情況如上述位址產(chǎn)生器,須耗費(fèi)更多時(shí)脈周期做這件事。

  為何「位址計(jì)算單元」一向是歷代x86 處理器增加執(zhí)行單元的重頭戲,原因就在此。Windows 95 刺激個(gè)人電腦普及的年代,「32 位元最佳化」的Pentium Pro 被批評(píng)「16 位元效能不佳」就因動(dòng)到資料節(jié)區(qū)暫存器的指令,無(wú)法被非循序預(yù)測(cè)執(zhí)行,會(huì)讓隨后的指令上演大塞車,到了Pentium II 才修正。即使假以時(shí)日,這些老舊包袱的使用率只會(huì)越來(lái)越低,也早不再是改善效能的重點(diǎn),但也沒(méi)人膽敢冒著犧牲軟件相容性的風(fēng)險(xiǎn),根除這些歷史遺跡。

  正面對(duì)決PowerPC 且落居下風(fēng)

  相較于同時(shí)期且較早推出的超純量RISC 處理器,就可明顯看出x86 指令集的復(fù)雜度造成的負(fù)面影響。

  以1993 年秋季上市的IBM PowerPC 601 為例,電晶體數(shù)目?jī)H280 萬(wàn),采用0.6um(600nm)制程時(shí)的晶粒面積僅121 平方公厘,卻有比電晶體310 萬(wàn)的Pentium 更高的80MHz時(shí)脈、更大一倍的32kB 指令/資料共用式第一階快取記憶體,與1.5 倍的指令執(zhí)行能力,而采用0.8um(800nm)制程的初代Pentium 是一顆16.7×17.6mm、294平方公厘的巨大芯片,完全瞠乎其后。英特爾當(dāng)時(shí)就表示,相較于同等級(jí)RISC 處理器,Pentium 有約30% 電晶體都「貢獻(xiàn)」給x86 指令集的相容性。不難想見(jiàn)那時(shí)候的「RISC 十字軍」有多high。

  而Pentium 的雙重超純量指令管線也是限制重重,只有主管線「U Pipe」可以執(zhí)行所有的x86 指令,副管線「V Pipe」僅能負(fù)責(zé)比較簡(jiǎn)單者,而要這兩條管線一起動(dòng),還需要依循指令配對(duì)規(guī)則,講白了就是「兩邊都要跑簡(jiǎn)單指令」,且涉及暫存器和記憶體兩邊資料互相搬移的指令也無(wú)能為力,就是要強(qiáng)迫其中一條管線「發(fā)呆」兩個(gè)時(shí)脈周期給你看。PowerPC 601「理所當(dāng)然」比較沒(méi)有這樣的煩惱。

  80×87 浮點(diǎn)指令集更是x86 處理器追求高效能浮點(diǎn)運(yùn)算的罩門,因「英特爾內(nèi)部溝通不良」(英特爾美國(guó)加州總部和以色列海法之間實(shí)在太遠(yuǎn)了,1970 年代末期的聯(lián)絡(luò)手段又沒(méi)像今天這么方便)誕生的「極度愚蠢」堆疊式(Stack)暫存器架構(gòu)(附贈(zèng)讓人摸不著頭緒的80 位元延伸雙倍精確度浮點(diǎn)格式),強(qiáng)迫多數(shù)浮點(diǎn)指令的運(yùn)算元,其中一個(gè)非得指定放在堆疊暫存器的頂端不可。

  英特爾在Pentium 加入FXCH 指令用來(lái)交換置頂暫存器,原本僅內(nèi)建一組浮點(diǎn)運(yùn)算單元,管線不能同時(shí)執(zhí)行兩個(gè)浮點(diǎn)運(yùn)算指令的Pentium,簡(jiǎn)單的浮點(diǎn)運(yùn)算指令可和FXCH 一同塞進(jìn)兩條指令管線,但實(shí)際上也只有執(zhí)行一個(gè)有效浮點(diǎn)運(yùn)算,況且后頭接連著的整數(shù)指令,都會(huì)被延誤最少一個(gè)時(shí)脈周期。

  判斷分支條件需「借用」整數(shù)運(yùn)算通用暫存器與執(zhí)行單元,則是80×87 另一個(gè)弱點(diǎn),從一個(gè)浮點(diǎn)運(yùn)算設(shè)定條件碼、將浮點(diǎn)運(yùn)算的執(zhí)行資訊搬移至通用暫存器、傳送至條件碼暫存器,再依據(jù)其結(jié)果,啟動(dòng)正常的分支處理流程,Pentium 整整耗時(shí)9 個(gè)時(shí)脈周期。當(dāng)然可透過(guò)「插入」其他整數(shù)指令來(lái)降低效能損失,但無(wú)法彌補(bǔ)當(dāng)執(zhí)行條件判斷密集的程序,整數(shù)浮點(diǎn)單元之間反覆「踢皮球」的傷害。

  這些在今天只會(huì)讓人覺(jué)得很荒謬的往事,讓Pentium 的浮點(diǎn)性能仍遠(yuǎn)遠(yuǎn)不及同時(shí)期的RISC 處理器,只能在x86 的世界當(dāng)大王,這宿疾到了新一代Pentium Pro 依舊無(wú)解,同期MIPS R10000 的SPECfp92 浮點(diǎn)效能還是Pentium Pro 的「3 倍」以上,還因?yàn)镻owerPC「外掛」AltiVec 而一度被拉開(kāi)差距到差點(diǎn)看不見(jiàn)車尾燈的程度。

  直到Pentium III(Katmai)開(kāi)始擴(kuò)充SIMD(單一指令,多重資料流)浮點(diǎn)指令集SSE、初代Pentium 4(Willamette)的SSE2 新增雙倍精確度浮點(diǎn)格式,一路到Sandy Bridge 的AVX,引入VEX (Vector Extension)標(biāo)頭,一口氣解放了過(guò)去x86 指令編碼帶來(lái)的重重枷鎖,才算功德圓滿。

  但即使看似出師不利,x86 指令集的沉重包袱,并未讓英特爾就此停下腳步,依然持續(xù)精進(jìn)Pentium 處理器,就算沒(méi)有一鼓作氣打開(kāi)天堂大門,卻也讓緊閉已久的門縫滲出充滿希望的曙光。

  從企圖殺入很長(zhǎng)一段時(shí)間內(nèi)「可遠(yuǎn)觀不可褻玩焉」的伺服器市場(chǎng),預(yù)期Windows 95 激發(fā)個(gè)人電腦市場(chǎng)爆發(fā)性成長(zhǎng)時(shí),補(bǔ)足高效能桌機(jī)和筆記型電腦需要的基本功能,到迎合「多媒體」的新潮技術(shù)營(yíng)銷名詞,無(wú)不是英特爾1990 年代初期念茲在茲的技術(shù)發(fā)展重點(diǎn)。這些努力的痕跡,統(tǒng)統(tǒng)一字不漏深深刻在Pentium 和整個(gè)計(jì)算機(jī)工業(yè)的歷史上。

  原汁原味的多處理器支援性

  「多處理器支援性」是進(jìn)入工作站與伺服器市場(chǎng)的最低門檻入門票,而Pentium 則是x86 歷史上首度「原生支援(Glueless)多處理器」的先行者,但嚴(yán)格說(shuō)來(lái),這到了0.5 um 制程的第二代Pentium(P54C)才實(shí)現(xiàn),而在此之前,也并不是沒(méi)有「多處理器x86」的存在,只是需要外掛特制的系統(tǒng)芯片組,或連操作系統(tǒng)都要特殊版本。

  一個(gè)便于實(shí)作的「無(wú)需外掛額外芯片」(Glueless)的多處理器(或多核心)環(huán)境,需具以下條件:

  分配、協(xié)調(diào)各I/O 周邊裝置存取處理器需求的能力,發(fā)出中斷(Interrupt)時(shí),知道該由哪個(gè)處理器負(fù)責(zé):標(biāo)準(zhǔn)化的中斷處理機(jī)制。

  快取記憶體資料一致性協(xié)定(Cache Coherence Protocol):回寫式(Write-Back)快取記憶體常見(jiàn)的MESI(Modified, Exclusive, Shared, Invalid)協(xié)議。

  低成本多處理器系統(tǒng)的根基:可讓多處理器共享的系統(tǒng)匯流排。

  3項(xiàng)條件之一,最重要者莫過(guò)于第一項(xiàng)。1983 年,17 名因英特爾極具野心的「32 位元微電腦大型主機(jī)」iAPX432 計(jì)畫失敗而離職的員工,創(chuàng)立的Sequent Computer Systems(1999 年被IBM 購(gòu)并,研發(fā)高階英特爾處理器的系統(tǒng)芯片組) ,就曾推出一系列采用80386 與80486 的多處理器產(chǎn)品線,但這些所費(fèi)不貲的專屬方案,仰賴特制系統(tǒng)芯片組與特化過(guò)的操作系統(tǒng),才能正確的將系統(tǒng)中斷(System Interupt)傳送到各處理器,多處理器x86 平臺(tái)仍缺標(biāo)準(zhǔn)化的中斷處理機(jī)制,并非可長(zhǎng)可久的解決之道。

  1993 年10 月27 日,也是初代Pentium 發(fā)表后的半年,英特爾首度公開(kāi)第一版「多處理器規(guī)范」(MPS,Multi-Processor Specification)與最重要的「處理器本地端先進(jìn)可程序化中斷控制器」(Local APIC,Local Advanced Programmable Interrupt Controller)與I/O 專屬的I/O APIC,取代老舊的8259 PIC。

  每個(gè)Pentium 或80486 處理器起碼要有一個(gè)Local APIC,與系統(tǒng)I/O 芯片組的I/O APIC,透過(guò)獨(dú)立于系統(tǒng)匯流排的3 位元APIC Bus,I/O APIC 將周邊裝置的中斷需求傳遞給處理器的Local APIC,以決定中斷服務(wù)需求該指派給那些處理器,踏出了低成本多x86 處理器系統(tǒng)的第一步。

  英特爾的競(jìng)爭(zhēng)對(duì)手并非沒(méi)有替代方案,1996 年上市的Cyrix 6×86 依據(jù)OpenPIC 規(guī)范,支援自家定義的SLiC,但也只有VIA 的Apollo 芯片組對(duì)應(yīng)此規(guī)格,基本上「有跟沒(méi)有一樣」,而AMD的x86 多處理器環(huán)境,更是要等到1999 年采用Alpha EV6 匯流排、理論上最多支援14 顆處理器的K7 了。

  不過(guò)初代Pentium 并未內(nèi)建Local APIC,同時(shí)期系統(tǒng)芯片組也沒(méi)有I/O APIC,要打造多顆Pentium 平臺(tái),每一顆Pentium 需外掛一顆單價(jià)高達(dá)26 美元、兼具Local APIC 與I/O APIC 兩者功能的82498DX,I/O 也需動(dòng)用一顆。換句話說(shuō),雙處理器系統(tǒng)就需要用到3 顆,怎么看都不算便宜,還會(huì)占用不少主機(jī)板空間。

  后來(lái)0.5um 制程的第二代Pentium(P54C)變成史上第一顆整合Local APIC 的x86 處理器,對(duì)應(yīng)的系統(tǒng)芯片組也陸續(xù)在南橋(South Bridge)內(nèi)建I/O APIC(未內(nèi)建者,可選配專用的82093AA I/O APIC),總算讓雙Pentium 搖身一變,成為「Glueless」的多處理器平臺(tái)。

  受制于缺陷重重的系統(tǒng)架構(gòu),如效率不足的系統(tǒng)匯流排、處理器缺乏非循序記憶體存取能力、處理器共享外部的第二階快取記憶體讓匯流排問(wèn)題更加雪上加霜等等,并未讓Pentium 在伺服器市場(chǎng)取得重大突破,到了Pentium Pro 面世后才迎刃而解,開(kāi)啟Xeon 統(tǒng)治伺服器市場(chǎng)之路,那又是另一段截然不同的故事了。

  決定處理器核心/執(zhí)行緒上限的Local APIC 與闖禍的操作系統(tǒng)支援性

  處理器核心持續(xù)激增的今日,Local APIC 最重要的角色在于決定處理器的核心與執(zhí)行緒上限。原先最早的APIC 上限是15,2000 年P(guān)entium 4 開(kāi)始出現(xiàn)的xAPIC(將APIC 的3 位元專屬匯流排直接「融入」系統(tǒng)匯流排的通訊協(xié)定,避免APIC 運(yùn)作時(shí)影響記憶體存取效能)增加到255,2008 年Nehalem 的x2APIC 更多達(dá)4294967295,可視為「無(wú)限大」。

  假如各位想多學(xué)些對(duì)親朋好友炫耀的「無(wú)用知識(shí)」,稍微花點(diǎn)腦筋,牢記一下這3 個(gè)數(shù)字的由來(lái):

  APIC:Pentium和Pentium Pro(與Pentium II、Pentium III、P6核心的Xeon)動(dòng)用Local APIC的ID暫存器24-27四個(gè)位元,16進(jìn)位的0xF(10進(jìn)位制的15)用做廣播,所以2 4 ?1=15。

  xAPIC:Pentium 4到Penryn用到Local APIC的ID暫存器24-31八個(gè)位元,16進(jìn)位的0xFF(10進(jìn)位制的255)用做廣播,所以2 8 ?1=255。

  x2APIC:Nehalem開(kāi)始使用存于MSR(Model-Specific Register)的32位元x2APIC ID,16進(jìn)位的0xFFFFFFFF(10進(jìn)位制的4294967295)用做廣播,所以2 32 ?1=4294967295。

  但帳面上的「理論值」讓人看得很爽是一回事,微軟這些操作系統(tǒng)廠商是否乖乖買單又是另一回事。很不幸的,AMD Zen2 世代EPYC 與Threadripper 將單顆處理器的實(shí)體核心術(shù)/邏輯處理器,一舉推進(jìn)到64 核/128 緒,就變成微軟Windows 的災(zāi)難了。

  一臺(tái)2顆EPYC 7742 或7702 的伺服器,擁有128 個(gè)處理器核心和256 條執(zhí)行緒,但是Windows Server 2016 和2012 R2 并不支援「AMD 新型平臺(tái)的x2APIC」,無(wú)法吃下這么多邏輯處理器。

  事實(shí)上,根據(jù)微軟的EPYC 性能調(diào)校文件,Windows Server 2019 之前的舊版Windows Server,只能支援2 顆48 核心的EPYC 和192 個(gè)邏輯處理器。安裝2019 年9 月前的Windows Server 2019,也需要事先在BIOS 關(guān)閉x2APIC 和多執(zhí)行緒,安裝完畢并裝完所有的系統(tǒng)更新檔,重新開(kāi)機(jī)進(jìn)BIOS 恢復(fù)功能,才能在工作管理員的效能選單看到全部CPU。

  再次同場(chǎng)加映AMD。剛好前陣子Anandtech 有特別報(bào)導(dǎo)的EPYC 在Windows 10 發(fā)生的災(zāi)情(盡管這和APIC 沒(méi)有關(guān)系)。Windows 系統(tǒng)核心會(huì)預(yù)設(shè)64 個(gè)CPU 組成一個(gè)「Windows Processor Group」,當(dāng)邏輯處理器超過(guò)64 個(gè),會(huì)將多出余數(shù)包成另一群,像一顆64 核/128 緒的Threadripper,就會(huì)變成一顆實(shí)體CPU 有「兩包」64 個(gè)邏輯處理器。

  但Windows 10 要企業(yè)版(Enterprise)才提供此功能,家用版(Home)和專業(yè)版(Professional)會(huì)將「滿出來(lái)的部分」,誤判為占用另一個(gè)處理器腳位的實(shí)體CPU,意思就是誤解成「兩顆」處理器的系統(tǒng),將誤導(dǎo)操作系統(tǒng)的執(zhí)行緒排程,降低系統(tǒng)效能,這時(shí)關(guān)掉多執(zhí)行緒,很可能表現(xiàn)還比較好。

  在計(jì)算機(jī)的世界,任何「看起來(lái)很棒」的技術(shù)和功能,無(wú)不是「軟硬兼?zhèn)洹沟某晒?dāng)入手頂規(guī)的硬件時(shí),也請(qǐng)多多關(guān)心手上的軟件環(huán)境是否可發(fā)揮最高效益。筆者現(xiàn)在都可以猜到花大錢買TR 3990X 的「長(zhǎng)輩」急著升級(jí)Windows 10 企業(yè)版的畫面了。

  「讓人比較有感」的指令集擴(kuò)張

  如果能讓筆者選擇,其實(shí)x86 指令集擴(kuò)張史中最重要的一幕,絕對(duì)是邁向32 位元的80386、虛擬86 模式(Virtual 8086 Mode)與具備分頁(yè)表的虛擬記憶體。但事隔多年,印象最深刻的,依舊對(duì)個(gè)人電腦市場(chǎng)規(guī)模爆炸式成長(zhǎng)、使用者急速增加的1990 年代,英特爾在Pentium 家族干的一堆好事,包括極具歷史意義的第一次SIMD 擴(kuò)張:MMX。

  相信各位不可能不知道CPUID 這經(jīng)常用來(lái)辨識(shí)處理器廠牌、功能、版本與規(guī)格的好工具,但你們知道背后作這件事的「CPUID」指令,就是從Pentium 開(kāi)始登場(chǎng)的嗎?眾多程序設(shè)計(jì)師計(jì)算指令執(zhí)行周期數(shù)的RDTSC(Read Time-Stamp Counter),也伴隨著Pentium 而生。用在操作系統(tǒng)避免不同執(zhí)行緒同時(shí)對(duì)共用資源讀寫「互斥鎖」的CMPXCHG8B(Compare and Exchange 8 Bytes),也是小有名氣,Windows XP 就是因這個(gè)必備指令,無(wú)法執(zhí)行于Pentium 之前的所有x86處理器。

  前面有提到MSR(Model-Specific Register),意指在x86 架構(gòu)處理器中,一系列用于控制處理器執(zhí)行、功能開(kāi)關(guān)、除錯(cuò)、追蹤程序執(zhí)行、監(jiān)測(cè)處理器效能等功能的暫存器。MSR 的雛形始于80386 和80486,到了Pentium,英特爾新增RDMSR(Read MSR)和WRMSR(Write MSR)指令用于讀寫MSR,使其真正的實(shí)用化。此外,軟件可透過(guò)前述的CPUID 指令,查詢處理器可支援的功能,并確認(rèn)這些功能對(duì)應(yīng)的MSR 是否存在。

  同時(shí)英特爾在Pentium「復(fù)刻」筆電專用的80386SL 和80486SL 處理器,那獨(dú)立于真實(shí)模式和保護(hù)模式,干了哪些好事,連操作系統(tǒng)都不知情的系統(tǒng)管理模式(SMM,System Management Mode)。英特爾制定SMM 的初衷,在于讓筆電OEM 廠商自訂必備的電源管理與周邊裝置管理,如為了省電,動(dòng)態(tài)關(guān)閉用不到的周邊設(shè)備,需要時(shí)再重新啟動(dòng)等,將SMM 從「特殊武器」提拔成「制式裝備」,暗示英特爾認(rèn)定筆電即將普及化的未來(lái)。

  順道一題,相對(duì)于x86 指令集在節(jié)區(qū)定址定義4 層權(quán)限的Ring 0 到Ring 3(數(shù)字越小權(quán)力越大),SMM 的權(quán)限經(jīng)常戲稱為Ring -2,那Ring -1 跑到哪去了?答案是x86 硬件虛擬化技術(shù)用來(lái)攔截「在使用者模式仍會(huì)更動(dòng)系統(tǒng)底層的危險(xiǎn)指令」的Hypervisor 權(quán)限。

  這些指令集擴(kuò)張看似微不足道,遠(yuǎn)不如那票SIMD(MMX、SSE、SSE2、SSE3、SSE4、AVX、AVX-512)「華麗壯大」,卻也是不可或缺的基本功,同為「高效能處理器不可被分割的一部分」。但Pentium 史上最知名的指令集MMX,就是一場(chǎng)歡樂(lè)異常的連續(xù)劇了。

  為了MMX 讓Pentium 被迫大興土木、脫胎換骨

  Windows 95 帶動(dòng)個(gè)人電腦的多媒體需求,英特爾自然不能免俗,勢(shì)必要讓處理器跟「多媒體」沾上邊,試圖推動(dòng)主機(jī)板加掛一顆來(lái)自第三方的數(shù)位訊號(hào)處理器(DSP),專門處理即時(shí)性影音應(yīng)用程序。但因?yàn)镹SP 的運(yùn)作模式是獨(dú)立于操作系統(tǒng)的化外之民,等于需要操作系統(tǒng)開(kāi)后門,微軟為此拒絕買單,因此胎死腹中,才出現(xiàn)了MMX。

  打從英特爾在1996 年,拋出MMX 這從未講清楚說(shuō)明白的「無(wú)意義技術(shù)營(yíng)銷商標(biāo)」,全名一直眾說(shuō)紛紜、莫衷一是,還先后出現(xiàn)3 個(gè)版本:

  MultiMedia eXtension

  Multiple Math eXtension

  Matrix Math eXtension

  名稱怎樣不重要,各位只要記得一件事:為了操作系統(tǒng)相容性,MMX 指令集借用x87 浮點(diǎn)運(yùn)算暫存器(80 位元中的64 位元)的SIMD「整數(shù)」運(yùn)算,這樣就夠了。英特爾定義全新SIMD 暫存器,從Pentium III「Kaimai」的SSE(KNI,Katmai New Instructions)才開(kāi)始。

  指令集的編碼空間畢竟有限,英特爾要從哪里擠出這57 個(gè)指令的位置?英特爾將腦袋動(dòng)到「0Fh」開(kāi)頭的運(yùn)算碼(Opcode),這卻造成前所未見(jiàn)的麻煩:過(guò)去0Fh 的主要用途「當(dāng)處理器的解碼器收到時(shí),自動(dòng)將該指令執(zhí)行流程跳到外掛的輔助處理器」,當(dāng)初英特爾就靠這招來(lái)處理8087 浮點(diǎn)輔助處理器,0Fh 開(kāi)頭的x86 指令都不是什么「需要追求效率」者,也因此,Pentium 的指令解碼器也沒(méi)有特別「關(guān)照」它們,意味著難以迅速完成解碼MMX 指令的重責(zé)大任。

  主導(dǎo)Pentium MMX(P55C)研發(fā)的以色列海法團(tuán)隊(duì),不得不大興土木,將指令管線深度從五階延長(zhǎng)到六階,爭(zhēng)取足夠的指令解碼時(shí)間。多這一階并非有害無(wú)益,因?yàn)閳?zhí)行單元將有更充裕的時(shí)間存取資料快取,并縮短電路的關(guān)鍵路徑,利于提高時(shí)脈,讓Pentium MMX 最終可到達(dá)300MHz,比前代P54C 多出整整50%。

  但延長(zhǎng)指令管線也帶來(lái)更嚴(yán)重的分支預(yù)測(cè)錯(cuò)誤代價(jià),英特爾索性將「管線深度長(zhǎng)達(dá)12 階」的第六世代Pentium Pro 搭載的雙層動(dòng)態(tài)分支預(yù)測(cè)與副程序返回位址緩沖區(qū)等先進(jìn)技術(shù),原封不動(dòng)的逆向移植到Pentium MMX,亦倍增快取記憶體和資料寫回緩沖區(qū),轉(zhuǎn)換虛擬和實(shí)體記憶體位址的TLB,也強(qiáng)化為可同時(shí)處理兩種不同分頁(yè)大小的版本,種種改進(jìn)項(xiàng)目仿佛威而剛,讓吃下藍(lán)色小藥丸的Pentium MMX 搖身一變成「5.5 代」x86 處理器。

  為了減少耗電與發(fā)熱,英特爾將MMX 執(zhí)行單元與實(shí)體暫存器獨(dú)立于x87 浮點(diǎn)運(yùn)算器,執(zhí)行MMX 指令時(shí),因指令集定義「邏輯上MMX 和x87 浮點(diǎn)無(wú)法同時(shí)執(zhí)行」,可關(guān)閉「吃電如喝水」般的浮點(diǎn)單元以節(jié)約電力,可是結(jié)合加倍的快取記憶體和種種增強(qiáng)方案,P55C 電晶體數(shù)從P54C 的330 萬(wàn)激增到450 萬(wàn),制程從「不計(jì)多出10%芯片面積以追求最高時(shí)脈」的350 奈米BiCMOS 改進(jìn)為「自此英特爾轉(zhuǎn)向追求更低成本并降低耗電」的280 奈米CMOS,芯片面積和制造成本仍足足比P54C 多50%。

  Pentium MMX 在1997 年1 月上市沒(méi)多久,同年5 月同樣支援MMX 的Pentium II 就以「塑膠大彈夾」外觀,現(xiàn)身于各地電腦賣場(chǎng)的玻璃柜,無(wú)論怎么看,Pentium MMX 都是過(guò)渡期強(qiáng)烈的尷尬產(chǎn)物。

  但Pentium MMX 對(duì)英特爾在以色列海法的研發(fā)團(tuán)隊(duì)而言,卻是極為重要的歷史里程碑,建立起「擅長(zhǎng)精煉現(xiàn)有架構(gòu)壓榨更多價(jià)值」的名號(hào),接連重塑P6 微架構(gòu)成為Centrino 心臟的Pentium M (Banias, Dothan)、當(dāng)英特爾在Pentium 4(NetBurst)慘遭滑鐵盧的危急存亡之秋端出Core 2(Merom, Conroe, Woodcrest)救駕成功、融合P6 與NetBurst 之長(zhǎng)的Sandy Bridge 終結(jié)AMD K8 的輝煌歲月、直到「奮六世之余烈」集大成的「終極x86 微架構(gòu)」Skylake,清一色都是出自以色列海法團(tuán)隊(duì)的不朽杰作。

  x86 指令集長(zhǎng)期欠缺標(biāo)準(zhǔn)造成競(jìng)爭(zhēng)對(duì)手與軟件開(kāi)發(fā)商的困擾

  Pentium 的「歷史地位」倒是值得另外添一筆:x86 指令集欠缺公開(kāi)業(yè)界標(biāo)準(zhǔn),搞死不少人的陳年舊帳,終于正式浮上臺(tái)面。

  Pentium Pro 總工程師之一的Robert Colwell 回憶錄《The Pentium Chronicles》說(shuō)過(guò),開(kāi)發(fā)一顆x86 處理器,最艱巨的挑戰(zhàn)在于「如何保證可相容所有舊程序」。特別早期x86 處理器,很多未定義的運(yùn)算碼(Opcode)并沒(méi)有遮掉,被人發(fā)現(xiàn)又拿來(lái)用了,以后的處理器開(kāi)發(fā)人員就只能乖乖想辦法「塞」進(jìn)去,前提是你也要知道這些陷阱到底藏在哪里。

  各位是否天真的以為所有x86 處理器廠商的產(chǎn)品,都保證彼此相容,可執(zhí)行一模一樣的軟件?很遺憾的,這種好事從來(lái)就不存在英特爾統(tǒng)治的x86 世界(最起碼,前陣子讓Linus Torvalds 大暴走的AVX-512,AMD 現(xiàn)有產(chǎn)品也是付之闕如),英特爾在Pentium 時(shí)代的所作所為就是最好例證,讓初版使用者手冊(cè)描述新增指令的「附錄H」故意保持完全空白,英特爾的競(jìng)爭(zhēng)者與軟件開(kāi)發(fā)商紛紛變成倒楣的苦主。

  英特爾并不像那票會(huì)定期推出版本演進(jìn)與相關(guān)規(guī)范的RISC 指令集(有關(guān)心ARM 的讀者應(yīng)該很清楚)、積極推廣自家指令集給其他潛在競(jìng)爭(zhēng)對(duì)手,而是完全不管其他人死活。想研發(fā)x86 相容處理器的有志之士,假若沒(méi)有跟英特爾簽訂互相授權(quán)協(xié)議,只有兩條路可選:乖乖用電子顯微鏡默默研究英特爾處理器的晶粒,嘗試逆向工程,要不然就干脆不支援不顧相容性,碰到就視為非法指令,剩下的爛攤子就丟給操作系統(tǒng)廠商傷透腦筋了。

  像Cyrix 在被National Semiconductor 購(gòu)并前,壓根沒(méi)有英特爾技術(shù)授權(quán),只能悶著頭逆向工程慢慢搞,自然也無(wú)法100% 相容,讓號(hào)稱「第六世代」的6×86,連CPUID 和RDTSC都付之闕如,指令集相容水準(zhǔn)只有80486 等級(jí),甚至還得逼迫軟件廠商撰寫修正程序。同時(shí)期的AMD 則是不計(jì)代價(jià)拼死拼活,都要藉由逆向工程擠出100% 相容性,下場(chǎng)就是產(chǎn)品上市延誤,錯(cuò)失商機(jī),還虧當(dāng)初Compaq 傻傻不肯推出Pentium 個(gè)人電腦,寧愿癡癡等待AMD K5,更慘的是,撐到最后還是等不到。

  英特爾競(jìng)爭(zhēng)者也都不是省油的燈,不遑多讓搶著跳出來(lái)扮演「麻煩制造者」,自行定義「兄弟獨(dú)有之創(chuàng)見(jiàn)」的自家指令,不僅企圖爭(zhēng)奪x86 指令集的主導(dǎo)權(quán),并強(qiáng)化產(chǎn)品效能及營(yíng)銷籌碼,像AMD K6 的3DNow!、AMD K8 的x86-64,Cyrix 6x86MX 的EMMI 與Cyrix III 的MMX-FP,Centaur 一度想不開(kāi)的57 個(gè)SIMD 浮點(diǎn)指令和22 個(gè)自定義浮點(diǎn)暫存器,都是斑斑可考的歷史陳?ài)E。

  AMD 還一度想不開(kāi),搶先注冊(cè)「SSE5」,擺明跟英特爾AVX 打?qū)ε_(tái),還好在2009 年5 月6 日緊急采煞車,宣布「皈依」AVX,但還是忍不住撈過(guò)界「補(bǔ)完」被英特爾廢除的四運(yùn)算元指令格式(xmm1=xmm2×xmm3+m32)。AMD 要開(kāi)始支援亂成一團(tuán)的AVX-512 并完全相容,大概也是很久以后的未來(lái)了。

  回顧這些年來(lái)的x86 指令集擴(kuò)充戰(zhàn)爭(zhēng),唯一從英特爾手上搶下先機(jī)的,也只有AMD x86-64 那次,還是微軟私下威脅「不打算支援兩種不同的64 位元x86」(英特爾本來(lái)有自己的Yamhill,但為了保護(hù)IA-64 遲遲不肯拿出來(lái))強(qiáng)迫英特爾接受的結(jié)果。

  最初英特爾多心不甘情不愿、打死都不承認(rèn)64 位元x86 存在的「IA-32e」和AMD x86-64 也并非一模一樣,英特爾獨(dú)占CMPXCHG16B(Pentium 那個(gè)CMPXCHG8B 的進(jìn)階版)和SSE3,AMD 多出分頁(yè)表NX(No Execute)保護(hù)位元和3DNow!。談到x86 處理器廠商要彼此100% 水乳交融,說(shuō)有多麻煩就有多麻煩,說(shuō)微軟有多火大就有多火大。

  不過(guò)亂象還是持續(xù)延燒,還燒到虛擬化領(lǐng)域,近十多年來(lái)虛擬化應(yīng)用快速普及,然后2005 年英特爾VT-x(Vanderpool)和2006 年AMD AMD-V(Pacifica),雙方根本就是各搞各的,老死不相往來(lái),讓VMware vMotion 此類不停機(jī)的虛擬機(jī)動(dòng)態(tài)遷移技術(shù),遲遲跨越不了不同x86 處理器廠商的邊界,無(wú)形中也局限了x86 處理器「向上發(fā)展」的潛力,目睹此景,IBM 應(yīng)該會(huì)繼續(xù)開(kāi)心下去。

  重塑x86 處理器世界觀的歷史認(rèn)知

  行文至此,想必各位看官臉上已掛著顫抖的嘴角與充滿劫后余生的表情,或多或少逐步解構(gòu)并重組過(guò)往對(duì)個(gè)人電腦市場(chǎng)與x86 處理器演進(jìn)史的認(rèn)知,有可能瞬間茅塞頓開(kāi),也有可能繼續(xù)滿頭問(wèn)號(hào)。

  本文并非教科書,而是經(jīng)由復(fù)習(xí)坊間甚少重視的歷史背景與不容易注意到的細(xì)節(jié),體認(rèn)到平日陪伺在旁、習(xí)以為常的x86 處理器,能走到今天是多么不容易的一件事。羅馬不是一天造成,英特爾的霸權(quán)也不是平白從天上掉下來(lái),這些年來(lái)我們一同擠過(guò)這么多條牙膏,更不是毫無(wú)苦衷。

  身為英特爾1990 年代「Landmark」芯片與無(wú)數(shù)潛藏已久歷史暗流的縮影,Pentium 帶來(lái)x86 世界太多「第一次」,承先啟后,奠定25 年技術(shù)演進(jìn)與市場(chǎng)發(fā)展的基礎(chǔ)邏輯。畢竟電腦是人類創(chuàng)造的東西,背后的人性和思維遠(yuǎn)遠(yuǎn)超越技術(shù)。英特爾可靠開(kāi)創(chuàng)新局的Pentium 與繼往開(kāi)來(lái)的Pentium Pro,在眾多敵人環(huán)伺下殺出一條通往全新市場(chǎng)血路過(guò)程中「產(chǎn)生的價(jià)值」,如「技術(shù)領(lǐng)先無(wú)法保證商業(yè)勝利」和「成功的產(chǎn)品往往是折衷妥協(xié)后的產(chǎn)物」,統(tǒng)統(tǒng)很有意思,更值得各位細(xì)細(xì)品味。

  關(guān)于Pentium,似乎筆者不小心遺漏了什么,聽(tīng)說(shuō)跟浮點(diǎn)除法(FDIV)有關(guān)?算了,就當(dāng)作提醒世人,再精密復(fù)雜的處理器,也會(huì)因臭蟲出包的教訓(xùn)吧。



本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 一级a性色生活片久久毛片 一级a性色生活片久久毛片明星 | av网页在线观看 | 久久婷婷丁香五月综合五 | 老司机久久精品视频 | 91社影院| 四虎永久免费观看 | 少妇精品一区二区三区在线观看 | 牛牛视频一区二区三区 | 婚后日日高h文孕 | 中文字幕免费观看视频 | 精品欧美成人高清在线观看 | 亚洲成人av免费观看 | 成年人看的黄色片 | 国产一区二区三区不卡av | 日韩中出在线 | 你懂的网址国产欧美 | 国产一区二区三区免费观看网站上 | 毛片网在线 | 不卡的一区二区 | 久草a在线 | 夜夜爽日日澡人人添 | 超h高h污肉校园np在线观看 | 大又大粗又爽又黄少妇毛片 | 久久亚洲中文字幕无码 | 午夜精品一区二区三区在线播放 | 九九视频在线观看视频6 | 九九热1 | 中文在线最新版天堂 | 94久久国产乱子伦精品免费 | 天天曰 | 免费看毛片的网站 | 99久久精品日本一区二区免费 | 精品一区二区视频 | 人人爽久久涩噜噜噜av | 久射久 | 国产理论视频在线观看 | 91精品国产综合久久久蜜臀 | 在线不卡一区 | 九九九在线视频 | 大香伊人久久 | 国产日韩不卡 | 日本人六九视频69jzz免费 | 亚洲 小说 欧美 激情 另类 | 日本欧美在线观看视频 | 夜夜躁狠狠躁日日躁 | 成人在线日韩 | av大片在线免费观看 | 久久99热狠狠色精品一区 | 久久久久久久久久久动漫 | wwwxx国产| 九九热re | 久久久久人妻一区精品性色av | 国产亚洲精品女人久久久久久 | 亚洲精品无人区 | 激情综合色五月六月婷婷 | 亚洲精品一区中文字幕乱码 | 欧美不卡 | 女人av| 成人夜色视频网站在线观看 | 亚洲色图25p | 综合色综合 | www久久久久| 亚洲 欧美 中文 日韩aⅴ | 91久久精品国产91性色69 | 无套内谢大学处破女www小说 | xxxxxx睡少妇xxxx | 一级特黄高清 | 精品久久久网站 | 亚洲综合精品 | 91美女精品| 青青青青青手机视频在线观看视频 | 国产成人亚洲欧洲在线 | 欧美v日韩v | 大胆欧美gogo免费视频一二区 | 狠狠久久 | 久久久午夜爽爽一区二区三区三州 | 日本人麻豆 | 欧美在线观看一区 | 麻豆安全免费网址入口 | 久久奸 | 国产真实乱对白精彩 | 国产精品不卡视频 | 97看片吧| 久久香综合精品久久伊人 | 日本xxxxxxxxx96| 欧美一级黄色片 | 少妇又色又爽又高潮极品 | 性生交大片免费全片 | 成人在线网站观看 | 国产激情免费视频在线观看 | 挺进邻居丰满少妇的身体 | 久久久6精品成人午夜51777 | 久久人人爽爽爽人久久久 | 羞羞午夜福利免费视频 | 欧美乱做爰xxxⅹ久久久 | 黄色片日韩 | 国产精品美女久久久久av福利 | 国产精品久久久久久52avav | 国产精品人成 | 丰满少妇麻豆av苏语棠 | 外国特级免费片 | 欧美一区二区成人 | 韩国三级在线 | 看全色黄大色大片60岁 | 中文字幕无线观看中文字幕 | 国产成人av在线 | 91porny在线| 免费在线观看毛片 | 黄色aa视频 | 欧美成人免费看 | 免费国产视频 | 久久久久99精品成人片直播 | 午夜国产福利在线 | 亚洲制服丝袜诱惑 | 精品超清无码视频在线观看 | 久久婷婷五月综合色99啪 | 亚洲国产一线二线三线 | 九九热在线视频观看 | 黄网在线观看视频 | 久久免费在线观看视频 | 国产69精品久久久久777 | 少妇av在线播放 | 国产绿帽口舌视频vk | 黄色精品在线 | 国产精品欧美激情 | 亚洲成人在线免费 | 小sao货水好多真紧h视频, | 香蕉视频久久久 | 国产成人精品a视频一区www | 18以下勿进色禁网站 | 福利cosplayh裸体の福利 | 国产精品人| 黄色高清视频在线观看 | 久久久久久久人妻无码中文字幕爆 | jlzzzjlzzz国产免费观看 | 亚洲专区在线播放 | 国产精品人人人人 | 在线观看免费小视频 | 俺去俺来也在线www色官网 | 伊人网在线视频观看 | 91久久国产综合久久91精品网站 | 97久久久久久久久久久久 | 少妇视频 | 国产成人精品亚洲日本在线观看 | 久艹在线观看视频 | 国产igao为爱做激情在线观看 | 久久精品国产精品亚洲艾草网 | 久久亚洲a v | 国产真实偷乱视频 | 日韩区在线 | 成年人看的黄色 | 亚洲国产成人精品久久 | 国产裸体歌舞一区二区 | 日韩精品无码一本二本三本色 | 亚洲欧美成人中文日韩电影网站 | 性网| 久久免费观看视频 | 色婷婷久久一区二区三区麻豆 | 久久国产精品无码网站 | 91抖音成人| 色黄啪啪网 | 波多野结衣高清在线 | 六十路熟妇乱子伦 | 国产免费黄色大片 | 猫咪免费人成网站www | wwwcom黄色片 | 91亚洲影院 | 真实亲伦对白清晰在线播放 | www黄色国产 | 三及毛片| 成年人在线免费 | 国产精品入口久久 | 高清不卡视频 | 女女同性女同一区二区三区av | 久久综合99re88久久爱 | 中国少妇内射xxxhd | 内地级a艳片高清免费播放 内谢老女人视频在线观看 嫩草99 | 免费一级片在线观看 | 国产精品中文字幕在线 | 亚洲精品一区二区三区香 | 波多野结衣在线播放 | 亚洲精品久久久久久久蜜桃 | 夜夜性日日交xxx性视频 | 国产欧美日韩在线观看 | 亚洲熟色妇av日韩熟色妇在线 | 夜夜精品无码一区二区三区 | av小四郎在线最新地址 | 国产人妻久久精品二区三区特黄 | 免费看黄色三级三级 | 日韩性大片 | 99精品视频免费 | 嫩草影院在线观看视频 | 少妇性l交大片免潘金莲 | 青春草在线视频免费观看 | 国产主播第一页 | 国产专区视频 | 中文字幕一精品亚洲无线一区 | 一本色道综合久久欧美日韩精品 | 久久精品国内 | 森泽佳奈作品在线观看 | 99久久精品国产一区二区三区 | 久久免费视频6 | 亚一区 | 欧洲丰满少妇做爰 | 日本高清免费在线 | 丝袜+亚洲+另类+欧美+变态 | 国产一区二区网 | 国产午夜禁区精品视频 | 亚洲欧美一级久久精品国产特黄 | 日本a级c片免费看三区 | 永久免费网站直接看 | 少妇高潮a一级 | 国产小视频网站 | 亚洲天堂影院 | 黄色片子视频 | 亚洲精品欧洲 | 欧美 国产 综合 欧美 视频 | 成人欧美一区二区三区1314 | 亚洲国产精品精华液999 | 五月婷婷婷婷 | 欧美一区二区高清 | 国产一区二区不卡在线 | 精品亚洲午夜久久久久91 | 国产精品99久久久久久www | 98国产精品午夜免费福利视频 | 国产偷v国产偷v精品视频 | 国产精品亚洲αv天堂无码 久久精品a一国产成人免费网站 | 欧美性淫爽ww久久久久无 | 亚洲深夜福利视频 | 欧美做爰性生交视频 | 成年午夜无码av片在线观看 | 爱久久av一区二区三区 | 久久久久久久免费 | 精品久久久久久中文字幕大豆网 | 午夜无码区在线观看 | 国产做爰全免费的视频黑人 | 成年人免费网站在线观看 | 强开小受嫩苞第一次免费视频 | 中文字幕日产乱码中文字幕 | 8050午夜二级无码中文字幕 | 鲁鲁在线 | 国产免费黄色录像 | 久久久受www免费人成 | 手机成人在线视频 | 国产极品福利 | 久草免费在线色站 | 国产精品苏妲己野外勾搭 | 亚洲我射av | 国人天堂va在线观看免费 | 日本www色视频 | 色哟哟在线观看视频 | 亚洲精品av久久久久久久影院 | 伊人嫩草久久欧美站 | 成人三级黄色片 | 五十路熟妇高熟无码视频 | 91亚洲精品乱码久久久久久蜜桃 | 草逼视频免费看 | 国产二区三区视频 | 日韩精品成人免费观看视频 | 日本xxxx色| 日本六九视频69jzz | 俺去俺来也在线www色官网 | 免费毛片一区二区三区 | 欧美自拍另类欧美综合图片区 | 日本不卡视频在线播放 | 99精品国产综合久久久久久 | 人妻丰满熟妇av无码区 | 中文日韩一区二区 | 日本大片免a费观看视频 | 亚洲自拍色图 | 欧美成人tv | 亚洲蜜桃精久天干天干天啪啪夜l | 深夜在线播放 | 五级黄高潮片90分钟视频 | 欧美亚洲精品suv一区 | 成人看片黄a免费看视频 | 中文字幕日韩精品一区 | 绯色av一区二区 | 深夜精品视频 | www.男女 | 欧美成人综合视频 | 成人无码精品一区二区三区 | 国产高清黄色 | 波多野结衣在线观看一区 | 欧美美女一区 | 国产tv在线观看 | 欧美亚洲国产一区二区三区 | 中文字幕无码免费久久 | 色婷婷亚洲一区二区三区 | 少妇人妻偷人精品免费视频 | 天天舔天天干 | 免费又黄又爽又猛的毛片 | 一级全黄少妇性色生活免费看 | 国产调教打屁股xxxx网站 | 夜夜撸影院 | 久久无码中文字幕免费影院蜜桃 | 在线精品自偷自拍无码 | 老太婆性杂交欧美肥老太 | 亚洲精品久久久久中文字幕二区 | 欧美在线不卡视频 | 国产福利91精品一区二区三区 | 在线观看91精品国产网站 | 久久久久久久久蜜桃 | 国产福利片在线 | 国产成人无码午夜视频在线观看 | 欧美视频在线一区 | 欧美熟妇另类久久久久久多毛 | 一交一性一色一伦一区二 | 噜噜色av| 国产在线观看无码免费视频 | 好男人社区www在线观看 | 婷婷色在线播放 | 髙清国产性猛交xxxand | 天天弄天天干 | 粉嫩av免费一区二区三区 | 亚洲成人黄色在线 | 少妇资源 | 久久综合九色综合97网 | 波多野结衣不卡 | 国产午夜福利短视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美天堂在线 | 黄色av免费网址 | 女超人h版av在线看 女儿的朋友4在线观看 | 国内精品久久久久影院薰衣草 | 大黄网站在线观看 | 欧美大片无中文字幕 | 亚洲女则毛耸耸bbw 亚洲女子a中天字幕 | 久久人妻无码一区二区 | 国产91对白在线播 | 国产一区二区三区免费 | 国产一区二区av在线 | 一本久久a久久精品综合 | 搞逼综合网 | 青青青国产精品一区二区 | 韩国一区二区视频 | 日韩欧美网址 | 制服丝袜一区 | 日韩专区一区 | 精品区一区二区三区 | 日本免费一区二区三区四区五六区 | 激烈娇喘叫1v1高h糙汉 | 少妇人妻偷人精品无码视频 | 久久久午夜影院 | 欧美性xxxx极品少妇 | 亚洲春色成人 | 秋霞无码一区二区 | 国产又粗又硬又大爽黄老大爷视 | 暖暖视频日本在线观看 | 亚洲永久精品ww.7491进入 | 8x8ⅹ国产精品一区二区 | 狠狠综合久久av一区二区小说 | 能看的av网站| 一区二区三区不卡视频 | 六月婷婷七月丁香 | 国产精品国产精品国产专区不卡 | 人人爽人人爽人人爽人人爽 | 欧美激情18 | 最近中文字幕在线中文高清版 | 国产精品久久久久久久9999 | 精品国产91久久久久 | 美女福利影院 | 欧美一级二级三级视频 | 久久久国产精品消防器材 | 国产乱淫av国产8 | 日本不卡视频 | 特级西西444www大胆免费看 | 欧美黄页| 亚洲黄色毛片 | 一区二区三区四区免费 | 极品少妇xxxx精品少妇小说 | 国产午夜视频在线观看 | 国产在线拍揄自揄拍无码视频 | 久久不见久久见免费影院视频 | 无码办公室丝袜ol中文字幕 | 91亚洲精品视频 | 99久久久无码国产精品试看 | 国产亚洲精品精品精品 | 色免费视频| 97国产大学生情侣白嫩酒店 | 男女日屁视频 | 九色国产视频 | 国产亚洲精品精品国产亚洲综合 | 国产午夜精品一区二区三区四区 | 麻豆 美女 丝袜 人妻 中文 | 国产一区二区三区欧美 | 成人网18免费网站 | 一本一道久久综合狠狠老 | 一二三四精品 | 伊人久久在线 | 韩日三级视频 | 97综合网| 欧美色一级 | 欧美性猛交xxxx乱大交 | 大胸美女拍拍18在线观看 | 石原莉奈一区二区三区在线观看 | 中文字幕一区不卡 | 男人综合网 | 久久天堂av综合合色蜜桃网 | 九草影院 | 在线日韩欧美 | 福利视频在线播放 | 日韩精品一区二区三区在线观看视频网站 | 色妞色视频一区二区三区四区 | 日韩中文字幕在线一区二区三区 | 日韩激情综合 | 深夜福利视频网站 | 亚洲激情精品 | www国产亚洲精品久久麻豆 | 欧美黑人又粗又大的性格特点 | 91视频青青草 | 成年人免费视频观看 | 国产天堂第一区 | 无码人妻精品一区二区蜜桃网站 | 国产精品99久久免费黑人人妻 | 久久精品一区二区三区四区毛片 | 亚洲色图欧美视频 | 亚洲成av人片在线播放无码 | 青青草伊人 | 伊人情人色综合网站 | 色欲久久久天天天综合网精品 | heyzo综合国产精品216 | 国产精品福利小视频 | 亚洲黄色一区二区三区 | 久久福利免费视频 | 2019高清中文字幕在线免费看 | 欧洲美色妇ⅹxxxxx欧美 | 婷婷久久精品 | 亚洲激情四射 | 激情开心成人网 | 9色av| 黑人巨大精品欧美一区 | 国产精品无码永久免费888 | 亚洲制服一区 | 亚欧精品在线观看 | 欧美多人猛交狂配 | 国产级毛片 | 日韩欧美亚洲国产精品字幕久久久 | 嫩草网站入口 | 日本不卡一区二区三区在线 | 国产精品久久久久久久久久久免费看 | 最近中文字幕免费mv在线 | 灌满闺乖女h高h调教尿h | 狠狠色狠狠色合久久伊人 | 我要干成人网 | 成人性生交大片免费卡看 | 人人鲁人人莫一区二区三区 | 影音先锋在线国产 | 美女免费看片 | 成人亚洲国产 | 成人黄色av| 亚洲精品乱码久久久久久蜜桃图片 | 青青草国产 | 亚洲欧洲日韩在线 | 中国性满足hd老少配 | 国产黄网永久免费视频大全 | 91成人精品一区在线播放 | 99精品乱码国产在线观看 | 亚洲 高清 成人 动漫 | 欧美日本一本 | 日本天堂在线播放 | 亚洲伊人色欲综合网 | 亚洲精品人成无码中文毛片 | 精品午夜一区二区三区在线观看 | 中文字幕一区二区在线观看 | 国产精品情侣呻吟对白视频 | 亚洲免费砖区 | 欧美日韩一区二区三区自拍 | 亚洲性人人天天夜夜摸 | 午夜视频在线瓜伦 | 蜜桃香蕉视频 | 色久综合 | 四虎精品久久 | 国产精品久久久久久妇女6080 | 人人做人人澡人人爽欧美 | 亚洲精品国精品久久99热一 | 在线播放污| 亚洲高清乱码午夜电影网 | 精品国产乱码久久久久久芒果 | 特级淫片裸体免费看 | 中国美女囗交视频 | 西欧free性满足hd老熟妇 | 亚洲第一综合网站 | 精品视频中文字幕 | 日韩二三区 | 久草在线视频在线 | 成人毛毛片 | 国产99久久久久久免费看 | 欧美色图在线视频 | 亚洲综合无码精品一区二区三区 | 国产精品午夜一区二区三区视频 | 少妇把腿扒开让我爽爽视频 | 伊人久久大香线蕉亚洲五月天 | 欧洲精品久久 | 一本久久知道综合久久 | 日本少妇毛茸茸 | 久久综合精品国产丝袜长腿 | 中文字幕天堂 | 操在线视频 | 国产精品女同一区二区软件 | 97久久精品人人澡人人爽缅北 | 久久不卡视频 | 四虎库| 亚洲天堂在线视频观看 | 动漫美女无遮挡免费 | 久久亚洲免费 | 在线免费观看亚洲视频 | 色一情一乱一伦麻豆 | 国产超碰97 | 久久久亚洲裙底偷窥综合 | 野外做受又硬又粗又大视幕 | 午夜国产在线 | 欧美一级黄色片 | 亚洲熟妇无码乱子av电影 | 在线天堂www在线国语对白 | 性做爰免费观看 | 91无人区乱码卡一卡二卡 | 午夜色大片在线观看 | 欧美日韩一二三四 | 亚洲精品美女久久久久99 | 一区二区在线观看免费视频 | 久草综合在线观看 | 农村少妇野战做爰全过程 | 免费毛片一区二区三区亚女同 | 亚洲精品天堂久久久老牛 | 无码人妻一区二区三区免费n鬼沢 | 青青久草在线视频 | 久久免费看视频 | 欧美俄罗斯乱妇 | 人人超碰在线 | 最新99热| 成人无码网www在线观看 | 老头老太吃奶xb视频 | 亚洲综合第二页 | 国产毛片精品国产一区二区三区 | 免费观看全黄做爰的视在线观看 | 久久免费看毛片 | 久久精品中文字幕大胸 | 有码视频在线观看 | 一级黄在线观看 | 日本国产在线视频 | 日批在线播放 | 亚洲国产精品久久久久秋霞影院 | 疯狂做受xxxx欧美肥白少妇 | 午夜精品视频 | 午夜片在线 | 欧美粗大猛烈老熟妇 | 亚洲成a| 国产精品入口免费软件 | 久久久久99精品国产片 | 亚洲国产精品无码久久电影 | 密桃av在线 | 噼里啪啦免费观看高清动漫 | 亚a∨国av综av涩涩涩 | 成年人视频免费看 | 日韩特黄毛片 | 亚洲色www永久网站 少妇人妻综合久久中文字幕 | 日本高清www免费视频大豆 | 一区二区日韩精品 | 91精品众筹嫩模在线私拍 | 一本一道av中文字幕无码 | 日韩成人免费在线 | 国产精品久久久久久亚瑟影院 | 日本毛片网站 | 国产精品人妖ts系列视频 | 久久久中精品2020中文 | 亚洲图片一区二区三区 | 欧美一区二区三区四区五区六区 | 无套内射无矿码免费看黄 | 友田真希一区二区 | 国产福利在线视频 | 免费一区二区三区 | 狠狠干天天 | 国产精品91久久 | jizz国产精品 | 一级少妇精品久久久久久久 | 久久久国产精品无码免费专区 | 99在线播放视频 | 91精品久久久久久久久青青 | 亚洲精品欧美综合四区 | 久久精品人妻无码一区二区三区 | 欧美一区二区激情 | 免费看中国毛片 | 91精品久久久久久久久不口人 | 天美乌鸦星空mv高清正版播放 | 校园春色亚洲激情 | 色图社区| 午夜成人鲁丝片午夜精品 | 少妇人妻偷人精品一区二区 | 激情久久一区二区三区 | 成人国产片女人爽到高潮 | 黄色激情毛片 | 天美传媒精品 | 日本在线观看免费 | 久久久精品欧美一区二区免费 | 国产情侣第一页 | 午夜dj在线观看免费视频 | 国产精品色呦呦 | 国产小视频你懂的 | 国产精品12p| 久久在线播放 | 中文字幕avav | 久久一本久综合久久爱 | 永久免费精品 | 第一次处破女啪啪 | 国内外免费激情视频 | 成人羞羞国产免费 | 色播av在线 | 久久免费一级片 | 日韩亚洲在线观看 | 成人国产片女人爽到高潮 | 好吊妞视频这里有精品 | 欧美30p| 在线成人日韩 | 国产欧美一区二区三区在线看 |