專利名稱:可編程循環(huán)冗余校驗(crc)計算的指令集架構(gòu)的制作方法
技術(shù)領(lǐng)域:
本公開涉及錯誤檢查,并且更具體地涉及針對錯誤檢查使用循環(huán)冗余校驗(CRC)。
背景技術(shù):
多項式是具有一個或多個代數(shù)項的數(shù)學(xué)表達式,例如,“a+bx+cx2”,其中的每項都 包含常數(shù)(a,b或c),所述常數(shù)乘以一個或多個變量(χ)的非負整數(shù)次方。當(dāng)將數(shù)據(jù)塊從 源端向目的端傳輸時,用η位多項式除數(shù)據(jù)塊的二進制除法運算的固定大小的余數(shù)可以被 用來驗證沒有發(fā)生傳輸錯誤。應(yīng)用于任意長度的數(shù)據(jù)塊的η位多項式檢測小于或等于η位 的任何單個錯誤突發(fā)。在源端針對數(shù)據(jù)塊計算出固定大小的余數(shù)并將所述余數(shù)與數(shù)據(jù)塊一起傳輸。將η 位多項式應(yīng)用于在目的端處接收的數(shù)據(jù)塊,以重新計算固定大小的余數(shù)。將重新計算出的 固定大小的余數(shù)和與數(shù)據(jù)塊一起被傳輸?shù)墓潭ù笮〉挠鄶?shù)進行比較以驗證沒有發(fā)生傳輸錯誤。循環(huán)冗余校驗(CRC)是既指固定大小的余數(shù)(將任意長的數(shù)據(jù)塊二進制除以固定 大小的多項式而得到的余數(shù))又指用來產(chǎn)生所述固定大小的余數(shù)的功能的術(shù)語。
通過以下參照附圖進行的具體描述,要求保護的主題的實施例的特征將變得顯而 易見,在附圖中,相同的數(shù)字描述了相似的部分,并且在附圖中圖1為根據(jù)本發(fā)明原理的、包括在通用處理器中執(zhí)行循環(huán)冗余校驗(CRC)的指令 的實施例的系統(tǒng)框圖;圖2為圖1所示處理器的實施例的框圖;圖3為示出了根據(jù)本發(fā)明原理的、圖2所示的執(zhí)行靈活CRC的執(zhí)行單元的實施例 的框圖;圖4示出了圖3所示的擴展多項式微操作的實施例;圖5示出了圖3所示的混洗字微操作的實施例;圖6示出了圖3所示的CRC約減微操作的實施例;圖7為示出了圖6所示的計算CRC功能的實施例的框圖;圖8為示出了圖7所示的4位約減階段的框圖;以及圖9為示出了根據(jù)本發(fā)明原理的、執(zhí)行CRC的方法的實施例的流程圖。盡管以下具體描述將參照所要求保護的主題的說明性實施例而進行,但對于本領(lǐng) 域技術(shù)人員來說,許多替代物、修改和其變型是顯而易見的。因此,應(yīng)當(dāng)寬泛地看待所要求 保護的主題,并僅以所附權(quán)利要求中闡述的保護范圍來進行限定。
具體實施例方式存在許多已知的用于執(zhí)行循環(huán)冗余校驗(CRC)計算的方法。一種方法是使用專用的CRC電路來實現(xiàn)特定的η位多項式。另一種方法是使用CRC查找表來存儲針對給定的η 位多項式以及一組數(shù)據(jù)輸入和余數(shù)的所有可能的CRC結(jié)果。對于這種方法,在CRC查找表 中執(zhí)行一次查表操作以確定CRC結(jié)果。然而,存在許多不同的用于計算CRC的η位多項式。例如,使用不同的η位多項式 來針對存儲協(xié)議(例如,因特網(wǎng)小型計算機系統(tǒng)接口(iSCSI))、壓縮與解壓縮與圖形操作 (例如,移動圖像專家小組(MPEG)與聯(lián)合圖像專家小組(JPEG))計算CRC。因此,需要專用 的CRC電路或獨立的查找表來計算針對每個不同的η位多項式的CRC。也可以通過使用專用的CPU指令在硬件中執(zhí)行CRC計算。然而,由于CRC指令受 到操作數(shù)的數(shù)量與大小的限制。CRC指令專用于計算一個特定的固定η位多項式的CRC。在本發(fā)明的實施例中,提供了指令集架構(gòu)以通過使用多個不同的η位多項式來執(zhí) 行CRC操作。在實施例中,靈活CRC指令支持最大達到32次的η位多項式(S卩,支持位Xn (第 η+1位)被設(shè)置為邏輯‘1’的η位多項式)。靈活CRC指令也支持數(shù)據(jù)/余數(shù)上的位/字 節(jié)反射。圖1為根據(jù)本發(fā)明原理的包括指令的實施例的系統(tǒng)100的框圖,所述指令用于在 通用處理器中執(zhí)行CRC操作。系統(tǒng)100包括處理器101、存儲器控制器中心(MCH) 102以及 輸入/輸出(I/O)控制器中心(ICH) 104。MCH 102包括對處理器101與存儲器108之間的 通信進行控制的存儲器控制器106。處理器101與MCH 102通過系統(tǒng)總線116來進行通信。處理器ιο 可以是多個處理器中的任意一種,這些處理器例如是單核心Intel Pentium IV 處理器、單核心htel Celeron處理器、Intel XScale處理器或多核心處 理器例如Intel I^entium D、Intel Xeon 處理器,或Intel Core Duo處理器或任何其 它類型的處理器。存儲器108可以是動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同 步動態(tài)隨機存取存儲器(SDRAM)、第二代雙倍數(shù)據(jù)速率(DDR2)RAM或Rambus動態(tài)隨機存取 存儲器(RDRAM)或任何其它類型的存儲器。ICH 104可以通過使用高速芯片到芯片互連114(例如直接媒體接口(DMI))而與 MCH 102相耦合。DMI支持經(jīng)由兩個單向通道的2千兆位/秒的并發(fā)傳輸速率。ICH 104可以包括用來控制與耦合到ICH 104的至少一個存儲設(shè)備112進行的通 信的存儲I/O控制器110。存儲設(shè)備可以是例如磁盤驅(qū)動器、數(shù)字視頻盤(DVD)驅(qū)動器、壓 縮盤(⑶)驅(qū)動器、獨立磁盤冗余陣列(RAID)、磁帶驅(qū)動器或其它存儲設(shè)備。ICH 104可以通 過使用串行存儲協(xié)議(例如串行連接小型計算機接口(SAQ或串行高級技術(shù)附件(SATA)) 通過存儲協(xié)議互連118來與存儲設(shè)備112進行通信。處理器101包括執(zhí)行CRC操作的CRC單元103。CRC單元103可以用于通過使用 多個不同的η位多項式、來針對存儲在存儲器108和/或存儲在存儲設(shè)備112中的數(shù)據(jù)計 算 CRC。通過使用多個不同的η位多項式中的一個來在數(shù)據(jù)塊上執(zhí)行循環(huán)冗余校驗(CRC) 操作。靈活CRC指令通過使用可編程η位多項式來執(zhí)行CRC操作。與執(zhí)行針對存儲在CRC 單元103中的固定(靜態(tài))多項式的CRC操作相反,通過將η位多項式存儲在兩個操作數(shù) 中的一個中,將η位多項式經(jīng)由CRC指令提供給CRC單元103,以提供靈活的CRC指令。圖2為圖1所示的處理器101的實施例的框圖。處理器101包括取出與解碼單
5元202,取出與解碼單元202用于對從1級(Li)指令高速緩存202中接收的處理器指令 進行解碼。用于執(zhí)行指令的數(shù)據(jù)(例如,指令所使用的輸入操作數(shù))可以存儲在寄存器堆 (register file) 208中。在一個實施例中,寄存器堆208包括多個寄存器,靈活CRC指令使 用這些寄存器來存儲靈活CRC指令所使用的數(shù)據(jù)(操作數(shù))。在一個實施例中,對于支持最大次數(shù)達到32次的η位多項式的指令集,寄存器堆 具有多個64位寄存器。在其它實施例中,寄存器可以多于64位。例如,對于可以支持最大 次數(shù)達到m次的m位多項式的靈活CRC指令集,寄存器堆可以包括多個^ii位的寄存器。取出與解碼單元202從Ll指令高速緩存202中取出宏指令,對宏指令進行解碼并 將它們拆分為被稱為微操作(μ ops)的簡單操作。執(zhí)行單元210調(diào)度并執(zhí)行微操作。在所 示的實施例中,執(zhí)行單元210中的CRC單元103包括靈活CRC指令的微操作。撤出單元212 將所執(zhí)行的宏指令的結(jié)果寫入寄存器或存儲器108(圖1)。圖3為示出了根據(jù)本發(fā)明原理的、圖2所示的執(zhí)行靈活CRC指令的執(zhí)行單元210 的實施例的框圖。當(dāng)靈活CRC指令由取出與解碼單元206解碼后,由執(zhí)行單元210執(zhí)行靈活CRC指 令包括在CRC單元103中執(zhí)行與靈活CRC指令相關(guān)聯(lián)的微操作??梢詫⑼ㄟ^使用在源(“輸入”)操作數(shù)中提供的可編程η位多項式,在CRC單元 103中執(zhí)行CRC操作的靈活CRC指令(宏指令)用符號表示為Flex_CRC32 r64, r/m64靈活CRC指令具有兩個源操作數(shù)。第一操作數(shù)(“opl”)被存儲在寄存器堆304 的第一 64位寄存器(r64)中并被用來存儲CRC操作的32位多項式和初始32位CRC余數(shù) (“初始CRC”)兩者。同樣被存儲在寄存器堆304中的第二操作數(shù)(“叩2”)能夠存儲64 位數(shù)據(jù)(要被約減的數(shù)據(jù)塊)或存儲64位指針,所述64位指針指向存儲了 64位數(shù)據(jù)(要 被約減的數(shù)據(jù)塊)的存儲器108(圖1)中的存儲器位置。通過使用第一源操作數(shù)中提供的初始CRC余數(shù)以及第一源操作數(shù)中提供的多項 式,靈活CRC指令在64位數(shù)據(jù)塊上執(zhí)行CRC操作。通過允許在源操作數(shù)中的一個中提供多 項式,該CRC指令與使用存儲在CRC單元103中的固定多項式的CRC指令相比是靈活的。 在第一操作數(shù)中所識別的64位寄存器也用作目的操作數(shù)以存儲CRC操作的結(jié)果??梢詫?CRC操作的結(jié)果稱為“新余數(shù)”。32位“新余數(shù)”以及32位可編程多項式均被存儲在第一操 作數(shù)所識別的64位寄存器中?!俺跏加鄶?shù)”與可編程多項式在發(fā)出靈活CRC指令前被存儲在第一操作數(shù)所識別的 64位寄存器中。在實施例中,多項式的最大次數(shù)為32,S卩,項χ32 (33位多項式的位33)被設(shè) 置為邏輯‘1’。在實施例中,操作數(shù)1的最低32位(即位[31:0])存儲初始余數(shù),而操作數(shù) 1的最高32位(即位63:3 存儲33位可編程多項式的最低32位。在向第一操作數(shù)的最 高32位存儲之前,通過“隱含的”打頭的‘1’(即,由于多項式的最大次數(shù)為32,這意味著 將位33設(shè)置為邏輯‘1’ )對33位可編程多項式進行左對齊并丟棄第33位。在具有大于 64位寄存器304(例如,在寄存器堆中)的實施例中,靈活CRC指令能夠支持最大次數(shù)大于 32的多項式。CRC操作是一種用于產(chǎn)生大數(shù)據(jù)塊(例如文件(在存儲器中)或網(wǎng)絡(luò)分組(在網(wǎng) 絡(luò)中))的摘要(通常為32位)的特殊類型的哈希函數(shù)。在進行存儲或傳輸之前計算出摘
6要并將其附加到數(shù)據(jù)塊上,然后從數(shù)據(jù)塊中重新計算摘要并將其與原始摘要相比較,以驗 證數(shù)據(jù)塊當(dāng)存儲在存儲器或存儲介質(zhì)中時或在網(wǎng)絡(luò)上傳輸時沒有被改變。CRC是一個二進制多項式對另一個二進制多項式求模的余數(shù)??梢詫⑽涣?數(shù) 據(jù)塊/消息)看作是帶有二進制系數(shù)的多項式,其中,在流中被設(shè)置為邏輯‘1’的位 對應(yīng)于多項式的系數(shù)‘1’,并且其中,所述流的最低位對應(yīng)于多項式的自由系數(shù)(free coefficient)。操作被定義在這些多項式/位串上。例如,因特網(wǎng)SCSI (iSCSI)(在請求評議(RFC) 3385中所定義)將CRC(循環(huán)冗余 校驗)用于端到端的數(shù)據(jù)保護。iSCSI CRC使用33位多項式11EDC6F41(以十六進制的格 式)。33位因特網(wǎng)小型計算機系統(tǒng)接口(iSCSI)多項式11EDC6F41H當(dāng)被寫成33位二進制 數(shù)時是100011110110111000110111101000001。這個33位二進制數(shù)對應(yīng)于下面的多項式χ32+χ28+χ27+χ26+χ25+χ23+χ22+χ20+χ19+χ18+χ14+χ13+χ11+χ10+χ9+χ8+χ6+1多項式加法對應(yīng)于按位異或O(OR)操作。XOR是在兩個操作數(shù)上進行的邏輯操作, 如果操作數(shù)中只有一個具有邏輯值‘1’則操作結(jié)果是邏輯值‘1’。如果兩個邏輯值都相同 (都是‘0’或都是‘1’ )則操作結(jié)果是邏輯值‘0’。例如,值為‘11001010’的第一操作數(shù)與 值為‘10000011,的第二操作數(shù)的異或產(chǎn)生值為‘01001001,的結(jié)果。多項式乘法對應(yīng)于位串的無進位乘法。例如,將二進制串左移t個位置對應(yīng)于在 多項式乘法中乘以 P。如果 P(x)、Q(χ)、R(χ)、W(χ)滿足P(χ) = W(χ)*Q(χ)+R(χ)并且 R(x) 的次數(shù)少于Ρ(χ)的次數(shù),則R(x)是P(X)對W(x)求模的余數(shù)。使用這些術(shù)語,可以將任意位長的消息M(與二進制多項式M(X)相對應(yīng))的CRC值 定義為CRC M(X) =X32iiM(X)mod P (χ),其中,多項式P (χ)定義了 CRC算法。對于32位CRC 算法,P(X)是一些32次多項式。在實施例中,通過使用三個不同微操作的組合在執(zhí)行單元210中的CRC單元103 中實現(xiàn)了靈活CRC指令。圖3所示的三個微操作為(1)擴展多項式314、(2)混洗字316以 及(3) CRC 約減 318。擴展多項式微操作314接收存儲在第一操作數(shù)(“opl”)的最高位(MSB)中的多 項式,在圖3所示的實施例中,所述第一操作數(shù)被存儲在寄存器堆304的寄存器306中。擴 展多項式微操作314從opl中所提供的η位可編程多項式中導(dǎo)出預(yù)計算多項式K。預(yù)計算 多項式K的最低32位被CRC單元103存儲,以便稍后由CRC約減微操作318來使用。預(yù)計 算多項式K通過允許并行地執(zhí)行計算,減少了確定CRC余數(shù)所需的門延時的數(shù)量??梢詫U展多項式微操作314用符號定義為dest = crc_expand—poly(-,sourcel),select—modifier擴展多項式微操作314計算出32位預(yù)計算多項式K = X36MOD POLY并存儲K的最 低32位。模約減(modulo reduction)被定義為在feilois域(GF(2))上的多項式除法。預(yù)計算多項式K是32位CRC多項式在(ialois域(GFQ))上的倍數(shù)。通過并行地 處理要被約減的數(shù)據(jù)塊的互斥區(qū)域(mutually exclusiveregion),預(yù)計算多項式K的形式 允許并行地執(zhí)行許多計算。并行地執(zhí)行計算減少了用于計算CRC余數(shù)的時間。例如,CRC 約減微操作318所使用的預(yù)計算多項式K允許并行地減少最高4位(40位輸入數(shù)據(jù)中的位 39-36)。例如,對于最大次數(shù)為32的多項式,在k具有32位的情況下,將K的最低32位應(yīng) 用于40位輸入數(shù)據(jù)(32位多項式加上8位數(shù)據(jù)),這將40位輸入數(shù)據(jù)約減到36位余數(shù)。
在實施例中,混洗字微操作316從寄存器306接收源操作數(shù)1( “opl”)并從寄存 器堆304中的寄存器312(或者從由存儲在寄存器312中的存儲器指針?biāo)R別的存儲器位 置)中接收源操作數(shù)2( “op2”),并取決于存儲在立即數(shù)字節(jié)(immediate byte)中的修飾 符(modifier),在每個操作數(shù)中的64位中選擇一個32位部分。可以將這個微操作用符號 定義為dest = shuffle_word(source2, sourcel), imm8混洗字(shuffle word)微操作316在64位數(shù)據(jù)通路的兩個半部分之間執(zhí)行字級 (word-level)數(shù)據(jù)(32位)的混洗。這個微操作從各個的64位操作數(shù)的每一個中選擇最 高32位(上半部分)或最低32位(下半部分)。也可以對所選擇的半部分內(nèi)的位進行混 洗。對每個操作數(shù)內(nèi)的位的混洗取決于存儲在立即數(shù)(imm8)中的4位混洗選擇修飾符。混 洗的結(jié)果存儲在目的寄存器(“dest”)中。如果這是第一次調(diào)用靈活CRC指令的混洗字微操作316,那么立即數(shù)(imm8)指示 將要從由靈活CRC宏指令所接收的64位第二操作數(shù)(“op2”)中選擇最高32位。對于由混洗字微操作316所提供的32位數(shù)據(jù)中的四個字節(jié)中的每一個執(zhí)行CRC 約減微操作318。CRC約減微操作318也使用從混洗字微操作316接收的32位初始余數(shù)、 可編程多項式以及由擴展多項式微操作計算的預(yù)計算多項式K來計算余數(shù)(RES)。當(dāng)完成對靈活CRC指令的執(zhí)行后,所積累的余數(shù)與多項式被存儲在操作數(shù)1 (既是 宏指令的目的寄存器又是源寄存器)中,在圖3所示的實施例中,所述操作數(shù)1可以被存儲 在寄存器堆304的寄存器306中。圖4示出了圖3所示的擴展多項式微操作314的實施例。在CRC多項式是形式為 X32 = P31. x31+p30. X30+... p°的32位多項式(POLY)的實施例中,由[p31... ρ°]表示的32位多 項式被存儲在源寄存器400的最高32位(上半部)中。與χ32相對應(yīng)的隱含的打頭的“一” 被省略。模操作(MOD)計算χ36除以POLY得出的余數(shù)。例如,余數(shù)r = a modn,是當(dāng)a除 以η時得出的余數(shù)。在a是10并且η是3的情況下,r是1。擴展多項式微操作314計算K = X36MOD POLY的余數(shù)并將其作為預(yù)計算多項式常 數(shù)K而存儲在目的寄存器406中。模約減被定義為在felois域(GFO))上的多項式除法。原始的32位多項式也被存儲在目的寄存器406中。在隨后的CRC約減(減少) 操作期間,使用預(yù)計算多項式常數(shù)(余數(shù))K以及原始的32位多項式(多項式),以約減為 計算余數(shù)所執(zhí)行的異或O(OR)操作的數(shù)量。為了將提供給靈活CRC宏指令的64位數(shù)據(jù)塊 約減到32位余數(shù),通過使用32位多項式來執(zhí)行XOR操作。圖5示出了圖3所示的混洗字微操作316的實施例。在圖5所示的實施例中,可以依據(jù)混洗字微操作316中提供的立即字節(jié)510中的 狀態(tài)修飾符的狀態(tài)和交換位,來對控制邏輯504編程??刂七壿?04使用立即字節(jié)510以 執(zhí)行數(shù)據(jù)/余數(shù)上的位/字節(jié)反射,也即,將源1500以及源2502兩者中的字節(jié)/位映射到 目的506中的字節(jié)/位。在所示的實施例中,源1500、源2502以及目的506都是64位。在 其它實施例中,源1500、源2502以及目的506可以多于64位。在一個實施例中,立即字節(jié)510的最低四位,也即混洗選擇修飾符[3:0]被控制邏 輯504用來選擇將64位源1500以及64位源2502的哪個32位部分轉(zhuǎn)發(fā)給64位目的506的哪個32位部分。最低2位,也即混洗選擇修飾符[1:0]選擇將四個32位部分中的哪個 部分轉(zhuǎn)發(fā)到目的的低32位,而最高兩位,也即混洗選擇修飾符[2:3]選擇將四個32位部分 中的哪個部分轉(zhuǎn)發(fā)到目的的高32位。以下的表1與表2說明了如何根據(jù)混洗選擇修飾符[3:0]的狀態(tài)將源操作數(shù)中的 32位字映射到目的中的32位字。混洗選擇修飾符[1:0]交換操作00 sourcel[31:0]- > dest[31:0] 01sourcel[63:32]- > dest[31:0]10 source2[31:0]- > dest[31:0]11 source2[63:32]- > dest[31:0]
表 1混洗選擇修飾符[3:2]交換操作00sourcel[31:0]- > dest[6332]01sourcel[63:32]- > dest[6332]10 source2[31:0]- > dest[63:32]11 source2[63:32]- > dest[63:32]表 2如果啟用了立即字節(jié)510中的位交換位(例如,被設(shè)置為邏輯‘1’),那么32位 的順序被交換,例如,多個源中的一個源的位[31:0]在目的中被存儲為位W:31],以使得 最高的第31位被存儲在目的的最高位的位置中。高交換/低交換位的狀態(tài)指示是在目的 506的最低32位還是在目的506的最高32位上執(zhí)行位交換。字節(jié)交換位的狀態(tài)(‘1’或 ‘0’ )指示當(dāng)移動數(shù)據(jù)到目的506時,是否對源500、502的32位半部分中的四個字節(jié)進行 交換。例如,對源502中最低32位的字節(jié)交換將源502的最高字節(jié)(位31:24)存儲在了 目的506的最低位(位7:0)中。以下的表3和表4總結(jié)了根據(jù)立即字節(jié)的位7:5的狀態(tài),由混洗字微操作314所 執(zhí)行的數(shù)據(jù)/余數(shù)上的位/字節(jié)反射。在所示的實施例中,位7(交換(高))(交換(低)) 啟用/禁用在目的的高半部分上進行的交換;位6啟用/禁用在目的的低半部分上進行的 交換;位5 (字節(jié)交換)啟用/禁用字節(jié)交換使能,而位4 (位交換)啟用/禁用位交換使 能。
權(quán)利要求
1.一種裝置,包括執(zhí)行單元,其用于執(zhí)行循環(huán)冗余校驗(CRC)指令的操作序列,所述CRC指令具有第一 操作數(shù)和第二操作數(shù),所述操作序列通過使用存儲在所述第一操作數(shù)中的多個不同的η位 多項式中的一個,在存儲在所述第二操作數(shù)中的2η位數(shù)據(jù)塊上執(zhí)行循環(huán)冗余校驗(CRC)操 作,以使所述執(zhí)行單元執(zhí)行以下操作對η位多項式進行擴展以提供預(yù)計算多項式K ;以及通過使用存儲在所述第一操作數(shù)中的所述η位多項式與當(dāng)前的η位余數(shù)以及所述預(yù)計 算多項式K,在所述2η位數(shù)據(jù)塊上執(zhí)行微操作序列,以提供所述2η位數(shù)據(jù)塊的η位余數(shù)。
2.根據(jù)權(quán)利要求1所述的裝置,其中,所述η位多項式的最大次數(shù)為η+1。
3.根據(jù)權(quán)利要求1所述的裝置,其中,所述第一操作數(shù)具有2η位并且所述第二操作數(shù) 具有2η位。
4.根據(jù)權(quán)利要求3所述的裝置,其中,η為32。
5.根據(jù)權(quán)利要求1所述的裝置,其中,所述第一操作數(shù)既是源操作數(shù)又是目的操作數(shù), 并且所述η位余數(shù)存儲在所述第一操作數(shù)中。
6.根據(jù)權(quán)利要求1所述的裝置,其中,所述微操作序列包括混洗字微指令,其用于通過從所述2η位的第一操作數(shù)中選擇一 η位部分以及從所述2η 位的第二操作數(shù)中選擇一 η位部分以存儲在一 2η位目的操作數(shù)中,來執(zhí)行混洗操作。
7.根據(jù)權(quán)利要求6所述的裝置,其中,所述混洗字微指令對各個η位部分內(nèi)的位進行混 洗操作。
8.根據(jù)權(quán)利要求1所述的裝置,其中,所述微操作序列包括CRC約減微指令,其用于通過使用所述預(yù)計算多項式K來約減η+8位數(shù)據(jù)以提供η+4位 中間余數(shù),并通過使用所述η位多項式將所述η+4位中間余數(shù)約減為η位余數(shù)。
9.一種方法,包括執(zhí)行循環(huán)冗余校驗(CRC)指令的操作序列,所述CRC指令具有第一操作數(shù)和第二操作 數(shù),所述操作序列通過使用存儲在所述第一操作數(shù)中的多個不同的η位多項式中的一個, 在存儲在所述第二操作數(shù)中的2η位數(shù)據(jù)塊上執(zhí)行循環(huán)冗余校驗(CRC)操作,包括對η位多項式進行擴展以提供預(yù)計算多項式K ;以及通過使用存儲在所述第一操作數(shù)中的所述η位多項式和當(dāng)前η位余數(shù)以及所述預(yù)計算 多項式K,在所述2η位數(shù)據(jù)塊上執(zhí)行微操作序列,以提供所述2η位數(shù)據(jù)塊的η位余數(shù)。
10.根據(jù)權(quán)利要求9所述的方法,其中,所述η位多項式的最大次數(shù)為η+1。
11.根據(jù)權(quán)利要求9所述的方法,其中,所述第一操作數(shù)具有2η位并且所述第二操作數(shù) 具有2η位。
12.根據(jù)權(quán)利要求11所述的方法,其中,η為32。
13.根據(jù)權(quán)利要求9所述的方法,其中,所述第一操作數(shù)既是源操作數(shù)又是目的操作 數(shù),并且所述η位余數(shù)存儲在所述第一操作數(shù)中。
14.根據(jù)權(quán)利要求9所述的方法,其中,執(zhí)行所述微操作序列包括通過從所述2η位的第一操作數(shù)中選擇一 η位部分并從所述2η位的第二操作數(shù)中選擇 一 η位部分以存儲在一 2η位目的操作數(shù)中,來執(zhí)行混洗操作。
15.根據(jù)權(quán)利要求14所述的方法,其中,執(zhí)行所述混洗操作以對所述各個η位部分內(nèi)的位進行混洗。
16.根據(jù)權(quán)利要求9所述的方法,其中,執(zhí)行所述微操作序列包括通過使用所述預(yù)計算多項式K來約減n+8位數(shù)據(jù)以提供n+4位中間余數(shù),并通過使用 所述η位多項式將所述n+4位中間余數(shù)約減為η位余數(shù)。
17.一種制品,其包括具有相關(guān)聯(lián)的信息的機器可訪問介質(zhì),其中,當(dāng)所述信息被訪問 時導(dǎo)致機器執(zhí)行以下操作執(zhí)行循環(huán)冗余校驗(CRC)指令的操作序列,所述CRC指令具有第一操作數(shù)和第二操作 數(shù),所述操作序列通過使用存儲在所述第一操作數(shù)中的多個不同的η位多項式中的一個, 在存儲在所述第二操作數(shù)中的2η位數(shù)據(jù)塊上執(zhí)行循環(huán)冗余校驗(CRC)操作,包括 對η位多項式進行擴展以提供預(yù)計算多項式K ;以及通過使用存儲在所述第一操作數(shù)中的所述η位多項式與當(dāng)前η位余數(shù)以及所述預(yù)計算 多項式K,在所述2η位數(shù)據(jù)塊上執(zhí)行微操作序列,以提供所述2η位數(shù)據(jù)塊的η位余數(shù)。
18.根據(jù)權(quán)利要求17所述的制品,其中,執(zhí)行所述操作序列包括通過使用所述預(yù)計算多項式K來約減n+8位數(shù)據(jù)以提供n+4位中間余數(shù),并通過使用 所述η位多項式將所述n+4位中間余數(shù)約減為η位余數(shù)。CRC約減微指令,其通過使用所述預(yù)計算多項式K來約減n+8位數(shù)據(jù)以提供n+4位中間 余數(shù),并通過使用所述η位多項式將所述n+4位中間余數(shù)約減為η位余數(shù)。
19.一種系統(tǒng),包括動態(tài)隨機存取存儲器,其存儲數(shù)據(jù)和指令;以及 處理器,其與所述存儲器相耦合以執(zhí)行所述指令,所述處理器包括 執(zhí)行單元,其用于執(zhí)行循環(huán)冗余校驗(CRC)指令的操作序列,所述CRC指令具有第一 操作數(shù)和第二操作數(shù),所述操作序列通過使用存儲在所述第一操作數(shù)中的多個不同的η位 多項式中的一個,在存儲在所述第二操作數(shù)中的2η位數(shù)據(jù)塊上執(zhí)行循環(huán)冗余校驗(CRC)操 作,以使所述執(zhí)行單元執(zhí)行以下操作對η位多項式進行擴展以提供預(yù)計算多項式K ;以及通過使用存儲在所述第一操作數(shù)中的所述η位多項式和當(dāng)前η位余數(shù)以及所述預(yù)計算 多項式K,在所述2η位數(shù)據(jù)塊上執(zhí)行微操作序列,以提供所述2η位數(shù)據(jù)塊的η位余數(shù)。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中,執(zhí)行所述微操作序列包括通過使用所述預(yù)計算多項式K來約減n+8位數(shù)據(jù)以提供n+4位中間余數(shù),并通過使用 所述η位多項式將所述n+4位中間余數(shù)約減為η位余數(shù)。
全文摘要
提供了通過使用多個不同的n位多項式來在數(shù)據(jù)塊上執(zhí)行循環(huán)冗余校驗(CRC)操作的方法和裝置。靈活CRC指令通過使用可編程n位多項式來執(zhí)行CRC操作。通過將n位多項式存儲在兩個操作數(shù)中的一個,將n位多項式提供給CRC指令。
文檔編號G06F11/10GK102096609SQ20101058150
公開日2011年6月15日 申請日期2010年12月6日 優(yōu)先權(quán)日2009年12月10日
發(fā)明者B·A·布里斯, G·M·沃爾里克, K·S·葉, S·格倫, V·戈帕爾, W·K·費加利 申請人:英特爾公司