微處理器體系結(jié)構(gòu)專利技術(shù)研究方法 第一輯:X86指令集總述
鏈接:https://pan.baidu.com/s/1tyCdsD848qtDDKElb_u1QA?pwd=ul77?
提取碼:ul77

微處理器是集成電路之巔。目前事務(wù)處理型微處理器仍主要采用x86體系結(jié)構(gòu)。但其可公開獲取的研究資料很少,真實(shí)產(chǎn)品設(shè)計(jì)細(xì)節(jié)更是秘而不宣?!段⑻幚砥黧w系結(jié)構(gòu)專利技術(shù)研究方法.第一輯,x86指令集總述》以研究專利中的公開技術(shù)作為x86體系結(jié)構(gòu)研究的新方法。
按照“指令集結(jié)構(gòu)—微結(jié)構(gòu)—物理實(shí)現(xiàn)”層級(jí),沿著數(shù)據(jù)類型從標(biāo)量—矢量—矩陣進(jìn)程脈絡(luò),《微處理器體系結(jié)構(gòu)專利技術(shù)研究方法.第一輯,x86指令集總述》按照x86通用指令集、浮點(diǎn)指令集、安全保護(hù)類指令集、虛擬化指令集、微指令、指令集擴(kuò)展等模塊分類,從上萬條Intel專利中挖掘出x86指令專利,按照技術(shù)背景、遇到的問題、解決思路、實(shí)現(xiàn)方法與技術(shù)采納,對(duì)其進(jìn)行梳理分析、提煉成章。
精彩書評(píng)
微處理器是集成電路之巔。目前事務(wù)處理型微處理器仍主要采用x86 體系結(jié)構(gòu)。
目錄
目錄
前言
第1章 概述 1
1.1 研究背景 1
1.2 研究方法 3
1.3 研究對(duì)象:英特爾x86指令集概述 6
第2章 通用指令集技術(shù)專利分析 11
2.1 數(shù)據(jù)傳輸指令 11
2.1.1 字節(jié)交換指令 11
2.1.2 比較交換指令 12
2.1.3 處理器間數(shù)據(jù)傳輸 17
2.1.4 通過寄存器重命名優(yōu)化數(shù)據(jù)傳輸指令 19
2.2 二進(jìn)制計(jì)算指令 20
2.3 位和字節(jié)指令 22
2.3.1 位測試和置位指令 22
2.3.2 循環(huán)冗余校驗(yàn) 23
2.4 控制傳輸指令 33
2.4.1 函數(shù)調(diào)用和返回 33
2.4.2 比較-分支指令 35
2.4.3 中斷返回指令 35
2.5 字符串指令 38
2.5.1 執(zhí)行重復(fù)串操作(REP前綴指令) 38
2.5.2 迭代指令計(jì)數(shù) 41
2.6 雜項(xiàng)指令 42
2.6.1 CPUID指令 42
2.6.2 NOP指令 46
2.7 用戶模式擴(kuò)展?fàn)顟B(tài)保存和恢復(fù) 49
2.8 通用指令集增強(qiáng)BMI 51
2.8.1 位范圍隔離指令 52
2.8.2 增強(qiáng)的整數(shù)乘法指令 55
2.8.3 增強(qiáng)的循環(huán)移動(dòng)指令 56
2.8.4 三操作數(shù)加法指令 58
2.8.5 通用邏輯運(yùn)算指令 61
2.8.6 前綴控制的不修改標(biāo)志位和條件執(zhí)行 62
2.9 線程類指令技術(shù)專利分析 65
第3章 x87浮點(diǎn)指令集技術(shù)專利分析 68
3.1 浮點(diǎn)數(shù)和整數(shù)之間的搬移及轉(zhuǎn)換 68
3.2 浮點(diǎn)數(shù)的舍入操作 75
3.3 浮點(diǎn)安全指令識(shí)別模塊 83
3.4 同步相關(guān)指令執(zhí)行邏輯 84
第4章 安全保護(hù)類指令集技術(shù)專利分析 87
4.1 高級(jí)加密規(guī)范新指令集AESNI和PCLMULQDQ技術(shù)專利分析 87
4.1.1 標(biāo)準(zhǔn)AES算法實(shí)現(xiàn)邏輯和AES輪指令 88
4.1.2 非標(biāo)準(zhǔn)AES算法指令及其實(shí)現(xiàn) 90
4.1.3 輪密鑰生成指令及其實(shí)現(xiàn) 93
4.1.4 AES指令的低硬件開銷實(shí)現(xiàn) 97
4.1.5 AES指令的組合應(yīng)用 98
4.1.6 加密模式中的AES指令 99
4.1.7 用PCLMULQDQ指令加速GCM認(rèn)證模式計(jì)算 104
4.2 安全模式擴(kuò)展指令集技術(shù)專利分析 105
4.2.1 隔離模式指令 106
4.2.2 安全環(huán)境初始化指令 106
4.3 安全散列算法指令集 109
4.3.1 SHA-1算法、輪操作指令和部分消息調(diào)度 110
4.3.2 SHA-256算法和消息調(diào)度指令 117
4.3.3 SHA-3(候選)算法實(shí)現(xiàn)和相關(guān)指令 122
第5章 虛擬化技術(shù)專利分析 143
5.1 加速器接口虛擬化 143
5.2 VM調(diào)用函數(shù) 144
第6章 微指令技術(shù)專利分析 148
6.1 CISC指令到RISC指令的轉(zhuǎn)變 148
6.2 事件處理指令 150
6.3 邏輯多數(shù)指令 152
第7章 指令集擴(kuò)展、轉(zhuǎn)換和兼容技術(shù)專利分析 154
7.1 指令壓縮編碼 154
7.1.1 操作碼域壓縮 154
7.1.2 立即數(shù)域壓縮 155
7.1.3 相對(duì)地址壓縮與解壓 160
7.1.4 指令格式壓縮 164
7.2 標(biāo)志位控制 165
7.3 加速二進(jìn)制轉(zhuǎn)換的方法 166
7.4 標(biāo)簽寄存器編碼轉(zhuǎn)換 167
7.5 地址空間擴(kuò)展方法 168
7.6 擴(kuò)展寄存器集合的指令集支持 169
7.7 寄存器空間擴(kuò)展方法 171
7.8 64位亂序處理器運(yùn)行32位程序的高性價(jià)比執(zhí)行方法 173
參考文獻(xiàn) 174
查看全部↓
精彩書摘
第1章 概述
1.1 研究背景
目前,微處理器比以往更加密不可分地出現(xiàn)在我們身邊:在打電話、看電視時(shí),駕駛汽車、乘坐地鐵和飛機(jī)時(shí),電子支付、生物識(shí)別時(shí),體檢X射線成像、鍛煉計(jì)數(shù)時(shí),遠(yuǎn)程網(wǎng)課、網(wǎng)購時(shí),查收天氣預(yù)報(bào)、觀看火箭發(fā)射時(shí) 數(shù)得清和數(shù)不清的微處理器芯片和它們提供的計(jì)算,隨時(shí)隨地影響和改變著人們的學(xué)習(xí)與生活。簡要回顧一下現(xiàn)代計(jì)算機(jī)和微處理器的發(fā)展歷史,有助于對(duì)本書思想的理解。1946年世界上第一臺(tái)電子數(shù)字式計(jì)算機(jī)—電子數(shù)值積分計(jì)算機(jī)(the electronic numberical integrator and computer,ENIAC)在美國賓夕法尼亞大學(xué)投入運(yùn)行。之后,約翰 馮 諾依曼進(jìn)一步提出二進(jìn)制運(yùn)算、存、算與輸入輸出等相對(duì)分離方面的體系結(jié)構(gòu)改進(jìn),“取指—譯碼—執(zhí)行—回寫”順序執(zhí)行等主要思想帶來的影響一直持續(xù)到今天。硬件方面,20世紀(jì)50年代,基于半導(dǎo)體的晶體管替代了機(jī)械真空管。1959年羅伯特 諾伊斯(Robert Noyce)獲得第一個(gè)單片集成電路專利US19590830507。1968年全稱是Integrated Electronics的Intel(英特爾)公司成立,開始生產(chǎn)集成電路。1971年英特爾瞄準(zhǔn)計(jì)算器市場,推出擁有2300個(gè)晶體管、740kHz主頻的4004可編程微處理器,使工程師可以購買微處理器后,通過軟件開發(fā)實(shí)現(xiàn)不同的系統(tǒng)功能。1972年英特爾推出的8位微處理器8008和1974年英特爾推出的后繼產(chǎn)品8080,成為世界上應(yīng)用廣泛的微處理器。之后英特爾于1978年推出的16位8086微處理器更是開天辟地,其采用x86指令體系,成為現(xiàn)代中央處理器(central processing unit,CPU)的設(shè)計(jì)基礎(chǔ)并沿用至今。現(xiàn)在,新款的x86芯片的晶體管數(shù)量相當(dāng)于上千萬塊4004的晶體管之和,但芯片面積相差無幾。
計(jì)算機(jī)體系結(jié)構(gòu)要研究的是在設(shè)定的軟件要求和指定工藝條件下,設(shè)計(jì)系統(tǒng)性能更好的計(jì)算機(jī)。計(jì)算機(jī)組成中,微處理器的重要性毋庸置疑,因此計(jì)算機(jī)體系結(jié)構(gòu)中最主要的就是研究微處理器體系結(jié)構(gòu)。這里的微處理器,就是指中央處理器。在絕大多數(shù)場合,計(jì)算機(jī)體系結(jié)構(gòu)與微處理器體系結(jié)構(gòu)可以視為等同的概念范疇。由于軟、硬件發(fā)展在時(shí)空上不是那么配合,因此歷史上計(jì)算機(jī)體系結(jié)構(gòu)在20世紀(jì)五六十年代關(guān)心的是加、減、乘、除等數(shù)學(xué)計(jì)算實(shí)現(xiàn),七八十年代則是在重點(diǎn)研究指令集,90年代以后片上系統(tǒng)開始出現(xiàn)并成為新的研究目標(biāo)。設(shè)計(jì)CPU歸根結(jié)底就是構(gòu)建多個(gè)專用元件,并連接起來實(shí)現(xiàn)復(fù)雜的計(jì)算。而強(qiáng)大的計(jì)算抽象能力使一個(gè)系統(tǒng)架構(gòu)軟件工程師就能夠操控百萬量級(jí)或更多的晶體管。類似“夫無形者,物之太祖”,計(jì)算機(jī)體系結(jié)構(gòu)離不開計(jì)算抽象層概念。它通過層層抽象,構(gòu)建起“硅原子層—晶體管層—邏輯門(電路)—功能塊單元—執(zhí)行單元—微架構(gòu)—指令集架構(gòu)”的龐大工程。工程師可以由下而上搭建微處理器計(jì)算架構(gòu),而倒過來由上而下則幾乎不可能可視化。
指令集架構(gòu)(instruction set architecture,ISA)是計(jì)算機(jī)的語言,即計(jì)算機(jī)的抽象模型,有時(shí)也稱為計(jì)算機(jī)架構(gòu)或架構(gòu),它用一組指令定義了哪些類型的操作可以用硬件執(zhí)行,它描述了內(nèi)存模型、數(shù)據(jù)類型、寄存器和機(jī)器代碼行為,搭建了軟件與硬件之間的橋梁。在軟件方面,編譯器使用ISA將用C語言、Java等高級(jí)語言編寫的程序代碼翻譯成機(jī)器指令代碼。而通過指令集擴(kuò)展,可以增加更多的指令、數(shù)據(jù)類型以滿足新的更高效的運(yùn)算操作,并利用微架構(gòu)的新處理單元。指令通常由一個(gè)操作碼和若干操作數(shù)、數(shù)據(jù)位等組成,新的指令擴(kuò)展可為特定排列的處理單元簡化操作、提升CPU性能?,F(xiàn)代CPU支持?jǐn)?shù)百甚至上千條指令,多數(shù)仍是加、減、乘等數(shù)學(xué)運(yùn)算,與、或、非等邏輯運(yùn)算,加載、存儲(chǔ)、移動(dòng)等內(nèi)存操作以及分支等流程控制。
早期,每一代計(jì)算機(jī)都有一代對(duì)應(yīng)的指令集,相當(dāng)于專用機(jī),上面的應(yīng)用程序難以遷移。為了保證已開發(fā)的軟件一直可用,“向后兼容”策略顯然實(shí)現(xiàn)了軟件價(jià)值的最大化,因此作為計(jì)算機(jī)軟硬件接口的指令集更需要保持穩(wěn)定規(guī)范、擴(kuò)展有度?,F(xiàn)在只有極少數(shù)的指令集為工業(yè)界被長期廣泛支持,這使從頭開始設(shè)計(jì)一個(gè)新的指令集幾乎成為不可能的任務(wù)(mission impossible)。x86架構(gòu)是CPU執(zhí)行的計(jì)算機(jī)語言指令集,為英特爾通用計(jì)算機(jī)系列的標(biāo)準(zhǔn)編號(hào)縮寫,也標(biāo)識(shí)了一套通用的計(jì)算機(jī)指令集合。雖然由于計(jì)算對(duì)象不同和資源限制,x86和其他所有微處理器一樣有某些不足,但其豐富的軟件環(huán)境、強(qiáng)大的計(jì)算性能、穩(wěn)定的市場占有率和優(yōu)秀的品牌價(jià)值,仍然使x86成為當(dāng)前世界范圍內(nèi)無論桌面?zhèn)€人計(jì)算機(jī)(personal computer,PC)還是云計(jì)算服務(wù)器等場景下,最不可或缺的微處理器,年均出貨量維持在數(shù)億臺(tái)。歷史上,英特爾、超微(AMD)、威盛(VIA)、IBM等十余家公司都曾有支持x86架構(gòu)的處理器產(chǎn)品或知識(shí)產(chǎn)權(quán)授權(quán)。
歷史上,架構(gòu)工程師和學(xué)者在微處理器架構(gòu)方面,特別是指令體系、流水線、存儲(chǔ)層次等方面不斷尋求設(shè)計(jì)突破,其間由于理論方法、實(shí)現(xiàn)路徑、硬件局限等,考慮過種種奇思妙想和各種可行性,當(dāng)然,多數(shù)在實(shí)際CPU產(chǎn)品中得到了實(shí)現(xiàn)。這些知識(shí)財(cái)富見諸文獻(xiàn)記錄的,除了論文、手冊(cè)外,最精華也最有代表性的就是專利申請(qǐng)文本。因?yàn)閷@暾?qǐng)要求“新穎性”“創(chuàng)造性”“實(shí)用性”,而且專利“公開換保護(hù)”合法地創(chuàng)造了階段性壟斷,專利續(xù)案、專利組合等專利技巧又能完整地保護(hù)一套技術(shù)方案、路線。微處理器(集成電路)產(chǎn)業(yè)具有高投入、高風(fēng)險(xiǎn)、高回報(bào)、知識(shí)密集的特性,因此微處理器企業(yè)顧及商業(yè)利益,會(huì)更好、更有章法地利用《中華人民共和國專利法》,完整、有效地進(jìn)行專利布局和申請(qǐng)。微處理器企業(yè)通過技術(shù)專利,獲取了對(duì)自己產(chǎn)品的知識(shí)產(chǎn)權(quán)保護(hù)和對(duì)競爭對(duì)手的卡位遏制。而我們第三方則可以通過分析、研究歷史上微處理器技術(shù)專利的來龍去脈,窺探當(dāng)時(shí)的技術(shù)思路、解決方案,并對(duì)照實(shí)際產(chǎn)品性能、設(shè)計(jì)目標(biāo)以及工藝支撐等相關(guān)數(shù)據(jù),判斷對(duì)應(yīng)方法的科學(xué)完備性、技術(shù)實(shí)現(xiàn)難度,從而通過公開渠道獲取國際主流微處理器技術(shù)成功和失敗的秘密,達(dá)到“他山之石,可以攻玉”的效果。
1.2 研究方法
CPU設(shè)計(jì)的實(shí)質(zhì)就是將一個(gè)計(jì)算機(jī)體系結(jié)構(gòu),抽象映射成邏輯電路,并用一定的微電子工藝加以物理實(shí)現(xiàn),即完成“指令集結(jié)構(gòu)(微處理器體系結(jié)構(gòu)、計(jì)算機(jī)系統(tǒng)結(jié)構(gòu))—微結(jié)構(gòu)—物理實(shí)現(xiàn)”的過程。本書則是開創(chuàng)性地利用專利文本、指令集和產(chǎn)品數(shù)據(jù)手冊(cè),通過全面研究與分析歷史上人們?cè)谖⑻幚砥黧w系結(jié)構(gòu)中的各種有意識(shí)和無意識(shí)的技術(shù)可行性探索,對(duì)上述過程進(jìn)行深層剖析,形成“技術(shù)—專利—產(chǎn)品”數(shù)據(jù)立方,它實(shí)際上已經(jīng)成為一本《指令集技術(shù)實(shí)現(xiàn)數(shù)據(jù)手冊(cè)》,描述了x86架構(gòu)微處理器設(shè)計(jì)與實(shí)現(xiàn)大全,啟迪和引導(dǎo)后來者更上一層樓。英特爾是x86架構(gòu)的原創(chuàng)者、集大成者,也是領(lǐng)導(dǎo)者,因此選取英特爾x86專利進(jìn)行研究是最為合適的。
本書分析的專利是2014年5月31日前申請(qǐng)的,專利權(quán)人是英特爾(包含原始、中間和現(xiàn)在)的美國專利(含申請(qǐng)和授權(quán))和中國發(fā)明專利(含公開和授權(quán)公告)。本書中覆蓋檢索范圍內(nèi)人工篩選出的指令集架構(gòu)相關(guān)技術(shù)的美國專利分析,重點(diǎn)分析指令格式的相關(guān)專利,另有一部分專利涉及邏輯實(shí)現(xiàn),如某類特定指令實(shí)現(xiàn)。專利檢索工具采用Questel公司的Orbit系統(tǒng)的專利家族庫,專利有效性(含失效時(shí)間)也來自該系統(tǒng),僅供參考。
本書參照《英特爾64和IA-32架構(gòu)軟件開發(fā)人員手冊(cè)》(訂單號(hào):325462-061US,以下簡稱《手冊(cè)》),根據(jù)英特爾x86指令集的數(shù)據(jù)類型和應(yīng)用,大致將x86各個(gè)指令集分成以下六類,并按照此分類分別進(jìn)行系統(tǒng)的技術(shù)專利分析。
1.通用類指令集
通用類指令集包括通用指令集、英特爾32位體系結(jié)構(gòu)擴(kuò)展模式(Intel architecture-32 extension mode,IA-32e模式)指令集、通用增強(qiáng)指令集—位操控指令集(bit manipulation instruction,BMI)和系統(tǒng)指令。
英特爾通用類指令采用指令集層面專利保護(hù)的數(shù)量并不是很多,特別是一些比較早期的通用指令。另外,數(shù)學(xué)運(yùn)算和邏輯運(yùn)算指令主要通過邏輯實(shí)現(xiàn)或電路層面的專利進(jìn)行保護(hù)。本節(jié)相關(guān)專利涉及數(shù)據(jù)傳輸指令(data transfer instruction)、二進(jìn)制計(jì)算指令(binary arithmetic instruction)、位和字節(jié)指令(bit and byte instruction)、控制傳輸指令(control transfer instruction)、字符串指令(string instruction)、雜項(xiàng)指令(miscellaneous instruction)(如CPUID(CPU identification,CPU標(biāo)識(shí))指令)、用戶模式擴(kuò)展?fàn)顟B(tài)保存和恢復(fù)、循環(huán)冗余校驗(yàn)(cyclic redundancy check,CRC)和通用指令集增強(qiáng)BMI等。相關(guān)技術(shù)專利分析見第2章 。
2.x87浮點(diǎn)類指令集
x87浮點(diǎn)類指令集包括x87浮點(diǎn)指令集、x87浮點(diǎn)運(yùn)算和單指令多數(shù)據(jù)狀態(tài)管理指令集。浮點(diǎn)類指令包括數(shù)據(jù)交互、數(shù)據(jù)舍入、控制等指令。在英特爾處理器中,浮點(diǎn)數(shù)運(yùn)算單元(也稱數(shù)字協(xié)處理器)一開始應(yīng)用不廣泛并且成本高,是在獨(dú)立的協(xié)處理器芯片中存在的,稱為x87協(xié)處理器。逐漸地,隨著CPU應(yīng)用領(lǐng)域的擴(kuò)展和芯片集成度的提高,英特爾從486處理器開始,將浮點(diǎn)數(shù)運(yùn)算單元和CPU整合到了同一個(gè)芯片上(浮點(diǎn)加速器),之后設(shè)計(jì)CPU時(shí),既需要考慮兼容以前的程序,又需要考慮加快執(zhí)行速度。
相關(guān)專利主要保護(hù)浮點(diǎn)數(shù)和整數(shù)之間的搬移及轉(zhuǎn)換、浮點(diǎn)數(shù)的舍入操作、浮點(diǎn)安全指令識(shí)別模塊和同步相關(guān)指令執(zhí)行邏輯等幾個(gè)方面。相關(guān)技術(shù)專利分析見第3章 。
3.多媒體類指令集
多媒體類指令集包括六代單指令多數(shù)據(jù)(single instruction multiple data,SIMD)指令集—多媒體擴(kuò)展(multi media extensions,MMX)、流式傳輸SIMD擴(kuò)展(streaming SIMD extensions,SSE)、流式傳輸SIMD擴(kuò)展2(streaming SIMD extensions 2,SSE2)、流式傳輸SIMD擴(kuò)展3(streaming SIMD extensions 3,SSE3)、補(bǔ)充流式傳輸SIMD擴(kuò)展3(supplemental streaming SIMD extensions 3,SSSE3)、流式傳輸SIMD擴(kuò)展4(streaming SIMD extensions 4,SSE4),還有高級(jí)矢量擴(kuò)展(advanced vector extensions,AVX)、高級(jí)矢量擴(kuò)展2(advanced vector extensions 2,AVX2)和高級(jí)矢量擴(kuò)展512(advanced vector extensions 512,AVX-512)、融合乘加(fused-multiply-add,F(xiàn)MA)擴(kuò)展以及16位浮點(diǎn)轉(zhuǎn)換(half-precision floating-point conversion,F(xiàn)16C)指令集。
查看全部↓