TWI752034B - 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令 - Google Patents

用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令 Download PDF

Info

Publication number
TWI752034B
TWI752034B TW106118137A TW106118137A TWI752034B TW I752034 B TWI752034 B TW I752034B TW 106118137 A TW106118137 A TW 106118137A TW 106118137 A TW106118137 A TW 106118137A TW I752034 B TWI752034 B TW I752034B
Authority
TW
Taiwan
Prior art keywords
bit
check
instruction
processor
value
Prior art date
Application number
TW106118137A
Other languages
English (en)
Other versions
TW201804319A (zh
Inventor
修 威京森
威廉 惠勒
黛布拉 伯恩斯坦
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201804319A publication Critical patent/TW201804319A/zh
Application granted granted Critical
Publication of TWI752034B publication Critical patent/TWI752034B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Abstract

一種態樣的處理器包含用以儲存條件碼位元的暫存器,和用以解碼位元校驗指令的解碼單元。該位元校驗指令係用以指示用以包含第一位元的第一來源運算元,並且用以指示用於第一位元的校驗位元值。該處理器還包含與該解碼單元耦接的執行單元。回應於該位元校驗指令,該執行單元係用以將該第一位元與該校驗位元值進行比較,並將條件碼位元更新以指示該第一位元是否等於或不等於該校驗位元值。揭露了其它處理器、方法、系統和指令。

Description

用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
本文描述的實施例通常關於處理器。特別地,本文描述的實施例通常關於使用處理器來校驗位元。
無用數據收集(GC)是一種通常用於電腦系統的自動記憶體管理,其提供了手動記憶體管理的替代方法。舉例而言,無用數據收集可以在Java、C#、Go、Microsoft.NET Framework以及各種其它環境中使用。無用數據收集通常表示用於檢查物件(例如,軟體和/或資料的部分)的程序或演算法,例如儲存在堆積上的那些,以便確定它們之中的哪些仍在使用,以及它們之中的哪些不再被使用。仍在使用的物件通常表示仍被活動程式引用(例如,藉由指標指向)的引用物件。仍在使用的這些物件在本領域中有時也被稱為活物件。相對地,不再使用的 物件可以表示不再被任何活動程式引用的未引用物件(例如,不被任何指標指向)。未使用的物件在本領域中有時也被稱為死物件或無用數據。通常,在無用數據收集中,這些未使用的物件可能被刪除,並且過去用於它們的記憶體可以被釋放或回收。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧指令集
106‧‧‧位元校驗指令
108‧‧‧邏輯
110‧‧‧記憶體
112‧‧‧無用數據收集模組
114‧‧‧非堆積記憶體和執行緒堆疊
116‧‧‧記憶體指標
116-1‧‧‧第一指標
116-N‧‧‧第N指標
118‧‧‧標記位元
118-1‧‧‧第一標記位元
118-N‧‧‧第N標記位元
120‧‧‧堆積
122‧‧‧物件
122-1‧‧‧第一物件
122-M‧‧‧第M物件
124‧‧‧傳統耦接機構
202‧‧‧處理器
206‧‧‧位元校驗指令
216‧‧‧第一來源運算元
218‧‧‧第一位元
230‧‧‧解碼單元
232‧‧‧執行單元
236‧‧‧暫存器
236-1‧‧‧第一暫存器
236-2‧‧‧第二暫存器
238‧‧‧校驗位元值
240‧‧‧條件碼位元
242‧‧‧條件碼暫存器
350‧‧‧方法
351‧‧‧方塊
352‧‧‧方塊
353‧‧‧方塊
416‧‧‧64位元虛擬記憶體位址運算元
458‧‧‧最低有效位元
460‧‧‧最高有效元資料位元
538‧‧‧校驗位元值
562‧‧‧來源運算元
564‧‧‧值
566‧‧‧致能控制
670‧‧‧方法
671‧‧‧方塊
672‧‧‧方塊
673‧‧‧方塊
674‧‧‧方塊
675‧‧‧方塊
676‧‧‧方塊
677‧‧‧方塊
716‧‧‧第一來源運算元
738‧‧‧校驗位元值
740‧‧‧條件碼位元
764‧‧‧值
766‧‧‧致能控制
778‧‧‧位元校驗邏輯
779‧‧‧第四輸入
780‧‧‧第三輸入
781‧‧‧第二輸入
782‧‧‧第一輸入
783‧‧‧選擇邏輯
784‧‧‧比較邏輯
785‧‧‧致能控制邏輯
862-1‧‧‧第一集合
862-2‧‧‧第二集合
888‧‧‧來源運算元
990‧‧‧方法
991‧‧‧方塊
992‧‧‧方塊
993‧‧‧方塊
994‧‧‧方塊
995‧‧‧方塊
1000‧‧‧處理器管線
1002‧‧‧提取級
1004‧‧‧長度解碼級
1006‧‧‧解碼級
1008‧‧‧配置級
1010‧‧‧重新命名級
1012‧‧‧排程級
1014‧‧‧暫存器讀取/記憶體讀取級
1016‧‧‧執行級
1018‧‧‧寫回/記憶體寫入級
1022‧‧‧異常處理級
1024‧‧‧提交級
1030‧‧‧前端單元
1032‧‧‧分支預測單元
1034‧‧‧指令快取單元
1036‧‧‧指令轉譯後備緩衝器(TLB)
1038‧‧‧指令提取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧重新命名/配置器單元
1054‧‧‧撤回單元
1056‧‧‧排程器單元
1058‧‧‧實體暫存器檔案單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取單元
1076‧‧‧第二階(L2)快取單元
1090‧‧‧處理器核心
1100‧‧‧指令解碼器
1102‧‧‧晶粒上互連網路
1104‧‧‧第二階(L2)快取
1106‧‧‧L1快取
1106A‧‧‧L1資料快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧拌合單元
1122A-B‧‧‧數字轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮蔽暫存器
1128‧‧‧16寬的ALU
1200‧‧‧處理器
1202A-N‧‧‧核心
1204A-N‧‧‧快取單元
1206‧‧‧共用快取單元
1208‧‧‧特殊用途邏輯
1210‧‧‧系統代理單元
1212‧‧‧環狀式互連單元
1214‧‧‧整合記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300‧‧‧系統
1310‧‧‧處理器
1315‧‧‧處理器
1320‧‧‧控制器集線器
1340‧‧‧記憶體
1345‧‧‧協同處理器
1350‧‧‧輸入/輸出集線器(IOH)
1360‧‧‧輸入/輸出(I/O)裝置
1390‧‧‧圖形記憶體控制器集線器(GMCH)
1395‧‧‧連接
1400‧‧‧多處理器系統
1414‧‧‧I/O裝置
1415‧‧‧額外處理器
1416‧‧‧第一匯流排
1418‧‧‧匯流排橋
1420‧‧‧第二匯流排
1422‧‧‧鍵盤及/或滑鼠
1424‧‧‧音頻I/O
1427‧‧‧通訊裝置
1428‧‧‧儲存單元
1430‧‧‧指令/碼及資料
1432‧‧‧記憶體
1434‧‧‧記憶體
1438‧‧‧協同處理器
1439‧‧‧高效能介面
1450‧‧‧點對點互連
1452‧‧‧P-P介面
1454‧‧‧P-P介面
1470‧‧‧第一處理器
1472‧‧‧整合記憶體控制器(IMC)單元
1478、1488‧‧‧點對點(P-P)介面電路
1480‧‧‧第二處理器
1482‧‧‧整合記憶體控制器(IMC)單元
1490‧‧‧晶片組
1476、1494、1486、1498‧‧‧點對點介面電路
1496‧‧‧介面
1500‧‧‧系統
1514‧‧‧I/O裝置
1515‧‧‧舊有I/O裝置
1600‧‧‧SoC
1602‧‧‧互連單元
1610‧‧‧應用處理器
1620‧‧‧協同處理器
1630‧‧‧靜態隨機存取記憶體(SRAM)單元
1632‧‧‧直接記憶體存取(DMA)單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進制碼
1708‧‧‧替代的指令集編譯器
1710‧‧‧替代的指令集二進制碼
1712‧‧‧指令轉換器
1714‧‧‧沒有至少一x86指令集核心之處理器
1716‧‧‧具有至少一x86指令集核心之處理器
藉由參考用於說明實施例的以下描述和附圖可以最好地理解本發明。在圖中:圖1是本發明的實施例可實施於其中之電腦系統的實施例之方塊圖。
圖2是操作以執行位元校驗指令的實施例的處理器的實施例的方塊圖。
圖3是執行位元校驗指令的實施例的方法的實施例的方塊流程圖。
圖4是適用於位元校驗指令的來源運算元的64位元虛擬記憶體位址運算元的範例實施例的方塊圖。
圖5是針對位元校驗指令的合適來源運算元的範例實施例的方塊圖。
圖6是執行位元校驗指令的方法的更詳細的範例實施例的方塊流程圖。
圖7是顯示操作以執行位元校驗指令之位元校驗邏輯的範例實施例的方塊圖。
圖8是可以被用來傳送用於將由位元校驗指令校驗的 至少兩個不同位元的至少兩個校驗位元值之位元校驗指令的合適的來源運算元的另一範例實施例的方塊圖。
圖9是可以使用位元校驗指令的實施例的無用數據收集方法的範例實施例的方塊流程圖。
圖10A是說明依序管線之實施例及暫存器重新命名、亂序發送/執行管線之實施例之方塊圖。
圖10B是包括耦接至執行引擎單位之前端單元且兩者均耦接至記憶體單元之處理器核心的實施例的方塊圖。
圖11A為連同與晶粒上互連網路之其連接、以及第二階(L2)快取之其本地子集的單處理器核心之實施例的方塊圖。
圖11B為圖11A之處理器核心的部分之放大圖的實施例之方塊圖。
圖12為可具有多於一個核心、可具有整合記憶體控制器且可具有整合圖形之處理器的實施例之方塊圖。
圖13為一種電腦架構之第一實施例的方塊圖。
圖14為一種電腦架構之第二實施例的方塊圖。
圖15為一種電腦架構之第三實施例的方塊圖。
圖16為一種電腦架構之第四實施例的方塊圖。
圖17為根據本發明之實施例的用以將來源指令集中之二進制指令轉換至目標指令集中之二進制指令的軟體指令轉換器之使用的方塊圖。
【發明內容】及【實施方式】
本文揭露位元校驗指令的實施例、用於執行所述指令的處理器的實施例、當執行所述指令時由處理器執行的方法的實施例、結合一或多個處理器以執行所述指令的系統的實施例、以及提供所述指令的程式或機器可讀媒體的實施例。在一些實施例中,處理器可以具有用於接收和/或解碼位元校驗指令的解碼單元或其它邏輯,以及用以執行位元校驗指令的執行單元或其它邏輯。在下面的描述中,闡述了許多具體細節(例如,特定的指令操作、資料格式、處理器配置、微架構細節、操作序列等)。然而,實施例可以在沒有這些具體細節的情況下實施。在其它情況下,並未詳細顯示眾所周知的電路、結構和技術,以避免模糊對說明書的理解。
圖1為本發明的實施例可實施於其中之電腦系統100的實施例之方塊圖。於各個實施例中,電腦系統可代表桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧型手機、手機、伺服器、網路裝置(例如,路由器、交換器,等等)、媒體播放器、智慧電視、桌上型易網機、機上盒、視頻遊戲控制器、或者其他類型的電子裝置。電腦系統包含處理器102和記憶體110。處理器和記憶體藉由傳統耦接機構124(例如,藉由一或多個匯流排、集線器、記憶體控制器、晶片組部件等)彼此耦接或在別的情況下彼此相互通訊。
處理器具有指令集104。指令集的指令代表巨集指令、機器語言指令、提供給處理器以供執行的指令、 或處理器的解碼器能夠解碼的指令,其相對於與微指令、微運算或由解碼指令集的指令之解碼器產生的其它經解碼指令。在一些實施例中,指令集可以包含至少一個位元校驗指令106。處理器還可以包含邏輯108,其可操作以執行位元校驗指令以校驗運算元中的一或多個位元。此邏輯可以包含硬體、韌體、軟體或其組合。在一些實施例中,邏輯可以包含位於半導體晶粒上的至少一些晶粒上的邏輯。在一些實施例中,邏輯可以包含至少一些晶粒上的電晶體、電路或其它硬體。
本文揭露了至少一個位元校驗指令106的各種不同實施例。位元校驗指令的一些實施例可以結合無用數據收集使用,儘管本發明的範圍不限於此。位元校驗指令的其它實施例可以用於其它目的和/或用於希望校驗一或多個位元的其它演算法。為了說明某些概念,下面的描述將經常描述使用結合無用數據收集的位元校驗指令,儘管本發明的範圍不限於此。
再次參考圖1,記憶體包含無用數據收集模組112。無用數據收集模組可以操作以執行無用數據收集演算法。各種不同類型的無用數據收集演算法是合適的。適當的無用數據收集演算法的範例包含但不限於追蹤無用數據收集演算法、並行式運行時無用數據收集演算法、能夠在刪除當前頁面之前將仍在使用物件從當前頁面重新定位到另一頁面的無用數據收集演算法、能夠在刪除未使用的物件之後將剩餘在頁面上的不連續或分散的仍在使用物件 壓縮的無用數據收集演算法、世代無用數據收集演算法、以及各種其它形式的無用數據收集演算法,包含尚未開發但是也可以受益於本文所述實施例之新形式的無用數據收集演算法。
在一些實施例中,給定位元可以與無用數據收集演算法(例如,作為無用數據收集演算法的一部分,或作為無用數據收集演算法一起使用的相關演算法)結合使用。此位元在本領域中有時被稱為標記的直通位元(MTB)或未標記的直通位元(NMTB)。如本文所使用的,此位元可以簡單地稱為標記位元,並且其可以廣泛地被視為具有用於傳送在無用數據收集中有用的資訊的位元值的位元。舉例來說,非堆積記憶體和執行緒堆疊114可以具有指向或參照堆積120上的物件122的記憶體指標116。例如,可以存在參照各種各樣的第一物件122-1至第M物件122-M(例如,通常是相當大的數)的第一指標116-1至第N指標116-N(例如,通常是相當大的數)。每個指標具有標記位元118。例如,第一指標具有第一標記位元118-1,而第N指標具有第N標記位元118-N。堆積中的物件還可以具有可具有標記位元(未顯示)的指標(未顯示)。對於非堆積記憶體和執行緒堆疊,活動物件通常是已知的。對於堆積記憶體120,無用數據收集通常用來識別活動物件(例如,收集它們並對記憶體進行碎片整理)。
最初,在無用數據收集階段開始時,所有的 指標116可以被遍歷,並且所有其標記位元118可以被清除為二進制零(舉例而言)。因此,當新階段開始時,所有標記位元可以具有相同的狀態或二進制值。如同一個可能的傳統,此狀態可以用於指示指標尚未被處理以供無用數據收集。在無用數據收集中,參照堆積的每個指標可以被處理以找出堆積中仍在使用的物件,並收集或複製此類物件。此外,堆積中的物件也可以具有指向其它物件的指標。因此,最初在非堆積記憶體和執行緒堆疊中,而接著在堆積中的所有這些指標可能被遍歷。對於具有標記位元的指標,該標記位元用於示意未處理的指標以供無用數據收集的新階段。讀取指標的軟體(例如,執行緒)可以校驗標記位元,以便確定是否應該執行異常處理。每次讀取堆積指標之後,可以執行此類校驗,以實現使用標記位元的並行式無用數據收集。校驗和異常處理可以在Java運行時系統中實現“負載屏障”。可能有具有此類標記位元的大量此類指標以在整個無用數據收集過程中進行校驗。因此,這種標記位元的校驗可能往往對與執行無用數據收集相關的額外負擔有顯著貢獻,並且如果不能有效地完成,則往往降低其它應用程式的效能。因此,本文揭露的可有助於加速或改進這種校驗之方法可往往提供優點。
校驗標記位元的一種可能的方法是使用一連串指令。例如,以下x86碼序列的五行序列可能潛在地用於校驗標記位元:MOV R1,(R0);將指標從暫存器R0移動到暫存器 R1
MOV R2,#1<<shift;將僅在標記位元位置具有一個位元的掩碼移動到暫存器R2
AND R2,R1;藉由R1中的指標和R2中的掩碼的邏輯AND將R2中的標記位元分隔
XOR R2,R3;將R3中的NEPN值與R2中的標記位元邏輯XOR,並更新零旗標
JNE except_proc;如果零旗標為零(標記位元≠NEPN值)則跳轉到異常處理
在這段碼中,NEPN代表不需要異常處理,並且是指不需要跳轉到異常處理的標記位元的值,而是用於標記位元的相反值。
替代方法是使用位元校驗指令106和邏輯108的實施例。在各種實施例中,位元校驗指令可以有效地將與上述碼序列的兩個或更多指令的操作類似的操作(例如,第二至第四條指令、第一至第四條指令、所有五條指令等)整合為單一指令。有利地,該指令可以有助於加速或提高校驗標記位元的效率,儘管本發明的範圍並不限於此。
從上面回想,最初,在無用數據收集階段開始時,所有標記位元118可以具有相同的狀態或二進制值。該值可能與無異常處理所需的值相反。在校驗給定指標的標記位元之後,如果標記位元的校驗顯示標記位元仍然具有初始狀態(例如,在此範例中,清除為二進制零, 以指示需要異常處理),則可以確定應該執行異常處理。舉例而言,這可能關於轉移到不同碼(例如,無用數據收集模組112的異常處理子模組(例如,上述碼中的except_proc))。在執行處理時,可以將標記位元的狀態或位元值原子地翻轉或切換(例如,在該範例中,清除位元的位元值可以被設置為二進制一)。相反地,如果標記位元具有與初始狀態相反的相反狀態(例如,在此範例中為無異常處理所需的值為二進制一),則不需要異常處理。在這種情況下,可能不需要轉移到無用數據收集模組的異常處理子模組。對於每個指標,通常只能對每個無用數據收集階段的對應標記位元進行單一次校驗。在相位完成之前,可執行圖像中的所有標記位元的狀態應該被翻轉到新的狀態(例如,在這個範例中設置為二進制一)。
在下一階段期間,不是再次遍歷所有指標116,而是當前所有的應當具有更新狀態中的標記位元118(例如,在本範例中設置為二進制一),並且再次清除所有標記位元,標記位元的含義可能會被切換或翻轉。例如,在下一個階段,代替用於指示指標尚未被處理之二進制零,二進制一可以代替用於指示指標尚未被處理。這種意義的切換有助於避免再次遍歷所有指標的額外的不需要的操作,並重新清除所有標記位元,這可相當於大量的處理。但是,這也可以切換或改變校驗標記位元的操作。例如,不是像第一階段那樣校驗標記位元是否具有二進制一的值,而是在第二階段中,校驗反而可以確定標記位元 是否具有二進制零的值(對於此具體範例)。
在一些實施例中,位元校驗指令106可以支援位元校驗操作的這種切換或翻轉(例如,藉由指定或以其它方式指示校驗位元值,如下面進一步描述的)。有利地,位元校驗指令106和用於執行它的邏輯108可以有助於加速或提高執行標記位元之校驗的效率。這種標記位元的校驗往往是無用數據收集中使用的普遍校驗(例如,並行式運行時無用數據收集器)。因此,位元校驗指令可以幫助改善無用數據收集的效能和/或幫助減少對其它應用程式的效能影響。額外地,預期除了與無用數據收集和/或其它實例相關的其它演算法之外,還有或至少可以是其它演算法,其中可能有用或有益於校驗位元來看它是否具有第一個值(例如,被設置)或第二個值(例如,被清除)。位元校驗指令106也可以用於此類演算法或這種實例。
圖2是操作以執行位元校驗指令206的實施例的處理器202的實施例的方塊圖。在一些實施例中,該處理器可以是通用處理器(例如,用於桌上電腦、筆記型電腦或其它電腦的通用微處理器或中央處理單元(CPU))。或者,處理器可以是專用處理器。合適的專用處理器的範例包含但不限於網路處理器、通訊處理器、密碼處理器、圖形處理器、協同處理器、嵌入式處理器、數位訊號處理器(DSP)和控制器(例如,微控制器)。處理器可以具有各種複雜指令集計算(CISG)架構、精簡 指令集計算(RISC)架構、超長指令字(VLIW)架構、混合架構、其它類型的架構或具有不同架構的組合中(例如,不同的核心可以具有不同的架構)的任何一種。在一些實施例中,處理器可以包含被設置在至少一個積體電路或半導體晶粒上。在一些實施例中,處理器可以包含至少一些硬體(例如,電晶體、電容器、二極管、電路、或儲存微碼的非揮發性記憶體等)。
在操作期間,處理器202可以接收位元校驗指令206。例如,可以透過匯流排或其它互連從記憶體接收指令。指令可以表示處理器的指令集的巨集指令、機器碼指令或其它指令或控制訊號。在一些實施例中,位元校驗指令可以明確地指定(例如,透過指示暫存器具有的一或多個欄位或一組位元),或以其它方式指示(例如,隱含地指示暫存器具有)包含第一位元218的第一來源運算元216。在一些實施例中,第一來源運算元可以選擇性地是記憶體指標(例如,用作指標的堆積記憶體中的32位元或64位元偏移量),並且第一位元可以選擇性地為與無用數據收集結合使用的標記位元,儘管本發明的範圍不限於此。
在一些實施例中,位元校驗指令可以選擇性地指定或以其它方式指示一個值來識別第一位元的位元位置作為複數個不同可能位元位置中的任何一個。這可以選擇性地允許指令用於校驗不同位元位置中的不同位元。或者,在其它實施例中,位元校驗指令可以具有未明確指定 的第一位元的隱式固定位元位置。例如,位元校驗指令(例如,其操作碼)可以具有用於第一位元的隱式固定位置(例如,其可以對應於結合無用數據收集使用的標記位元,或者對應於一些其它演算法的一些其它固定位元位置)。
在一些實施例中,位元校驗指令可以明確地指定(例如,透過指示暫存器具有的一或多個欄位或一組位元),或以其它方式指示(例如,隱含地指示暫存器具有),用於第一位元218的校驗位元值238。校驗位元值可以表示要進行校驗或與第一位元進行比較的值。在一些實施例中,校驗位元值可以被允許為二進制一或二進制零。舉例而言,位元校驗指令的一個實例可以將校驗位元值指示為二進制一,並且相同位元校驗指令(例如,相同的操作碼)的另一個實例可以將校驗位元值指示為二進制零。或者,如果需要,則可以選擇性地針對校驗位元值的不同值提供不同的操作碼。
在某些情況下,位元校驗指令可以具有一或多個來源運算元規範欄位來指定用於儲存或識別運算元的暫存器、記憶體位置或其它儲存位置。如所示範例所示,第一來源運算元216可以選擇性地儲存在一組暫存器236(例如,通用暫存器)的第一暫存器236-1中,並且校驗位元值238可以選擇性地儲存在該組暫存器的第二暫存器236-1中。作為一個具體範例,位元校驗指令可以具有用以指定具有第一來源運算元的第一暫存器(例如,記憶體 指標)的第一欄位,以及用以指定具有校驗位元值的第二暫存器的第二欄位。或者,這些暫存器運算元中的一或多個可以選擇性地隱含於指令(例如,暫存器可以隱含於指令的操作碼)。作為一個具體範例,位元校驗指令可以隱含地指示(例如,未明確地指定)具有第一來源運算元的第一暫存器,並且可以隱式地指示(例如,未明確地指定)具有校驗位元值的第二暫存器。或者,相同的暫存器可以選擇性地用於第一來源運算元和校驗位元值兩者。此外,記憶體位置或其它儲存位置可以選擇性地用於它們中的一或多個。此外,校驗位元值可以選擇性地直接在指令的編碼中提供(例如,作為欄位中的位元、立即數、作為操作碼的一部分等)。這種方法的各種組合也適用於位元校驗指令以指示或以其它方式提供第一來源運算元和校驗位元值。
暫存器236中的每一個可以表示可操作以儲存資料的晶粒上(或積體電路上)儲存位置。這些暫存器可以表示可見於軟體和/或程式設計者的架構可見或架構暫存器和/或由處理器的指令集的指令指示的用於識別運算元的暫存器。這些架構暫存器與給定微架構中的其它非架構暫存器(例如,臨時暫存器、重排序緩衝器、撤回暫存器等)形成對照。暫存器可以在不同的微架構中以不同的方式實現,並不限於任何特定類型的設計。適當類型的暫存器的範例包含但不限於專用實體暫存器、使用暫存器重新命名的動態分配實體暫存器及其組合。
再次參考圖2,處理器包含解碼單元或解碼器230。解碼單元可以接收和解碼位元校驗指令206。指令可具有操作碼來識別要執行的操作(例如,位元校驗操作)。解碼單元可以輸出一或多個相對較低階的指令或控制訊號(例如,一或多個微指令、微運算、微碼入口點、解碼的指令或控制訊號等),其反映、表示和/或從相對較高階的位元校驗指令導出。在一些實施例中,解碼單元可以包含用於接收位元校驗指令的一或多個輸入結構(例如,埠、互連、介面)、與其耦接的指令識別和解碼邏輯以識別和解碼位元校驗指令、以及與其耦接以輸出較低階指令或控制訊號的一或多個輸出結構(例如,埠、互連、介面)。解碼單元可以使用各種不同的機制來實現,包含但不限於微碼唯讀記憶體(ROM)、查找表、硬體實現、可程式化邏輯陣列(PLA)、以及適於實現解碼單元的其它機制。在一些實施例中,解碼單元可以被包含在晶粒上(例如,在具有執行單元232的晶粒上)。在一些實施例中,解碼單元可以包含至少一些硬體(例如,電晶體、積體電路或晶粒上韌體等)。
在一些實施例中,可以選擇性地使用指令仿真器、轉譯器、變形器、解譯器或其它指令轉換模組來代替直接提供給解碼單元的位元校驗指令。各種類型的指令轉換模組可以用軟體、硬體、韌體或其組合來實現。在一些實施例中,指令轉換模組可以位於處理器外部,例如在單獨的晶粒上和/或記憶體中(例如,為靜態、動態或運 行時仿真模組)。舉例而言,指令轉換模組可以接收位元校驗指令,其可以是第一指令集,並且可以將位元校驗指令仿真、轉譯、變形、解譯或以其它方式轉換成可以是第二不同的指令集的一或多個對應的中間指令或控制訊號。第二指令集的一或多個中間指令或控制訊號可以被提供給解碼單元(例如,解碼單元230),該解碼單元可以將它們解碼為可由處理器的原生硬體(例如,一或多個執行單元)執行的一或多個低階指令或控制訊號。
再次參考圖2,執行單元232耦接於解碼單元230。在一些實施例中,執行單元可以是在晶粒或積體電路上(例如,與解碼單元在晶粒或積體電路上)。執行單元可以接收表示和/或從位元校驗指令導出的一或多個解碼或以其它方式轉換的指令或控制訊號。執行單元還可以被耦接或以其它方式操作以接收第一來源運算元216和校驗位元值238(例如,如果第一來源運算元和校驗位元值儲存在暫存器236中,則與暫存器236耦接)。執行單元可以回應於和/或作為位元校驗指令的結果(例如,回應於從其解碼的一或多個指令或控制訊號和/或回應於提供給解碼器的指令)而被操作以將第一位元與校驗位元值進行比較,並更新條件碼位元240,以指示第一位元是否等於或不等於校驗位元值。舉例而言,該比較可以選擇性地藉由互斥或(XOR)操作來執行。兩個位元的互斥或運算可以生成或產生一個位元,如果該些位元是不同的(例如,如果一個位元是一,而另一個是零),則設置為二進 制一,或者如果位元是相同的(例如,兩個位元都是一或兩個位元都為零),則被清除為二進制零。或者,可以選擇性地使用其它邏輯操作或邏輯操作的組合來執行比較。如圖所示,在一些實施例中,條件碼位元可以選擇性地與可能的一或多個其它條件碼位元一起儲存在條件碼暫存器242中。
條件碼位元240的合適條件碼位元的範例包含但不限於旗標、狀態旗標、狀態位元、條件碼、條件暫存器中的位元、旗標暫存器中的位元、及狀態暫存器中的位元等。在一個實施例中,條件碼位元可以是零旗標或其它零條件碼位元,雖然本發明的範圍不限於此。作為一個具體範例,如果第一位元等於校驗位元值,則零條件碼位元可以被設置,並且如果第一位元不等於校驗位元值,則被清除。不限於此,一或多個其它指令可以校驗條件碼位元,並根據條件碼位元的值進行。例如,在與無用數據收集結合使用的標記位元的情況下,條件式控制流傳輸指令(例如,上述碼序列中所示的JNE指令)可以校驗指示標記位元是否等於不需要異常處理(NEPN)值的條件碼位元,並且如果條件碼位元具有指示標記位元不等於NEPN值的值,則可以將控制轉移到異常處理碼,或者如果條件碼位元具有指示標記位元等於NEPN值的值,則不將控制轉移到異常處理模組。
執行單元和/或處理器可以包含可操作以執行位元校驗指令和/或回應於和/或作為位元校驗指令的結果 (例如,回應於從位元校驗指令解碼的一或多個指令或控制訊號)來儲存結果的具體或特定邏輯(例如,電晶體、積體電路或潛在地與韌體(例如,儲存在非揮發性記憶體中的指令)組合的其它硬體和/或軟體)。舉例而言,執行單元可以包含算術單元、算術邏輯單元或用於執行算術和邏輯運算的數位電路等。在一些實施例中,執行單元可以包含用以接收來源運算元的一或多個輸入結構(例如,埠、互連、介面)、與其耦接用以接收和處理來源運算元的電路或邏輯,以及與其耦接用以提供值或其它訊號來更新條件碼位元的值的一或多個輸出結構(例如,埠、互連、介面)。在一些實施例中,執行單元可包含下面針對圖7進一步顯示和描述的電路或邏輯,儘管本發明的範圍並不局限於此。
為了避免模糊描述,已經顯示和描述了相對簡單的處理器202。然而,處理器可以選擇性地包含其它處理器元件。例如,各種不同的實施例可包含針對圖10-12中任一者顯示和描述的部件的各種不同的組合和配置。處理器的所有部件可以耦接在一起以允許它們如預期操作。舉例來說,考慮圖10B,指令快取記憶體1034可以將指令快取、指令提取單元1038可以提取指令、解碼單元1040可將指令解碼、排程器單元1056可將相關的操作排程、執行單元1062可以執行該指令、撤回單元1054可以使該指令撤回等。
圖3是執行位元校驗指令的實施例的方法350 的實施例的方塊流程圖。在各種實施例中,該方法可以由處理器、指令處理裝置、數位邏輯裝置或積體電路來執行。在一些實施例中,方法350可藉由圖2的處理器202和/或連同圖2的處理器202和/或使用圖2的位元校驗指令206來執行。本文針對處理器202和/或指令206所描述的部件、特徵、和特定可選細節也選擇性地適用於方法350。可替換地,方法350可以由類似的或不同的處理器或裝置或在其內和/或使用類似的或不同的指令來執行。此外,處理器202可以執行相同於、類似於或不同於方法350之方法。
在方塊351處,該方法包含接收位元校驗指令。在各種態樣中,該指令可在處理器或其一部分(例如,指令提取單元、解碼單元、匯流排介面單元等)接收。在各種態樣中,該指令可從處理器外和/或晶粒外來源(例如,從記憶體、互連等)接收,或從處理器內和/或晶粒內來源(例如,從指令快取、指令佇列等)接收。
位元校驗指令可指定或以其它方式指示包含第一位元的第一來源運算元,並且可指定或以其它方式指示第一位元的校驗位元值。在一些實施例中,第一來源運算元可以選擇性地是記憶體指標(例如,32位元或64位元偏移到用作指標的堆積記憶體),並且第一位元可以選擇性地是與無用數據收集一起使用的符號位元,儘管本發明的範圍不局限於此。在一些實施例中,校驗位元值可以被允許(例如,藉由指令)為二進制一或二進制零。可替 代地,不同的指令可以選擇性地用於二進制一和二進制零。如上所述,第一來源運算元和校驗位元的值可以用各種不同的方式來表示。
在方塊352處,第一位元可以回應於該位元校驗指令而與校驗位元值進行比較。在一些實施例中,位元可以是針對相等性進行比較。作為一個具體範例,XOR操作可以被執行以將位元進行比較。可替代地,其它邏輯運算或邏輯運算的組合可選擇性地使用以將位元進行比較。
在方塊353處,條件碼位元可回應於該位元校驗指令而被更新以指示該第一位元是否等於或不等於校驗位元的值。在一個實施例中,條件碼位元可以是零旗標或其它零條件碼位元,雖然本發明的範圍並不受此限制。作為一個具體範例,如果第一位元等於校驗位元值,則零條件碼位元可被設置,並且如果第一位元不等於校驗位元值,則被清除。
顯示的方法關於架構操作(例如,從軟體的角度來看那些可見的)。在其它實施例中,該方法可以選擇性地包含一或多個微架構操作。舉例來說,該指令可以被提取、解碼、亂序排程,來源運算元可以被存取、執行單元可以執行微架構操作以實現指令等。在一些實施例中,用以實現指令的微架構操作可選擇性地包含任何結合圖6和/或圖7所顯示和描述的那些。
圖4是適用於位元校驗指令的來源運算元的 64位元虛擬記憶體位址運算元416的範例實施例的方塊圖。例如,運算元416可被用作上述針對圖2討論的第一來源運算元216。64位元虛擬記憶體位址運算元包含可以用來確定實體記憶體位址的一組最低有效位元458。例如,這些位元458可表示可被轉換(例如,在位址轉換處理期間)到可用於存取實體記憶體中的位置之對應實體記憶體位址的虛擬記憶體位址。
64位元虛擬記憶體位址運算元還包含一組最高有效元資料位元460,其不用於識別實體記憶體位址(例如,在位址轉換程序中不被使用的)。64位元能夠將龐大的位址空間定址。在許多情況下,不需要這樣一個龐大的位址空間。在這種情況下,只有通常是位元的最低有效子集之64位元的子集可被用於將較小的位址空間定址。通常是最高有效子集之64位元的剩餘子集可以被借位或用於其它目的。在圖示的範例中,四個最高有效位元[63:60]被用於此類元資料位元460,雖然其它數量可以選擇性地在其它實施例中使用。
元資料位元460可通常被用於提供以某種方式與64位元虛擬記憶體位址運算元相關的額外資料或資訊。作為一個具體的範例,位元之一可選擇性地將被用作與無用數據收集一起使用,並且將被用於傳達關於64位元虛擬記憶體位址運算元是否具有已被處理用於無用數據收集的資訊(或更一般地關於無用數據收集的資訊和/或支援無用數據收集的資訊)之符號位元,儘管本發明的範 圍不局限於此。在其它實施例中,一或多個位元可選擇性地被用來為一些其它處理或演算法的目的提供與該指標相關的資訊或資料(例如,頁表相關的演算法、位址轉換相關的演算法、虛擬記憶體位址如何在應用程式中使用的等)。
在其它情況下,最低有效位元可以被用作元資料位元。例如,堆積物件係與在多個位元組(例如,2、4或8)對齊,如果定址邏輯對那些位元使用二進制零的值,則低階位元可為元資料位元。例如,如果堆積物件開始於8位元組對齊的邊界,則三個最低有效位元可能被用作元資料位元。上述方法也可以適用於此類低階元資料位元。
圖5是針對位元校驗指令的合適來源運算元562的範例實施例的方塊圖。例如,運算元562可被用於傳送如上針對圖2所討論的校驗位元值238。在顯示的範例實施例中,來源運算元562是8位元運算元,儘管在其它實施例中可以選擇性地使用更少或更多的位元。在一些實施例中,來源運算元可以選擇性地儲存在可以藉由位元校驗指令來指示之暫存器(例如,通用暫存器)或其它儲存位置。在其它實施例中,來源運算元可以選擇性地是位元校驗指令的立即值。
在顯示的範例實施例中,來源運算元包含用於第一位元的校驗位元值538。校驗位元值可以表示針對其對應的位元將在位元校驗指令的執行期間被校驗或進行 比較之單一位元二進制值。如圖所示,校驗位元值可以被儲存在來源運算元的單一位元位置中。在圖示的範例中,此位元位置是最高有效位元位置或位元0,儘管各種其它的位元位置可以在其它實施例中使用。校驗位元值可以被允許具有不同的單一位元二進制值(例如,允許二進制零或二進制一)。藉由允許兩種二進制值,軟體可以選擇哪個值被使用,這可以允許位元校驗來與具有二進制一的值或二進制零的值任一者的給定位元進行相等性比較。舉例來說,這種靈活性可能是有用的,並且在某些演算法(諸如,例如,無用數據收集,其中位元的含義可以在不同的時間點切換或改變)是有益的。在一些實施例中,校驗位元值可以被用於表示在無用數據收集中的標記位元的活動或不需處理的狀態,雖然本發明的範圍並不受此限制。
再次參照圖5,在所示範例實施例中,來源運算元也選擇性地包含用以識別第一位元的位元位置之值564。舉例來說,該值可以被用於識別圖4的元資料位元460中的一者的位元位置,儘管本發明的範圍並不受此限制。如在所示的範例中所示,該值可以選擇性地以六個位元儲存,雖然更少或更多的位元可以替代地選擇性被使用。在具體顯示的範例中,位元[6:1]被使用,儘管各種其它的位元位置可以選擇性地在其它實施例中使用。一組連續的位元被使用往往是方便的,但不是必需的。包含此類值可以允許相同的位元校驗指令被使用,以藉由改變用於識別那些不同的位元位置的值來校驗在不同的位元位置中 的不同位元。然而,包含此值是可選的,不是必須的。例如,在其它實施例中,要由位元校驗指令使用的位元位置可以選擇性地被固定或隱含於位元校驗指令(例如,到其操作碼)。
再次參照圖5,在所示的範例實施例中,來源運算元還選擇性地包含致能控制566。在一些實施例中,以特定的方式配置時(例如,未致能或禁用)時,致能控制可以操作以致使執行位元校驗指令以用相同的方式來更新條件碼位元(例如,成相同的值),而不管藉由位元校驗指令比較之該位元的值,和/或不管校驗位元值的值。在一些實施例中,以特定的方式配置時,致能控制可以操作以致使執行位元校驗指令以用相同的方式來更新條件碼位元,而不管由位元校驗指令比較的位元是否等於或不等於校驗位元值。也就是說,在此類情況下,位元校驗指令的執行可能會致使相同的架構事件或動作,而不管該比較的結果和/或不管至該比較的輸入。舉例來說,在一個實施例中,以特定方式配置時,致能控制可以操作以致使位元校驗指令的執行以設置零旗標或其它零條件碼位元為二進制一,而不管藉由位元校驗指令進行比較的位元的值,和/或不管校驗位元值之值。相比之下,在一些實施例中,當以不同的方式(例如,以相反的方式)配置時,致能控制可以操作以致使位元校驗指令執行以用取決於或基於被比較的位元的值和校驗位元值的方式和/或取決於或基於被比較的位元是否等於或不等於校驗位元值的方式來 更新條件碼位元。
如在所示的範例中所示,致能控制可選擇性地儲存在單一位元中,儘管更少或更多的位元可替換地選擇性地被使用。在具體顯示的範例中,位元7被使用,儘管各種其它的位元位置可以選擇性地在其它實施例中使用。如一個可能使用的說明性範例,可選的致能控制可以被用於允許非應用程式執行緒(諸如無用數據收集執行緒)來對於標記位元執行更新,而不會致使應用程式執行緒對標記位元的新狀態做出反應。然而,包含此值是可選的,不是必須的。
圖6是執行位元校驗指令的方法670的更詳細的範例實施例的方塊流程圖。圖7是顯示操作以執行位元校驗指令之位元校驗邏輯778的範例實施例的方塊圖。為了簡化描述,將參考邏輯778來描述方法670。然而,方法670亦可以選擇性地利用類似於或不同於特定邏輯778的邏輯來執行。此外,邏輯778可以被用於執行類似於或不同於特定方法670的方法。
參照圖6,在方塊671處,位元校驗指令可在處理器處被接收。在一些實施例中,位元校驗指令可指定或以其它方式指示包含第一/給定的位元之第一來源運算元、可以指定或以其它方式指示用以識別第一位元的位元位置的值、可指定或以其它方式指示第一位元的校驗位元值,並且可指定或以其它方式指示致能控制。這些可以用如本文別處所述的各種不同的方式來提供。在一個具體範 例實施例中,這些可以藉由來源運算元562來提供,儘管本發明的範圍並不受此限制。
在方塊672處,包含第一位元、用以識別第一位元的位元位置的值、校驗位元值、以及致能控制值之第一來源運算元可以被存取或以其它方式被接收(例如,藉由執行單元、藉由位元校驗邏輯等)。現在參考圖7,位元校驗邏輯可以被耦接或以其它方式操作以接收作為輸入的具有第一位元之第一來源運算元716、用以識別第一位元的位元位置的值764、第一位元的校驗位元值738、和致能控制766。例如,位元校驗邏輯可以具有用以接收作為輸入的第一來源運算元的第一輸入782、用以接收作為輸入的值764的第二輸入781、用以接收作為輸入的校驗位元值738的第三輸入780、以及用以接收作為輸入的致能控制766的第四輸入779。合適輸入的範例包含但不限於佈線或其它互連、埠、介面等。
再次參照圖6,在方塊673處,輸入值(即,將被用來識別第一位元的位元位置)可以被用來回應於該位元校驗指令而識別該第一位元的位元位置。如圖7所示,位元校驗邏輯包含選擇邏輯783。選擇邏輯被耦接或操作以接收作為第一輸入的具有第一位元之第一來源運算元716,並且被耦接以接收作為輸入選擇控制的值764。選擇邏輯係操作以基於輸入值764來選擇第一來源運算元716的第一位元作為單一位元。適當的選擇邏輯的一個範例中是多工器(MUX)。該選擇邏輯可以輸出所選擇的第 一位元至比較邏輯784。
再次參考圖6,在方塊674處,所識別的第一位元可以回應於該位元校驗指令而與提供用於第一位元的校驗位元值進行比較。在一些實施例中,該比較可以是針對相等性。在其它實施例中,該比較可以是針對缺乏相等性。如圖7所示,位元校驗邏輯包含比較邏輯784,其係操作以執行所選擇的第一位元和校驗位元值738的比較。比較邏輯被耦接以從選擇邏輯783接收作為第一輸入的所選擇的第一位元,以及被耦接以接收作為第二輸入的校驗位元值。合適的比較邏輯的一個範例是用以執行XOR運算之XOR邏輯閘。在一些實施例中,XOR操作可以對輸入第一位元和校驗位元值執行逐位元的XOR操作,並生成作為輸出的指出比較結果之結果位元。如果所比較的輸入位元是不同的,則結果或輸出位元可以被設置為二進制一,或者如果所比較的輸入位元是相同的,則可以被清除為二進制零。可替換地,其它類型的邏輯閘,或兩個或更多個邏輯閘的組合可選擇性地使用,以執行比較。比較邏輯可以提供該比較的結果(例如,位元值)作為輸出。
再次參考圖6,在方塊675處,回應於該位元校驗指令而可以確定致能控制是否被配置以供致能。如果致能控制未配置來致能(例如,在方塊675處,確定為“否”),則該方法可以前進到方塊676。在方塊676處,當指令的正常操作被禁止時,則條件碼位元可以回應於該位元校驗指令用相同的方式來更新,而不管第一位元和校 驗位元的值。
選擇性地,如果致能控制被配置用於致能(例如,例如,在方塊675處,確定為“是”),則該方法可以前進到方塊677。在方塊677處,當指令的正常操作被啟用,則該條件碼位元可回應於該位元校驗指令而被更新以指示該第一位元是否等於或不等於校驗位元值。也就是說,條件碼位元可取決於和/或針對第一位元和校驗位元的至少一些不同的值被不同地更新。
如圖7所示,位元校驗邏輯包含致能控制邏輯785。致能控制邏輯係耦接以接收作為第一輸入的致能控制766,以及係耦接以從該比較邏輯接收作為第二輸入的比較的結果。舉例來說,這些輸入之各者可以表示單一位元值。致能控制邏輯的輸出能夠係與條件碼位元740耦接。條件碼位元的一個合適的範例是零旗標或其它零條件碼位元,雖然本發明的範圍並不受此限制。
致能控制邏輯可以操作以藉由致能控制來控制。在一些實施例中,當以特定方式配置時(例如,用於禁用,在圖示的範例中可以是二進制零的值),致能控制可以操作以使該致能控制邏輯以同樣的方式(例如,以相同的值)來更新條件碼位元,而不管比較邏輯的輸出和/或不管第一位元和校驗位元的值和/或不管第一位元是否等於校驗位元值。相比之下,在一些實施例中,當以不同的方式配置時(例如,對於致能,在圖示的範例中可以是二進制一的值),致能控制可以操作以使該致能控制邏輯 以取決或基於該比較邏輯的輸出和/或取決或基於該第一位元和校驗位元的值和/或取決或者基於該第一位元是否等於校驗位元值的方式來更新條件碼位元。
致能控制邏輯的一個合適的範例性實施例是NOT-AND(NAND)邏輯閘。而且,條件碼位元的一個合適的範例性實施例是零旗標或其它零條件碼位元。在一些實施例中,被清除為二進制零的致能控制可操作以使該NAND邏輯閘始終將零條件碼位元設定為二進制一,而不管比較結果如何,而被設置為二進制一的致能控制可操作以使NAND邏輯閘基於該比較的結果來更新零條件碼位元。例如,在一些實施例中,在後者情況下,零條件碼位元可以被更新為比較結果的邏輯NOT。例如,在一些實施例中,如果第一位元等於校驗位元值,則零條件碼位元可以被設置。
圖8是可以被用來傳送用於將由位元校驗指令校驗的至少兩個不同位元的至少兩個校驗位元值之位元校驗指令的合適的來源運算元888的另一範例實施例的方塊圖。例如,當一或多個其它位元的校驗中使用一或多個其它校驗位元值時,運算元888可被用於傳送如以上針對圖2所討論的校驗位元值238。
運算元包含用於第一位元的第一校驗位元值、選擇性地用以識別該第一位元的位元位置的第一值、以及選擇性地用於屬於第一位元的比較的第一致能控制的第一集合862-1。在一些實施例中,這些中之各者可以如 針對圖5的運算元562所述的具有相同的特性和變化。在其它實施例中,第一值和/或第一致能控制的任一者或兩者可選擇性地被省略。
運算元還至少包含用於第二位元的第二校驗位元值、選擇性地用以識別該第二位元的位元位置的第二值、和選擇性地用於屬於第二位元的比較的第二致能控制的第二集合862-2。在一些實施例中,這些中之各者可以如針對圖5的運算元562所述的具有相同的特性和變化。在其它實施例中,第二值和/或第二致能控制的任一者或兩者可選擇性地被省略。
在一些實施例中,運算元也可選擇性地包含類似於第一集合862-1和第二集合862-2的額外這種集合。舉例來說,八個集合可以各自被包含在64位元運算元的不同對應位元組中。作為另一個範例,四個集合可以各自被包含在32位元運算元的不同對應位元組中。可替換地,假設一種立即值能夠有足夠數量的位元,則運算元888可以選擇性地被包含在該立即值中。
有利的是,包含兩個或更多個此類集合862-1、862-2可以允許位元校驗指令被用來並行地對兩個或更多個不同的位元和/或在相同的位元校驗指令的效能的限制內來執行位元校驗操作。在運算元中的每個校驗位元值可對應於來源運算元中的不同位元(例如,指標)。在一些實施例中,回應於該位元校驗指令,執行單元可以操作以將兩個或更多個校驗位元值之各者與將被校驗的兩個或 更多個位元之不同對應的一者比較。在一種態樣中,只有在此來源運算元中的位元的子集可被比較,但不是所有的可被比較。例如,僅兩個或更多個的元資料位元460可以由位元校驗指令來比較,而沒有位元458之任何者可以由位元校驗指令作比較。
在一些實施例中,執行單元還可以基於該對應的比較來更新不同的對應條件碼位元。例如,針對一個位元的比較可以更新零條件碼位元,針對另一個位元的比較可以更新溢位旗標或其它溢位條件碼位元等。在其它實施例中,組合邏輯可對於不同的比較結果來執行,並且單一位元(或最少比測試的更少的位元)可以基於該結果或組合邏輯的輸出來進行調整。
圖9是可以使用位元校驗指令的實施例的無用數據收集方法990的範例實施例的方塊流程圖。在各種實施例中,該方法可以由處理器、指令處理裝置、數位邏輯裝置、或積體電路來執行。在一些實施例中,方法990可藉由圖2的處理器202和/或連同圖2的處理器202和/或使用圖2的位元校驗指令206來執行。本文針對處理器202和/或指令206所描述的部件、特徵、和特定可選細節也選擇性地適用於方法990。可替換地,方法990可以由類似的或不同的處理器或裝置或在其內和/或使用類似的或不同的指令來執行。此外,處理器202可以執行相同於、類似於或不同於方法990之方法。
在方塊991處,該方法包含執行符號位元校 驗指令以更新條件碼位元以指示符號位元是否具有無例外處理所需的值。在一些實施例中,這可以包含執行針對圖3所描述的方法350,包含其提到的變化和替代。在一些實施例中,這可以包含執行針對圖6所描述的方法670,包含其提到的變化和替代。
在方塊992處,條件式控制流轉移指令可以被接收。合適的條件式控制流轉移指令的範例包含但不限於條件式跳轉指令、及條件式分支指令等。一個具體適合的範例是某些英特爾架構處理器中的JNE(例如,如果不相等,則跳轉)指令,但本發明的範圍並不受此限制。其它各種條件式跳轉指令和條件式分支指令也適用。
在方塊993處,回應於該條件式控制流轉移指令,可以確定藉由符號位元校驗指令更新的條件碼位元是否而指出該標記位元具有無異常處理所需(NEPN)值。條件式控制流轉移指令可以指定(例如,顯式地指定)或以其它方式指示(例如,隱含地指示)條件碼位元。例如,JNE指令隱含地指示零旗標。在一些實施例中,JNE指令可測試零旗標,並且如果零旗標被清除為二進制零,則有條件地跳轉(例如,指示符號位元不具有NEPN值),或如果零旗標被設置為二進制一,則不跳轉(例如,指示符號位元確實具有NEPN值)。這僅僅是一個可能的慣例。相反的慣例也是可能的。因此,由位元校驗指令使用的條件碼位元可以被校驗,並且處理可以基於此位元的狀態繼續。
如果條件碼位元指示符號位元不具有NEPN值(即,在方塊993處的確定為“否”),則該方法可以前進到方塊994。在方塊994處,控制流轉移可以被執行且控制可以被轉移的其它碼。在一些實施例中,控制流可以轉移到無用數據收集演算法的異常處理碼(或更一般地到無用數據收集碼)。
可替代地,如果條件碼位元表示該標記位元具有NEPN值(在方塊993處的確定為“是”),則該方法可以前進到方塊995。在方塊995處,沒有對於其它碼的控制流轉移可被進行。控制流可以不轉移到無用數據收集演算法的異常處理碼或其它無用數據收集碼。相對地,執行可以繼續進行下一順序的指令。
在一些實施例中,為了幫助減少這種校驗的效能影響,下游碼可以選擇性地不取決於任何暫存器的結果。此外,在一些實施例中,指令(例如,位元校驗指令)可以操作以停用用於隨後分支指令的動態分支預測機制和/或致使該分支以給定的方式針對隨後分支指令靜態地預測(例如,預測為採取或不採取)。即使有用於分支指令的現有分支快取條目(例如,不是有分支快取條目時,不局限於靜態預測),這可能是真實的。傳統動態分支預測器通常不允許分支指令或其它條件式控制流轉移指令之前的指令禁用動態分支預測機制,而是取決於用於分支的採取或不採取任一者的靜態預測。例如,如果用於無用數據收集的位元校驗指令可致使或迫使分支或其它條件 式控制流轉移指令以覆蓋動態分支預測的方式被靜態地預設預測為靜態地不採取。如果採取控制流轉移,很可能是子程序可以呼叫以實際執行無用數據收集處理。然而,如果該位元校驗指令對於隨後的分支指令禁用此類動態分支預測,且預測始終沒有無用數據收集處理,那麼該路徑的效能一般可以持續更高效能。
範例性核心架構、處理器及電腦架構
處理器核心可以用不同方式、用於不同目的以及在不同處理器中被實施。例如,此類核心之實現可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高效能通用亂序核心;3)主要用於圖形和/或科學(通量)計算之特殊用途核心。不同處理器之實現可包括:1)CPU,其包括用於通用計算之一或多個通用依序核心和/或用於通用計算之一或多個通用亂序核心;及2)協同處理器,其包括主要用於圖形和/或科學(通量)之一或多個特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在來自該CPU之分離晶片上的協同處理器;2)在與CPU相同的封裝中之分離晶粒上的協同處理器;3)在與CPU相同的晶粒上的協同處理器(於該情況下,此一處理器有時被稱為特殊用途邏輯,諸如整合圖形和/或科學(通量)邏輯、或稱為特殊用途核心);及4)可包括於相同晶粒上之所述CPU(有時稱為應用核心或應用處理器)、上述協同處理器及額外功能的系統單 晶片。範例性核心架構被描述於下,接續著範例性處理器及電腦架構之描述。
範例性核心架構 依序或亂序核心方塊圖
圖10A是說明根據本發明之實施例的範例性依序管線及範例性暫存器重新命名、亂序發送/執行管線兩者之方塊圖。圖10B說明根據本發明之實施例的將包括於處理器中之依序架構核心之範例性實施例及範例性暫存器重新命名、亂序發送/執行架構核心兩者之方塊圖。圖10A-B中之實線方框係說明依序管線及依序核心,而選擇性加入的虛線方框係說明暫存器重新命名、亂序發送/執行管線及核心。鑑於依序態樣為亂序態樣之子集,將描述亂序態樣。
於圖10A中,處理器管線1000包括提取級1002、長度解碼級1004、解碼級1006、配置級1008、重新命名級1010、排程(亦已知為分派或發送)級1012、暫存器讀取/記憶體讀取級1014、執行級1016、寫回/記憶體寫入級1018、異常處理級1022及提交級1024。
圖10B顯示處理器核心1090,其包括耦接至執行引擎單元1050之前端單元1030,且兩者均耦接至記憶體單元1070。核心1090可以是精減指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字元(VLIW)核心、或者混合或替代核心類型。當作 又另一種選擇,核心1090可以是特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、或圖形核心等。
前端單元1030包括分支預測單元1032,其係耦接至指令快取單元1034,其係耦接至指令轉譯後備緩衝器(TLB)1036,其係耦接至指令提取單元1038,其係耦接至解碼單元1040。解碼單元1040(或解碼器)可解碼指令,並可將以下產生為輸出:一或多個微運算、微碼進入點、微指令、其它指令或其它控制訊號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元1040可使用各種不同的機制來實現。適當機制之範例包括(但不限定於)查找表、硬體實現、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,核心1090包括微碼ROM或者儲存用在一些巨集指令之微碼的其它媒體(例如,於解碼單元1040中或者於前端單元1030內)。解碼單元1040係耦接至執行引擎單元1050中之重新命名/配置器單元1052。
執行引擎單元1050包括重新命名/配置器單元1052,其耦接至撤回單元1054及一組一或多個排程器單元1056。排程器單元1056代表任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元1056係耦接至實體暫存器檔案單元1058。實體暫存器檔案單元1058之各者代表一或多個實體暫存器檔案,其不同者係儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整 數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標)等。在一個實施例中,實體暫存器檔案單元1058包含向量暫存器單元、寫入遮蔽暫存器單元及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮蔽暫存器及通用暫存器。實體暫存器檔案單元1058係由撤回單元1054所重疊以說明其中暫存器重新命名及亂序執行可被實現之各種方式(例如,使用重新排序緩衝器和撤回暫存器檔案;使用未來檔案、歷史緩衝器、和撤回暫存器檔案;使用暫存器映射圖和暫存器池等)。撤回單元1054及實體暫存器檔案單元1058係耦接至執行叢集1060。執行叢集1060包括一組一或多個執行單元1062及一組一或多個記憶體存取單元1064。執行單元1062可執行各種操作(例如,移位、相加、相減、相乘)以及對於各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其它實施例可包括僅一個執行單元或者全部執行所有功能之多個執行單元。排程器單元1056、實體暫存器檔案單元1058及執行叢集1060被顯示為可能複數的,因為某些實施例係針對某些類型的資料/操作產生個別的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線和/或記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔案單元和/或執行叢集-且於個別的記憶體存取管線之情況下,某些實 施例被實現於其中僅有此管線之執行叢集具有記憶體存取單元1064)。亦應理解,當使用個別的管線時,這些管線之一或多者可以是亂序發送/執行而其餘為依序的。
該組記憶體存取單元1064係耦接至記憶體單元1070,其包括資料TLB單元1072,其耦接至資料快取單元1074,其耦接至第二階(L2)快取單元1076。在一個範例性實施例中,記憶體存取單元1064可包括載入單元、儲存位址單元及儲存資料單元,其各者係耦接至記憶體單元1070中之資料TLB單元1072。指令快取單元1034係進一步耦接至記憶體單元1070中之第二階(L2)快取單元1076。L2快取單元1076係耦接至一或多個其它階的快取且最終至主記憶體。
舉例而言,範例性暫存器重新命名、亂序發送/執行核心架構可實現管線1000如下:1)指令提取1038執行提取和長度解碼級1002和1004;2)解碼單元1040執行解碼級1006;3)重新命名/配置器單元1052執行配置級1008和重新命名級1010;4)排程器單元1056執行排程級1012;5)實體暫存器檔案單元1058和記憶體單元1070執行暫存器讀取/記憶體讀取級1014;執行叢集1060執行執行級1016;6)記憶體單元1070和實體暫存器檔案單元1058執行寫回/記憶體寫入級1018;7)各個單元可涉及異常處理級1022;及8)撤回單元1054和實體暫存器檔案單元1058執行提交級1024。
核心1090可支援一或多個指令集(例如, x86指令集,具有其已被加入有較新版本之某些延伸);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON之選擇性額外延伸),包括文中所述之指令。在一個實施例中,核心1090包括支援緊縮資料指令集延伸(例如,AVX1、AVX2)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來執行。
應理解,核心可支援多線程(執行二個或更多平行組的操作或線程),並可以多種方式執行此,包括時間切割多線程、同步多線程(其中單一實體核心提供邏輯核心給其實體核心正同步地多線程之每一線程)或者其組合(例如,時間切割提取和解碼以及之後的同步多線程,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名被描述於亂序執行之背景,但應理解,暫存器重新命名可被使用於依序架構。雖然處理器的所述實施例也包括個別的指令和資料快取單元1034/1074以及共用L2快取單元1076,但替代實施例可具有針對指令和資料兩者之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階內部快取。在一些實施例中,該系統可包括內部快取與外部快取之組合,該外部快取是位於核心和/或處理器之外部。替代地,所有快取可位於核心和/或處理器之外部。
具體範例性依序核心架構
圖11A-B說明更特定的範例性依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊之一(包括相同類型和/或不同類型之其它核心)。邏輯區塊係透過高頻寬互連網路(例如,環狀網路)根據其應用而利用某些固定功能邏輯、記憶體I/O介面及其它必要I/O邏輯來通訊。
圖11A為根據本發明之實施例的單一處理器核心,連同與晶粒上互連網路1102之其連接、以及第二階(L2)快取1104之其本地子集之方塊圖。在一個實施例中,指令解碼器1100支援具有緊縮資料指令集延伸之x86指令集。L1快取1106容許針對快取記憶體之低潛時存取入純量及向量單元。雖然在一個實施例中(為了簡化設計),純量單元1108及向量單元1110使用個別的暫存器組(分別是純量暫存器11112及向量暫存器1114),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取1106被讀回,但本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩個暫存器檔案之間而不被寫入及讀回)。
L2快取1104之本地子集為其被劃分為個別的本地子集(每一處理器核心有一個)之總體L2快取的部分。各處理器核心具有一直接存取路徑通至L2快取1104之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取子集1104中且可被快速地存取,平行於存取 其本身本地L2快取子集之其它處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集1104中且假如需要的話,從其它子集被清除。環狀網路確保共用資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其它邏輯區塊等代理於晶片內部彼此通訊。各環狀資料路徑於每方向為1012位元寬。
圖11B為根據本發明之實施例的圖11A中之處理器核心的部分之延伸視圖。圖11B包括L1快取1104之L1資料快取1106A部分,以及有關向量單元1110和向量暫存器1114之更多細節。明確地,向量單元1110為16寬的向量處理單元(VPU)(參見16寬的ALU 1128),其係執行整數、單精確度浮點及雙精確度浮點指令之一或多個。VPU支援以拌合單元1120將暫存器輸入拌合、以數字轉換單元1122A-B之數字轉換、以及以複製單元1124對於記憶體輸入之複製。寫入遮蔽暫存器1126容許斷定結果向量寫入。
具有整合記憶體控制器及圖形之處理器
圖12為根據本發明之實施例的可具有多於一個核心、可具有整合記憶體控制器、且可具有整合圖形之處理器1200之方塊圖。圖12中之實線方框說明處理器1200,其具有單核心1202A、系統代理1210、一組一或多個匯流排控制器單元1216,而選擇性加入的虛線方框說明替代處理器1200,其具有多核心1202A-N、系統代理 單元1210中之一組一或多個整合記憶體控制器單元1214、及特殊用途邏輯1208。
因此,處理器1200之不同實現可包括:1)CPU,具有其為整合圖形和/或科學(通量)邏輯(其可包括一或多個核心)之特殊用途邏輯1208,及其為一或多個通用核心(例如,通用依序核心、通用亂序核心、兩者之組合)之核心1202A-N;2)協同處理器,具有其為主要用於圖形和/或科學(通量)之大量特殊用途核心的核心1202A-N;及3)協同處理器,具有其為大量通用依序核心的核心1202A-N。因此,處理器1200可以是通用處理器、協同處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多數整合核心(MIC)協同處理器(包括30或更多核心)、或嵌入式處理器等。該處理器可被實現於一或多個晶片上。處理器1200可以是一或多個基底之部分和/或可使用數個製程技術之任一者,諸如(例如)BiCMOS、CMOS、或NMOS被實現於一或多個基底上。
記憶體階層包括該些核心內之一或多階快取、一組或者一或多個共用快取單元1206、及耦接至該組整合記憶體控制器單元1214之外部記憶體(未顯示)。該組共用快取單元1206可包括一或多個中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)或其它階快取、最後階快取(LLC)和/或其組合。雖然在 一個實施例中環狀式互連單元1212將整合圖形邏輯1208、該組共用快取單元1206及系統代理單元1210/整合記憶體單元1214互連,但替代實施例可使用任何數目之眾所周知的技術來互連此等單元。在一個實施例中,一致性被維持於一或多個快取單元1206與核心1212-A-N之間。
在一些實施例中,一或多個核心1202A-N能夠進行多線程。系統代理1210包括協調並操作核心1202A-N的那些部件。系統代理單元1210可包括(例如)電力控制單元(PCU)及顯示單元。PCU可以是或者包括用以調節核心1202A-N及整合圖形邏輯1208之電力狀態所需的邏輯和部件。顯示單元係用於驅動一或多個外部連接的顯示器。
核心1202A-N可針對架構指令集而言為同質的或異質的;亦即,二個或更多核心1202A-N可執行相同的指令集,而其它者可僅執行該指令集之一子集或不同的指令集。
範例性電腦架構
圖13至21為範例性電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、行動電話、可攜 式媒體播放器、手持式裝置及各種其它電子裝置之技術中已知的其它系統設計和組態亦為適當的。通常,能夠結合處理器和/或如文中所揭露的其它執行邏輯之多種系統或電子裝置通常為適當的。
現在參考圖13,其顯示根據本發明之一實施例的系統1300之方塊圖。系統1300可包括一或多個處理器1310、1315,其係耦接至控制器集線器1320。在一個實施例中,控制器集線器1320包括圖形記憶體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(其可於個別的晶片上);GMCH 1390包括記憶體及圖形控制器(耦接至記憶體1340及協同處理器1345);IOH 1350係將輸入/輸出(I/O)裝置1360耦接至GMCH 1390。另一方面,記憶體與圖形控制器之一或兩者被整合於處理器內(如文中所述),記憶體1340及協同處理器1345被直接地耦接至處理器1310及與IOH 1350在單一晶片中的控制器集線器1320。
額外處理器1315之選擇性本質於圖13中以斷線標示。各處理器1310、1315可包括文中所述的處理核心之一或多者並可以是某版本之處理器1200。
記憶體1340可以是(例如)動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或兩者之組合。針對至少一實施例,控制器集線器1320經由諸如前側匯流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接1395而與處理器 1310、1315通訊。
在一個實施例中,協同處理器1345為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。在一個實施例中,控制器集線器1320可包括整合圖形加速器。
於實體資源1310、1315間可有就包括架構、微架構、熱、功率耗損特性等優勢指標之譜而言的各樣差異。
在一個實施例中,處理器1310執行控制一般類型之資料處理操作的指令。指令內所嵌入者可以是協同處理器指令。處理器1310辨識這些協同處理器指令為應由裝附之協同處理器1345所執行的類型。因此,處理器1310將協同處理器匯流排或其它互連上之這些協同處理器指令(或代表協同處理器指令之控制訊號)發送至協同處理器1345。協同處理器1345接受並執行該些接收的協同處理器指令。
現在參考圖14,其顯示根據本發明之實施例的第一更具體範例性系統1400之方塊圖。如圖14中所示,多處理器系統1400為點對點互連系統,並包括經由點對點互連1450而耦接之第一處理器1470及第二處理器1480。處理器1470及1480之每一者可以是某版本之處理器1200之某版本。在本發明之一實施例中,處理器1470及1480分別為處理器1310及1315,而協同處理器1438 為協同處理器1345。於另一實施例中,處理器1470及1480分別為處理器1310及協同處理器1345。
處理器1470及1480被顯示為個別地包括整合記憶體控制器(IMC)單元1472及1482。處理器1470也包括其匯流排控制器單元點對點(P-P)介面1476及1478之部分;類似地,第二處理器1480包括P-P介面1486及1488。處理器1470、1480可使用P-P介面電路1478、1488而經由點對點(P-P)介面1450來交換資訊。如圖14中所示,IMC 1472及1482將處理器耦接至個別記憶體,亦即記憶體1432及記憶體1434,其可以是區域地裝附至個別處理器之主記憶體的部分。
處理器1470、1480可使用點對點介面電路1476、1494、1486、1498各經由個別的P-P介面1452、1454而與晶片組1490交換資訊。晶片組1490可經由高效能介面1439而選擇性地與協同處理器1438交換資訊。在一個實施例中,協同處理器1438為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。
假如處理器被置於低功率模式時,共用快取(未顯示)可被包括於任一處理器中或者於兩處理器外部,而仍經由P-P互連與處理器連接,以致處理器之任一者或兩者的本地快取資訊可被儲存於共用快取中。
晶片組1490可經由一介面1496而耦接至第一匯流排1416。在一個實施例中,第一匯流排1416可以 是周邊部件互連(PCI)匯流排、或者諸如PCI快速匯流排或其它第三代I/O互連匯流排等的匯流排,雖然本發明之範圍未如此限制。
如圖14中所示,各種I/O裝置1414可耦接至第一匯流排1416,連同匯流排橋1418,其係將第一匯流排1416耦接至第二匯流排1420。在一個實施例中,一或多個額外處理器1415(諸如協同處理器、高通量MIC處理器、GPGPU加速器(諸如,例如,圖形加速器或數位訊號處理(DSP)單元)、現場可程式化閘陣列、或任何其它處理器)係耦接至第一匯流排1416。在一個實施例中,第二匯流排1420可以是低腳位數(LPC)匯流排。在一個實施例中,各種裝置可耦接至第二匯流排1420,其包括(例如)鍵盤和/或滑鼠1422、通訊裝置1427及儲存單元1428,諸如磁碟機或其它大量儲存裝置(其可包括指令/碼及資料1430)。此外,音頻I/O 1424可耦接至第二匯流排1420。注意,其它架構是可能的。例如,取代圖14之點對點架構,系統可實現多點分支匯流排或其它此類架構。
現在參考圖15,其顯示根據本發明之實施例的第二更具體範例性系統1500之方塊圖。圖14與15中之類似元件具有類似的參考符號,且圖14之某些態樣已從圖15省略以免混淆圖15之其它態樣。
圖15說明處理器1470、1480可個別包括整合記憶體及I/O控制邏輯(「CL」)1472和1482。因 此,CL 1472、1482包括整合記憶體控制器單元並包括I/O控制邏輯。圖15說明不僅記憶體1432、1434係耦接至CL 1472、1482,同時I/O裝置1514亦耦接至控制邏輯1472、1482。舊有I/O裝置1515係耦接至晶片組1490。
現在參考圖16,其顯示根據本發明之一實施例的SoC 1600之方塊圖。圖12中之類似元件具有類似的參考符號。同時,虛線方塊為更多先進SoC上之選擇性特徵。於圖16中,互連單元1602係耦接至:應用處理器1610,其包括一組一或多個核心152A-N及共用快取單元1206;系統代理單元1210;匯流排控制器單元1216;整合記憶體控制器單元1214;一組一或多個協同處理器1620,其可包括整合圖形邏輯、影像處理器、音頻處理器及視頻處理器;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;及顯示單元1640,用以耦接至一或多個外部顯示器。在一個實施例中,協同處理器1620包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、或嵌入式處理器等。
文中所揭露之機制的實施例可以用硬體、軟體、韌體或此等實現之組合來實現。本發明之實施例可實現為電腦程式或程式碼,其執行於可程式化系統上,該可程式化系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體和/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖14中所示之碼1430)可被應用於輸入指令以執行文中所述之功能並產生輸出資訊。輸出資訊可以用已知的方式被應用於一或多個輸出裝置。為了本申請案之目的,處理系統包括任何具有諸如(例如)數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器之處理器的系統。
程式碼可以用高階程序或物件導向的程式語言來實施以與處理系統通訊。假如想要的話,則程式碼也可以用組合或機器語言來實施。事實上,文中所述之機制在範圍上不限於任何特定程式語言。於任何情況下,該語言可以是經編譯或經轉譯的語言。
至少一實施例之一或多個態樣可由儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各種邏輯,當由機器讀取時,造成該機器製造邏輯以執行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個消費者或製造設施以載入其實際上製造該邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包括(無限制)由機器或裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)及磁光碟等任何其它類型的碟片;半導體裝置,諸如唯讀記憶體(ROM),諸如動態隨機存取記憶體(DRAM)、靜態 隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)等隨機存取記憶體(RAM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其它類型的媒體。
因此,本發明之實施例也包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義文中所述之結構、電路、設備、處理器和/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二進制翻譯、碼變形等)
在一些情況下,指令轉換器可被來將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令轉譯(例如,使用靜態二進制轉譯、動態二進制轉譯,包括動態編譯)、變形、仿真、或者轉換至一或多個其它指令以供由核心來處理。指令轉換器可以用軟體、硬體、韌體、或其組合來實施。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖17為對照一種根據本發明之實施例的用以將來源指令集中之二進制指令轉換至目標指令集中之二進制指令的軟體指令轉換器之使用的方塊圖。於所述之實施例中,指令轉換器是一種軟體指令轉換器,雖然替代地該指令轉換器亦可以用以軟體、韌體、硬體、或其各種組合 來實施。圖17顯示一種高階語言1702之程式可使用x86編譯器1704而被編譯以產生x86二進制碼1706,其可由具有至少一x86指令集核心之處理器1716來本機地執行。具有至少一x86指令集核心之處理器1716代表任何處理器,其可藉由可相容地執行或者處理以下事項來執行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其它軟體之物件碼版本,以實質上獲得如具有至少一x86指令集核心之Intel處理器的相同結果。x86編譯器1704代表一種編譯器,其可操作以產生x86二進制碼1706(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器1716上。類似地,圖17顯示高階語言1702之程式可使用替代的指令集編譯器1708而被編譯以產生替代的指令集二進制碼1710,其可由沒有至少一x86指令集核心之處理器1714來本機地執行(例如,具有其執行MIPS Technologies of Sunnyvale,CA之MIPS指令集和/或其執行ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器1712被用以將x86二進制碼1706轉換為其可由沒有至少一x86指令集核心之處理器1714來本機地執行的碼。已轉換碼不太可能相同於替代的指令集二進制碼1710,因為能夠執行此功能之指令轉換器很難製造;然而,已轉換碼將完成一般性操 作並由來自替代指令集之指令所組成。因此,指令轉換器1712代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其它程序)容許處理器或其它不具有x86指令集處理器或核心的電子裝置來執行x86二進制碼1706。
針對文中所揭露之任何處理器所述之部件、特徵及細節可選擇性地應用於文中所揭露之方法的任一者,其中實施例可選擇性地由和/或以此等處理器來執行。在實施例中,本文中描述的任何處理器可以選擇性地被包括在本文所揭露的任何系統中。在實施例中,本文中揭露的任何指令可以選擇性地由和/或利用本文揭露的任何處理器來執行,選擇性地在具有本文所示的任何微架構的一些實施例中,並且選擇性地在包括在本文所示的任何系統中的一些實施例中。因此,在一些實施例中,針對任何本文所揭露的指令而描述的特徵和細節因此可任選地應用於可用於執行那些指令的本文揭露的任何處理器和/或系統。
本文揭露的處理器部件可以說是操作、配置、能夠或能執行操作。例如,解碼器可以用以解碼指令、執行單元可以用以儲存結果等。為了清楚起見,應當理解,這些表達並不意味著處理器部件在操作或使用中,而是指處理器部件在操作時能夠做或能夠做到什麼,但是在主張這些處理器部件的裝置中並非在操作中。
於說明書及申請專利範圍中,術語「耦接」 和/或「連接」(連同其衍生詞)可被使用。這些術語並非被用為彼此的同義詞。反之,於實施例中,「連接」可被用以指示二個或更多元件係彼此直接地實體和/或電氣接觸。「耦接」可表示二個或更多元件係彼此直接地實體和/或電氣接觸。然而,「耦接」亦可表示二個或更多元件不是彼此直接接觸,而仍彼此協作或互動。例如,執行單元可透過一或多個中間部件而與暫存器和/或解碼單元耦接。在圖形中,箭號被用以顯示連接或耦接。
文中所揭露之部件及先前圖形中所描繪之方法可以用邏輯、模組、或單元,其包括硬體(例如,電晶體、閘、電路等)、韌體(例如,儲存微碼或控制訊號的非揮發性記憶體)、軟體(例如,儲存於非暫態電腦可讀取儲存媒體之上者)、或其組合被實現。在一些實施例中,邏輯、模組或單元可包括潛在地與某些選擇性軟體結合之硬體和/或韌體的至少某些或主要混合。
術語「和/或」可能已被使用。如文中所使用的,術語「和/或」表示一者或另一者或兩者(例如,A和/或B表示A或B或A與B兩者)。
在以上說明中,已闡述特定細節以提供實施例之透徹瞭解。然而,其它實施例可被實行而沒有這些特定的細節。本發明之範圍並非由以上所提供的具體範例來決定,而僅由底下的申請專利範圍來決定。在其它例子中,眾所周知的電路、結構、裝置及操作已被以方塊圖形式和/或無細節地顯示,以避免妨礙對描述之瞭解。在適 當情況下,除非另有指明或顯而易見,參考符號、或參考符號之末端部已被重複於圖形之間以指示相應的或類似的元件,其可選擇性地具有類似的或相同的特性。
某些操作可由硬體部件來執行,或者可以用機器可執行或電路可執行指令來實現,其可被用以致使和/或導致以指令編程之機器、電路、或硬體部件(例如,處理器、處理器之部分、電路等)執行該些操作。該些操作亦可選擇性地由硬體與軟體之組合來執行。處理器、機器、電路或硬體可包括特定或特殊的電路或其它邏輯(例如,潛在地與韌體和/或軟體結合之硬體),其可操作以執行和/或處理指令並回應於該指令而儲存結果。
某些實施例包括製品(例如,電腦程式產品),其包括機器可讀取媒體。媒體可包括一種可由機器讀取之形式提供(例如,儲存)資訊之機制。機器可讀取媒體可提供(或於其上儲存)指令或指令序列,其(假如和/或當由機器執行時)可操作以致使機器執行和/或導致機器執行文中所揭露的操作、方法、或技術之一。
在一些實施例中,機器可讀取媒體可包括有形和/或非暫態機器可讀取儲存媒體。例如,非暫態機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除且可程式化ROM(EPROM)、電可抹除且可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM (SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、或非暫態資料儲存裝置等。非暫態機器可讀取儲存媒體不包括暫態傳播訊號。在一些實施例中,儲存媒體可包括有形媒體,其包括固態物質或材料,諸如(例如)半導體材料、相變材料、磁性固態材料、固態資料儲存材料等。替代地,可選擇性地使用非有形暫態電腦可讀取傳輸媒體,諸如(例如)電、光、聲或其它形式的傳播訊號-諸如載波、紅外線訊號及數位訊號。
適當機器之範例包括(但不限定於)通用處理器、特殊用途處理器、數位邏輯電路、積體電路等。適當機器之又其它範例包括電腦系統或其它電子裝置,其包括處理器、數位邏輯電路、或積體電路。此類電腦系統或電子裝置之範例包括(但不限定於)桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧型手機、行動電話、伺服器、網路裝置(例如,路由器及交換器)、行動網際網路裝置(MID)、媒體播放器、智慧電視、桌上型易網機、機上盒、及視頻遊戲控制器。
遍及本說明書針對「一個實施例」、「實施例」、「一或多個實施例」、「某些實施例」(舉例而言)之參考係指示特定特徵可被包括於本發明之實施中但並不一定必要。類似地,於說明書中,各個特徵有時在單一實施例、圖形、或其描述中被組合在一起,以供解釋本發明及協助瞭解實施例之各個發明性態樣的目的。然而, 本發明之方法不應被解讀為反應本發明需要比各申請專利範圍中所明確記載之更多特徵的企圖。反之,如以下申請專利範圍所反應者,發明性態樣在於比單一所揭露實施例之所有特徵更少的特徵。因此,接續在實施方式之後的申請專利範圍在此被明確地併入此實施方式中,以各項申請專利範圍本身可獨立成為本發明之一個別的實施例。
範例性實施例
下面的範例關於進一步的實施例。範例中的細節可以在一或多個實施例中的任何地方使用。
範例1是一種處理器,包含暫存器,用以儲存條件碼位元;解碼單元,用以解碼位元校驗指令,該位元校驗指令用以指示用以包含第一位元的第一來源運算元,以及用以指示用於該第一位元的校驗位元值;以及執行單元,與該解碼單元耦接,該執行單元回應於該位元校驗指令,用以將該第一位元與該校驗位元值進行比較;以及更新該條件碼位元以指示該第一位元是否等於或不等於該校驗位元值。
範例2包含範例1的處理器,選擇性地其中該解碼單元係用以解碼用以指示用以識別該第一位元的位元位置為複數個不同的位元位置中的任一者之值的該位元校驗指令。
範例3包含範例1的處理器,選擇性地其中該解碼單元係用以解碼用以具有隱含地指示,但是沒有明 確指定的該第一位元之固定位元位置的該位元校驗指令。
範例4包含範例1的處理器,選擇性地其中該條件碼位元係零條件碼位元,以及選擇性地其中如果該第一位元等於該校驗位元值,則該執行單元回應於該指令係用以設置該零條件碼位元。
範例5包含範例1的處理器,選擇性地其中該解碼單元係用以解碼用以指示禁用控制的該位元校驗指令,以及選擇性地其中當該禁用控制為有效時,則該執行單元回應於該指令係用以以同一方式來更新該條件碼位元,無論該第一位元是否等於或不等於該校驗位元值。
範例6包含範例5的處理器,選擇性地其中該條件碼位元係零條件碼位元,以及選擇性其中當該禁用控制為有效時,則該執行單元回應於該指令係用以設置該零條件碼位元,無論該第一位元是否等於或不等於該校驗位元值。
範例7包含範例1至6中任一者的處理器,選擇性地其中該解碼單元係用以解碼用以指示將成為記憶體指標的該第一來源運算元的該位元校驗指令。
範例8包含範例7的處理器,選擇性地其中該第一位元將成為將在該記憶體指標的一或多個最有效位元中以及在位址轉換期間將不使用於識別實體記憶體位置的目的之該記憶體指標的元資料位元。
範例9包含範例8的處理器,選擇性地其中該第一位元將成為用於無用數據收集的標記位元。
範例10包含範例1至6中任一者的處理器,選擇性地其中該解碼單元係用以解碼能夠指示該校驗位元值將是二進制一和二進制零其中之一的該位元校驗指令。
範例11包含範例1至6中任一者的處理器,選擇性地其中該解碼單元係用以解碼該位元校驗指令,其用以指示第二來源運算元,該第二來源運算元包含分別對應於複數個位元中的不同一者的複數個校驗位元值,該複數個位元只表示該第一來源運算元的所有位元的子集。
範例12包含範例11的處理器,選擇性地其中該執行單元回應於該指令,用以將該校驗位元值中的每一個與該第一來源運算元的該複數個位元中的對應一者進行比較;以及更新該第一來源運算元的該複數個位元中的每一個的不同對應條件碼位元以指示該第一來源運算元的該複數個位元中的每一個是否等於或不等於該對應的校驗位元值。
範例13包含範例1至6中任一者的處理器,選擇性地其中該解碼單元係用以解碼用以指示用以包含該校驗位元值的第二來源運算元的該位元校驗指令。
範例14包含範例1至6中任一者的處理器,選擇性地其中該執行單元包含XOR閘以將該第一位元與該校驗位元值進行比較。
範例15是一種由處理器執行的方法,包含在該處理器處接收位元校驗指令,該位元校驗指令指示包含第一位元的第一來源運算元,以及指示用於該第一位元的 校驗位元值;回應於該位元校驗指令,將該第一位元與該校驗位元值進行比較;以及回應於該位元校驗指令,更新條件碼位元以指示該第一位元是否等於或不等於該校驗位元值。
範例16包含範例15的方法,選擇性地其中接收包含接收指示識別該第一位元的位元位置為複數個不同可能的位元位置中的任一者之值的該位元校驗指令。
範例17包含範例15的方法,選擇性地其中接收包含接收指示能夠被配置以使得該條件碼位元以相同的方式被更新而不管該第一位元是否等於或不等於該校驗位元值之致能控制的該位元校驗指令。
範例18包含範例15的方法,選擇性地其中接收包含接收指示將成為記憶體指標的該第一來源運算元的該位元校驗指令。
範例19包含範例18的方法,選擇性地其中該第一位元是在位址轉換期間將不使用於識別實體記憶體位置之該記憶體指標的元資料位元。
範例20包含範例19的方法,選擇性地其中該第一位元是用於無用數據收集的標記位元。
範例21包含範例15的方法,還包含如果該條件碼位元指示該第一位元不等於該校驗位元值,則執行控制流轉移指令以使控制流轉移至無用數據收集器。
範例22是一種用以處理指令的系統,包含互連;與該互連耦接的處理器,該處理器用以接收用以指示 包含第一位元的第一來源運算元的位元校驗指令,以及用以指示用於該第一位元的校驗位元值,該處理器回應於該位元校驗指令用以將該第一位元與該校驗位元值進行比較,以及更新條件碼位元以指示該第一位元是否等於或不等於該校驗位元值;以及與該互連耦接的動態隨機存取記憶體(DRAM)。
範例23包含範例22的系統,選擇性地其中該位元校驗指令係用以指示識別該第一位元的位元位置為複數個不同的位元位置中的任一者之值。
範例24是一種包含非暫態機器可讀取儲存媒體的製品。該非暫態機器可讀取儲存媒體儲存包含位元校驗指令的複數個指令,如果由機器執行所述位元校驗指令時,該位元校驗指令係用以使該機器執行包含以下的操作:存取將由該位元校驗指令指示的第一來源運算元,該第一來源運算元用以包含第一位元;存取將由該位元校驗指令指示之用於該第一位元的校驗位元值;回應於該位元校驗指令,將該第一位元與該校驗位元值進行比較;以及回應於該位元校驗指令,更新條件碼位元以指示該第一位元是否等於或不等於該校驗位元值。
範例25包含範例24的製品,選擇性地其中該第一位元是用於無用數據收集的標記位元。
範例26包含範例1至14中任一者的處理器,還包含可選的分支預測單元用以預測分支,以及可選的指令預提取單元,其與該分支預測單元耦接,該指令預 提取單元用以預提取包含指令的多個指令。該處理器也可以選擇性地包含可選的第一階(L1)指令快取,其與該指令預提取單元耦接,該L1指令快取用以儲存指令,可選的L1資料快取用以儲存資料,以及可選的第二階(L2)快取用以儲存資料和指令。該處理器也可以選擇性地包含指令提取單元,其與該解碼單元、該L1指令快取和該L2快取耦接,在一些情況下用以從該L1指令快取和該L2快取中的一個提取指令,並提供該指令給該解碼單元。該處理器也可以選擇性地包含暫存器重新命名單元用以將暫存器重新命名,可選的排程器用以將已經從該指令解碼的一或多個操作排程以供執行,以及可選的提交單元用以提交該指令的執行結果。
範例27包含一種系統單晶片,其包含至少一個互連,範例1至14中任一者的處理器,其與該至少一個互連耦接、可選的圖形處理單元(GPU),其與該至少一個互連耦接、可選的數位訊號處理器(DSP),其與該至少一個互連耦接、可選的顯示器控制器,其與該至少一個互連耦接、可選的記憶體控制器,其與該至少一個互連耦接、可選的無線數據機,其與該至少一個互連耦接、可選的影像訊號處理器,其與該至少一個互連耦接、可選的通用串列匯流排(USB)3.0相容控制器,其與該至少一個互連耦接、可選的藍芽4.1相容控制器,其與該至少一個互連耦接,以及可選的無線收發器控制器,其與該至少一個互連耦接。
範例28是一種處理器或其它裝置,可操作以執行範例15至21中任一者的方法。
範例29是一種處理器或其它裝置,其包含用於執行範例15至21中任一者的方法的機制。
範例30是一種處理器或其它裝置,其包含操作以執行範例15至21中任一者的方法的模組和/或單元和/或邏輯和/或電路和/或機制的任意組合。
範例31是一種選擇性地非暫態和/或有形機器可讀取媒體,其選擇性地儲存或以其它方式提供包含第一指令的指令,該第一指令如果和/或由處理器、電腦系統、電子裝置、或其它機器執行時,可操作以使該機器用以執行範例15至21中任一者的方法。
範例32是一種基本上如本文所述的處理器或其它裝置。
範例33是一種處理器或其它裝置,其可操作以執行基本上如本文所述的任何方法。
範例34是一種處理器或其它裝置,其可操作以執行基本上如本文描述的任何指令。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧指令集
106‧‧‧位元校驗指令
108‧‧‧用以執行位元校驗指令之邏輯
110‧‧‧記憶體
112‧‧‧無用數據收集模組
114‧‧‧非堆積記憶體和執行緒堆疊
116-1‧‧‧第一指標
116-N‧‧‧第N指標
118-1‧‧‧第一標記位元
118-N‧‧‧第N標記位元
120‧‧‧堆積
122-1‧‧‧第一物件
122-M‧‧‧第M物件
124‧‧‧傳統耦接機構

Claims (24)

  1. 一種處理器,包含:暫存器,用以儲存條件碼位元;解碼單元,用以解碼位元校驗指令,該位元校驗指令用以指示用以包含第一位元的第一來源運算元,以及用以指示用於該第一位元的校驗位元值,其中該校驗位元值將成為從包含由隱含由該位元校驗指令的欄位指定的該位元校驗指令及由該位元校驗指令的運算元指定的該位元校驗指令組成的群組中選出之一者;以及執行單元,與該解碼單元耦接,該執行單元回應於該位元校驗指令,用以:將該第一位元與該校驗位元值進行比較;以及更新該條件碼位元以指示該第一位元是否等於或不等於該校驗位元值。
  2. 如申請專利範圍第1項的處理器,其中該解碼單元係用以解碼用以指示用以識別該第一位元的位元位置為複數個不同的位元位置中的任一者之值的該位元校驗指令。
  3. 如申請專利範圍第1項的處理器,其中該解碼單元係用以解碼用以具有隱含地指示,但是沒有明確指定的該第一位元之固定位元位置的該位元校驗指令。
  4. 如申請專利範圍第1項的處理器,其中該條件碼位元係零條件碼位元,以及其中如果該第一位元等於該校驗位元值,則該執行單元回應於該指令係用以設置該零條件碼位元。
  5. 如申請專利範圍第1項的處理器,其中該解碼單元係用以解碼用以指示致能控制的該位元校驗指令,以及其中當該致能控制具有第一值時,則該執行單元回應於該指令係用以以同一方式來更新該條件碼位元,無論該第一位元是否等於或不等於該校驗位元值。
  6. 如申請專利範圍第5項的處理器,其中該條件碼位元係零條件碼位元,以及其中當該致能控制具有第一值時,則該執行單元回應於該指令係用以設置該零條件碼位元,無論該第一位元是否等於或不等於該校驗位元值。
  7. 如申請專利範圍第1項的處理器,其中該解碼單元係用以解碼用以指示將成為記憶體指標的該第一來源運算元的該位元校驗指令。
  8. 如申請專利範圍第7項的處理器,其中該第一位元將成為將在該記憶體指標的一或多個最有效位元中以及在位址轉換期間將不使用於識別實體記憶體位置的目的之該記憶體指標的元資料位元。
  9. 如申請專利範圍第8項的處理器,其中該第一位元將成為用於無用數據收集的標記位元。
  10. 如申請專利範圍第1項的處理器,其中該解碼單元係用以解碼能夠指示該校驗位元值將是二進制一和二進制零其中之一的該位元校驗指令。
  11. 如申請專利範圍第1項的處理器,其中該解碼單元係用以解碼該位元校驗指令,其用以指示第二來源運算元,該第二來源運算元包含分別對應於複數個位元中的不同單一位元的複數個第二校驗位元值,該複數個位元只表示該第一來源運算元的所有位元的子集。
  12. 如申請專利範圍第11項的處理器,其中該執行單元回應於該指令,用以:將該等第二校驗位元值中的每一個與該第一來源運算元的該複數個位元中的對應一者進行比較;以及更新該第一來源運算元的該複數個位元中的每一個的該條件碼位元,以指示該第一來源運算元的該複數個位元中的每一個是否等於或不等於該等第二校驗位元值中對應的校驗位元值。
  13. 如申請專利範圍第1項的處理器,其中該解碼單元係 用以解碼用以指示用以包含該校驗位元值的第二來源運算元的該位元校驗指令。
  14. 如申請專利範圍第1項的處理器,其中該執行單元包含XOR閘以將該第一位元與該校驗位元值進行比較。
  15. 一種由處理器執行的方法,包含:利用該處理器的晶粒上解碼單元來解碼該處理器的指令集的位元校驗指令,該位元校驗指令指示包含第一位元的第一來源運算元,以及指示用於該第一位元的校驗位元值,其中該校驗位元值為從包含由隱含由該位元校驗指令的欄位指定的該位元校驗指令及由該位元校驗指令的運算元指定的該位元校驗指令組成的群組中選出之一者,其中該第一來源運算元為記憶體位址運算元,其具有複數個用於確定記憶體位址的最低有效位元和複數個除了記憶體位址確定以外可用於一或多個其它目的的最高有效位元,以及其中該第一位元為該最高有效位元之一者;回應於該位元校驗指令,利用該處理器的晶粒上執行單元將該第一位元與該校驗位元值進行比較;以及回應於該位元校驗指令,更新條件碼位元以指示該第一位元是否等於或不等於該校驗位元值,其中該第一位元是用於無用數據收集的標記位元。
  16. 如申請專利範圍第15項的方法,其中解碼包含解碼指 示識別該第一位元的位元位置為複數個不同可能的位元位置中的任一者之值的該位元校驗指令。
  17. 如申請專利範圍第15的方法,其中解碼包含解碼指示能夠被配置以使得該條件碼位元以相同的方式被更新而不管該第一位元是否等於或不等於該校驗位元值之致能控制的該位元校驗指令。
  18. 如申請專利範圍第15項的方法,其中解碼包含解碼指示將成為記憶體指標的該第一來源運算元的該位元校驗指令。
  19. 如申請專利範圍第18項的方法,其中該第一位元是在位址轉換期間將不使用於識別實體記憶體位置之該記憶體指標的元資料位元。
  20. 如申請專利範圍第19項的方法,還包含基於該條件碼位元來控制無用數據收集中的例外處理。
  21. 如申請專利範圍第15項的方法,還包含如果該條件碼位元指示該第一位元不等於該校驗位元值,則執行控制流轉移指令以使控制流轉移至無用數據收集器。
  22. 一種用以處理指令的系統,包含: 互連;與該互連耦接的處理器,該處理器用以接收用以指示包含第一位元的第一來源運算元的位元校驗指令,以及用以指示用於該第一位元的校驗位元值,其中該校驗位元值為從包含由隱含由該位元校驗指令的欄位指定的該位元校驗指令及由該位元校驗指令的運算元指定的該位元校驗指令組成的群組中選出之一者,該處理器回應於該位元校驗指令用以將該第一位元與該校驗位元值進行比較,以及如果該第一位元等於該校驗位元值,則使條件碼位元具有第一值,如果該第一位元不等於該校驗位元值,則使該條件碼位元具有與該第一值不同的第二值;以及與該互連耦接的動態隨機存取記憶體(DRAM)。
  23. 如申請專利範圍第22項的系統,其中該位元校驗指令係用以指示識別該第一位元的位元位置為複數個不同的位元位置中的任一者之值。
  24. 一種包含非暫態機器可讀取儲存媒體的製品,該非暫態機器可讀取儲存媒體儲存包含位元校驗指令的複數個指令,如果由機器執行所述位元校驗指令時,該位元校驗指令係用以使該機器執行包含以下的操作:存取將由該位元校驗指令指示的第一來源運算元,該第一來源運算元用以包含第一位元;存取將由該位元校驗指令指示之用於該第一位元的校 驗位元值,其中該校驗位元值為從包含由隱含由該位元校驗指令的欄位指定的該位元校驗指令及由該位元校驗指令的運算元指定的該位元校驗指令組成的群組中選出之一者,其中該第一來源運算元將成為記憶體位址運算元,其具有複數個用於確定記憶體位址的最低有效位元和複數個除了記憶體位址確定以外可用於一或多個其它目的的最高有效位元,以及其中該第一位元將成為該最高有效位元之一者;回應於該位元校驗指令,將該第一位元與該校驗位元值比較;回應於該位元校驗指令,更新條件碼位元以指示該第一位元是否等於或不等於該校驗位元值;以及基於該條件碼位元來控制無用數據收集中的例外處理,其中該第一位元係用於無用數據收集的標記位元。
TW106118137A 2016-07-01 2017-06-01 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令 TWI752034B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/201,303 US10761979B2 (en) 2016-07-01 2016-07-01 Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
US15/201,303 2016-07-01

Publications (2)

Publication Number Publication Date
TW201804319A TW201804319A (zh) 2018-02-01
TWI752034B true TWI752034B (zh) 2022-01-11

Family

ID=60786526

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106118137A TWI752034B (zh) 2016-07-01 2017-06-01 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令

Country Status (5)

Country Link
US (1) US10761979B2 (zh)
CN (1) CN109313607A (zh)
DE (1) DE112017003345T5 (zh)
TW (1) TWI752034B (zh)
WO (1) WO2018004969A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761979B2 (en) 2016-07-01 2020-09-01 Intel Corporation Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
US10802965B2 (en) * 2019-02-05 2020-10-13 Microsoft Technology Licensing, Llc Reducing synchronization reliance in garbage collection marking
US11392427B2 (en) 2020-01-06 2022-07-19 Microsoft Technology Licensing, Llc Lock-free reading of unitary value sets
CN113467702A (zh) * 2020-03-31 2021-10-01 上海商汤智能科技有限公司 数据处理装置、集成电路和ai加速器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647489B1 (en) * 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US20110314263A1 (en) * 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US20130097408A1 (en) * 2010-05-11 2013-04-18 Arm Limited Conditional compare instruction
TW201409353A (zh) * 2012-08-31 2014-03-01 Via Tech Inc 一種微處理器及其操作方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387273B1 (en) 2002-07-31 2010-07-21 Texas Instruments Incorporated Conditional garbage collection based on monitoring to improve real time performance
US20040064684A1 (en) * 2002-09-30 2004-04-01 Kalluri Seshagiri P. System and method for selectively updating pointers used in conditionally executed load/store with update instructions
TWI224257B (en) * 2003-08-28 2004-11-21 Sunplus Technology Co Ltd Apparatus and method of using checking bits to conduct encrypting protection
EP1785873A1 (en) 2005-11-09 2007-05-16 Research In Motion Limited Methods and apparatus for use in controlling garbage collection processes in a mobile communication device
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8375373B2 (en) * 2010-04-19 2013-02-12 Microsoft Corporation Intermediate language support for change resilience
US8566368B2 (en) 2010-09-29 2013-10-22 Microsoft Corporation Garbage collection extensibility via managed code
US8732430B2 (en) * 2011-03-22 2014-05-20 Oracle International Corporation Method and apparatus for using unused bits in a memory pointer
US8516019B2 (en) 2011-10-03 2013-08-20 Oracle America, Inc. Time-based object aging for generational garbage collectors
JP6044181B2 (ja) 2012-08-24 2016-12-14 富士通株式会社 ガーベジコレクションのための情報処理方法、プログラム及び装置
US9626184B2 (en) * 2013-06-28 2017-04-18 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters
US9396056B2 (en) * 2014-03-15 2016-07-19 Intel Corporation Conditional memory fault assist suppression
US9513913B2 (en) * 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9430153B2 (en) 2014-10-22 2016-08-30 International Business Machines Corporation Garbage collection and other management of memory heaps
US9971632B2 (en) 2014-11-13 2018-05-15 Soundspectrum, Inc. Synchronization and barrier free concurrent garbage collection system
US10761979B2 (en) 2016-07-01 2020-09-01 Intel Corporation Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647489B1 (en) * 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US20130097408A1 (en) * 2010-05-11 2013-04-18 Arm Limited Conditional compare instruction
US20110314263A1 (en) * 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
TW201409353A (zh) * 2012-08-31 2014-03-01 Via Tech Inc 一種微處理器及其操作方法

Also Published As

Publication number Publication date
DE112017003345T5 (de) 2019-03-14
US10761979B2 (en) 2020-09-01
WO2018004969A1 (en) 2018-01-04
US20180004655A1 (en) 2018-01-04
TW201804319A (zh) 2018-02-01
CN109313607A (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
TWI770009B (zh) 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令
CN108351830B (zh) 用于存储器损坏检测的硬件装置和方法
CN107209723B (zh) 用于虚拟化的细粒度地址重新映射
US10255126B2 (en) Aggregated page fault signaling and handling
US20180095892A1 (en) Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
CN109508206B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
JP2017107579A (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
JP5985526B2 (ja) システムコールのためのロバスト且つ高性能な命令
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
TW201800948A (zh) 提取資料至具保證完成指示快取階之處理器、方法、系統及指令
TW201732544A (zh) 聚合分散指令
TWI722009B (zh) 用於在遠端處理器上進行基元動作之硬體機制
US9886318B2 (en) Apparatuses and methods to translate a logical thread identification to a physical thread identification
EP3109754A1 (en) Systems, methods, and apparatuses for improving performance of status dependent computations
TW201734766A (zh) 使用處理器指令前綴的二進制轉譯支援
TWI751990B (zh) 衝突罩生成
GB2514885A (en) Systems, apparatuses, and methods for zeroing of bits in a data element
CN112579160A (zh) 用于具有减少的硬件要求的存储配对的装置和方法
US20160378497A1 (en) Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding