TWI305882B - A method, apparatus, system,storage medium and means for performing a sign operation that multiplies - Google Patents

A method, apparatus, system,storage medium and means for performing a sign operation that multiplies Download PDF

Info

Publication number
TWI305882B
TWI305882B TW092128278A TW92128278A TWI305882B TW I305882 B TWI305882 B TW I305882B TW 092128278 A TW092128278 A TW 092128278A TW 92128278 A TW92128278 A TW 92128278A TW I305882 B TWI305882 B TW I305882B
Authority
TW
Taiwan
Prior art keywords
operand
data
value
symbol
packet
Prior art date
Application number
TW092128278A
Other languages
English (en)
Other versions
TW200500878A (en
Inventor
W Macy William Jr
V Nguyen Huy
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW200500878A publication Critical patent/TW200500878A/zh
Application granted granted Critical
Publication of TWI305882B publication Critical patent/TWI305882B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

1305882 玖、發明說明: 【發明所屬之技術領域】 本專利申請案係關於以下專利申請案:2〇〇3年6月 30曰申請之共同待審批美國專利申請案―」___,___號,標題 為「利用SIMD符號與絕對值操作的非線性過濾及解塊應 用」。 本文係關於執行數學操作之處理裝置與關聯之軟體及軟 體序列的領域。 【先前技術】 電腦系統在當今社會日益普及。電腦之處理能力提高了 各行業的工作效率及生產率。隨著電腦之購置及擁有成本 持續下降,越來越多的消費者能夠利用更新及更快電腦帶 來之優越性。而且,許多人還享受著筆記本電腦帶來的自 由。行動電腦使使用者能夠方便地傳輸其資料,並能夠在 辦公室以外或旅行中使用。這是銷售人員、公司管理人員 甚至學生中相當常見之情景。 隨著處理器技術的進步,也在不斷產生更新的軟體代碼 於使用這些處理器的機器上運行。不論使用何種類型的軟 體’使用者一般預期並要求其電腦能提供更高之性能。在 處理器上實際執行之指令與操作即可產生一該種問題。根 據操作之複雜性及/或所需電路之類型,完成某些類型之操 作需要更多時間。因而提供了最佳化處理器執行某些複雜 操作之方式的機會。 媒體應用在十多年内一直在推動微處理器之發展。事實 88646-960l09.doc 1305882 上,近年之大多數計算升級係由媒體應用推動。雖然為寓 教於樂及通信目的在企業領域也有重大的進步,但該等升 級仍主要發生於消費領域。不過,今後之媒體應用將需要 更高的計算要求。因此,在音頻視覺效果及更容易使用方 面,現今之個人計算經歷將更豐富,更重要的是,計算將 與通信融合。 因此,影像之顯示以及音頻與視訊資料之重播(統稱為内 容)已成為當今計算元件日益普遍之應用。過遽與捲積操作 係於内容資料如影像音頻及視訊資料上執行之某些最常見 的操作。該等操作計算密集,但提供高水準之資料平行性, 可透過使用各種資料儲存元件如單指令多資料(“叩^ mstruction multiple⑽;讀〇)暫存器的高效實施方式予 以利用。多種當前結構還要求並不必要之資料類型變換, 其使指令輪出量最小化,並大大增加了為算術操作排列資 料所需的時脈週期數。 、與各種先刖技術符號相關的指令’如正負號函數指令, 決定二進制數字石馬的符號。不過,該等先前技術正負號函 數私7力肊之有用性有限,尤其在需要進一步處理正負號 函數果的應用中’因為該等結果僅係更大演算法之中間 結果。要求附加如 町加扣令實現所需之結果,在處理資源及管線 槽上會產生附加成本。 【發明内容】 下敘述說明執行一符號及相乘操作之方法、裝置與指 令的具體實施例。少 在以下說明中,許多特定細節如處理器 88646-960109.doc 1305882 類型、微架構條件、事件、致動機制及同類事項之列舉係 為提供對本發明之更透徹理解。不過,熟習此項技術者應 清楚知道,在不運用這些特定細節的情況下仍然可實施本 發明。此外,未顯示某些廣為人知之結構、電路及同類事 項之細節,以避免不必要地增加本發明之理解難度。 雖然以下之具體實施例係參考處理器說明,但是,其他 具體實施例適用於其他類型之積體電路及邏輯元件。本發 明之相同技術及說明可方便地應用於其他類型之電路或半 導體元件,使其能夠得益於更高之管線輸出量及改進之性 能。本發明之說明適用於執行資料操作之任何處理器或機 器。不過,本發明不限於執行256位元、128位元、64位元、 32位元或16位元資料操作的處理器或機器,還可適用於需 要操作封包資料之任何處理器及機器。 基於解說的目的,在以下的說明中列出許多的特定細 節,以便充分瞭解本發明。但是,熟悉技術者應明白,實 施本發明無須該等特別細節。在其他範例中,為不使本發 明模糊難解,會以特別細節說明廣為人知的電結構及電 路。此外,以下的說明可提供範例,而所附圖式為了說明 的目的而顯示出不同的範例。但是,這些範例不應視為限 制的意義,因為其僅是要提供本發明的範例,而非提供本 發明之所有可能實施的完整表列。 雖然以下範例在執行單元及邏輯電路之f景下說明指令 之處理及分佈’但本發明之其他具體實施例可藉由軟體完 成。在-項具體實施例中’本發明之方法係實施在機器可 88646-960109.doc I3〇5882 ::的指令中。該等指令可用來使以該等指令程式化的通 ’特定用途處理n執行本發日月之步驟。本發明可提供做 為—電腦程式產品或軟體,一 ’、 J ^ 5 機态或電腦可讀取 、體,其上健存有指令,用於程式化—電腦(或其他電子元 來根據本發明執行—處理。或者,本發明之步驟可由包 含執行該等步驟之硬體邏輯之特定硬體組件來執行,或藉 由程式化的電腦組件及客戶硬體組件的任何組合執行。該 種軟體可神於系統之記憶心。㈣,代碼可藉由網: 或其他電腦可讀媒體分佈。 因此,機器可讀媒體可包括以機器(如電腦)可讀形式錯存_ 或傳輪資訊的任何機制,但不限於軟碟、光碟、光碟唯讀 圮憶體(Read-Only Memory ; CD_R0Ms)、磁光碟、唯讀記 憶體(Read-0nly Mem〇ry ;刪)、隨機存取記憶體⑽Μ⑽ Access Memory ; RAM)、可抹除可程式唯讀記憶體阳s献 Programmable Read-Only Mem〇ry,· EpR〇M)、電可抹除可 程式唯讀記憶體⑸ectricaUy Erasable progra^abk Read-0nly Memory ; EEpR〇M)、磁卡或光學卡、快閃纪憶 體、藉由網際網路的傳輸、電、光學、聲學或其他形二籲 傳播信號(如載波、紅外線信號、數位信號等)或同類者。因 此’電腦可讀媒體包括適合於以機器(如電腦)可讀形式儲存 或傳輸電子指+或資訊的任何類型的媒體/機器可讀媒 體。再者’本發明亦可下載為一電腦程式產品。同樣^,程 式可自一遠端電腦(如伺服器)傳輸至一需求電腦(如客 戶)。程式的傳輸可以體現於載波或其他傳播媒介之資料信 88646-960109.doc !3〇5882 號的電、鮮、聲學或其他形式透過通信鏈路(如數據機、 網路連接或同類裝置)進行。 叹汁可經歷各階段,從創意到模擬到製作。代表設計的 資料可代表各種方式之該設計。首先,應在模擬中有用, 可使用硬體說明語言或另一功能說明語言代表硬體。此 外具有邏輯及/或電晶體閘極之電路級模式可在設計程式 之某些階段生產。而且,在某些階段,大多數設計均達到 代表硬體模式中各種元件之實體放置的資料位準。在使用 傳統製作技術的情形下,對於用於生產積體電路的遮罩, 代表硬體模式的資料可為指定不同遮罩層上存在或不存在 各種特徵的資^在設計之㈣代表中,資料可以機器可 4媒體之任何形式儲存。調變或以其他方式產生以傳輸該 等資訊的光學波或電波、記憶體儲存或磁性儲存或光 存(如碟片)可為機器可讀媒體。任何該等媒體均可「载送 或「指示」設計或軟體資訊。當傳輸指示或載送代」 計的電載波時,在執行電信號 ^ ^ I眾緩衝或再傳輸的限 度内,將製成一新副本。因此, 艰知供商或網路提供肅 可複製體現本發明之技術的一物品(载波)。 ’、 在現代處理器中,徒用 Τ使用多個Μ的執行單元處 各種代碼及指令。並非所有指| 執仃 7 7均創建為同等的,有此6 成較快,而有些可能需要巨大的時脈週期數。指令的;; 量越快’處理器的整體性能越好。因此,使 = 令盡可能地越快執行將是有剎 b夕的指 、轨订將疋有利的。但是,某些 需要更多的執行時間及處理器資 ^乂複雜, 頁源例如,浮點指令、載 88646-960109.doc 13〇5882 入/儲存操作、資料移動等。 ' 因越來越多的電腦系統用於網際網路和多媒體應用,隨. 著時間的推移推出了附加處理器支援。例如,單指令、多 資料⑻MD)整數/浮點指令及流動simd擴Wming .. SIMD MW8 ;咖)係減少執行特定程式任務所需的指. 令總數的指令’其進而又可減少功率消耗。藉由在並行之 多個資料元件上運作,該等指令可加速軟體性能。因此, 可在各種應用中包括視訊、語音、影像/照片處理等領域實 現生月b增彡SIMD指令在微處理器及同類形式之邏輯電路 的實施通常涉及多個問題。而且,s細操作的複雜性通常_ 導致需要附加電路以便正確處理和操作資料。 現在尚無可相乘之8_符號指令。也沒有用於絕對值操 作之SIMD指令。沒有可相乘符號運算,即需要大量指令及 資料暫存器實現在諸如音頻/視訊壓縮、處理及操作應用巾 的同樣結果。因此’根據本發明之符號指令可減少代碼負 擔及資源要求。本發明之具體實施例提供將符號運算實施 為利用S細相關硬體之演算法的方法。某些具體實施例還 提供實施絕對值操作之方法。目前,在SIMD暫存器中操作泰 資料有點既困難又費時。某些演算法需要比執行該等操 的實際指令數目更多的指令以安排資料進行演算法操作。 藉由根據本發明實施相乘符號運算的具體實施例,可極大 地減少實現符號處理所需的指令數目。 本發明之具體實施例涉及實施正負號函數操作變異之指 令。正負號函數操作決定一特定數字是正、負還是零。在 88646-960109.doc •11- 1305882 正負號函數操作中,函數評估數字之方法為:若…,則 ⑴叫;若x = o,則 signumWHx<Q1 :帅卜卜但是,在多媒體應用中,在各種演算法中 通吊需要另-值的符號相乘資料值。相乘符號運算可避免 幻頁做的許多單獨操作。本符號運算之具體實施例較正負 號函數提供更多的功能,而且還包括相乘。 【實施方式】 根據本發日m號指令計算操作:咖卜就上X =gnUM(隨)1嶋為正,則src2的正編數將提 供值+1」。若SRC2等於零,則SRC2的正負號函數結果為 零。若SRC2為負,則SRC2的正負號函數#「」」。如本發 明之具體實施例中之相乘符號運算採用第二資料元件的正 =函數’並以第-資料元件的值相乘該正負號函數結 果,以獲得所產生之乘積。應用於個別資料元件之-項具 體實施例的符號運算可代表如下: 若 SOURCE2<〇,則DEST=s〇urcei η; 否則若 SOURCE2 == 〇,則 DEST = 〇 ; 否則若S〇URCE2>0;則dest=s〇Urce1x,+卜 對於封包請運算元,㈣料制於各f料元件位置。 而且,相乘符號運算的—項具體實施例還可仿效正負號 函數操作’方法為在-符號運算中’使用「】」作為第一來 源元件’相關值作為第二來源元件。因為本具體實施例之 付號運算根據第二元件之符號值使第—來源值相乘+1、〇 或-1之-’因此此處可複製正負號函數。同樣,藉由將第 88646-960109.doc 12· 1305882 一來源元件設定至等於第二來源元件的符號運算,本發明 之符號運算之具體實施例還可執行絕對值操作。因為來源 值本質上將由其自己的符號相乘,使結果值為「〇」或正, 故這是可實現的。 圖1A係根據本發明之一項具體實施例與一處理器形成之 範例電腦系統的方塊圖’該處理器包括執行單元以執行相 乘符號運算之指令。根據本發明如本文說明的具體實施 例,系統100包括一組件,如處理器102,以使用包括邏輯 的執行單元執行處理資料演算法。系統100係基於可從加利 福尼亞州聖克拉拉之Intel公司(Intel Corporation of Santa Clara,California)購買之 PENTIUM® III、PENTIUM® 4、 Xeon™、Itanium®、乂8〇纹16咖及/或 strongARM™微處理器之 處理系統的代表,雖然也可使用其他系統(包括具有其他微 處理器、工程工作站、視訊盒及同類產品的個人電腦)。在 一項具體實施例中,樣本系統100可執行華盛頓州雷蒙德 Microsoft公司(Microsoft Corporation of Redmond, Washington) 的windows™作業系統之版本,雖然也可使用其他作業系 統(如UNIX與Linux)、嵌入式軟體及/或圖形使用者介面。 因此,本發明不限定於硬體電路與軟體的任何特定組合。 本發明也不限於電腦系統。本發明之替代具體實施例可 用於其他元件,如手持元件及嵌入式應用。手持元件的某 些範例包括蜂巢式電路、網際網路協定元件、數位相機、 個人數位助理(personal digital assistants ; PDA)及手持個人 電腦。嵌入式應用可包括微控制器、數位信號處理器(digital 88646-960109.doc -13- 1305882 si㈣processor ’· DSP)、晶片上之系統、網路電腦㈣w〇rk computers; NetPC)、視訊盒、_集線器、寬域網路 area network ; WAN)開關、或在運算元上執行符號及/或絕 對值操作之任何其他系統。而且,某些結構的實施使指令 能夠在若干資料上同時操作,以改進多媒體應用之效率。 隨著寅料類型及容量的增加,必須提升電腦及其處理器以 使用更有效之方法操作資料。
根據本發明,圖1A係與處理器102形成之電腦系統1〇〇的 方塊圖,該處理器包括一或更多執行單元1〇8執行一演算 法,以從一運算元中擷取一資料元件之符號,並以另一資 料元件相乘該符號。該具體實施例係根據單一處理器桌面 電腦或伺服器系統說明,但是,微處理器系統中可包括替 代具體實施例。系統1〇〇係集線器架構之範例。電腦系統1〇〇 包含處理資料信號的處理器102。處理器1〇2可為複雜指令 集電腦(complex instruction set computer ; CISC)微處理器、 減少指令集計算(reduced instruction set computing ; RISC)
微處理器、超長指令字元(very long instructi〇n w〇rd vliw) 微處理器、實施指令集組合之處理器、或任何其他處理器 元件,如數位號處理器。處理器1〇2係麵合至處理器匯流 排110 ’該匯流排可在處理器102與系統100内的其他組件之 間傳輸資料信號。系統100的元件執行其為熟悉技術者熟知 的傳統功能。 在一項具體實施例中,處理器1〇2包括層級j (Level i ; L1)内部快取記憶體104。根據其架構,處理器1〇2可具有單 88646-960109.doc -14- 1305882 部快取_,,在另- T陕取"己憶體可駐留於處理, 據特定實施及需要,其他具體實施例射的外部。根 快取記憶體的組合。暫存器檔案=外部 不同類型的資料,包括整數暫存器、c中儲存 存器及指令指標暫存器。 …存器、狀態暫 駐==邏1浮點操作之邏輯的執行單元108也 15102内。處理器102還包括為某些 Γ〇ΓΓΓ^ 中,封包^封包指令集109的邏輯。在一項具體實施例 八广7集109包括用於修改資料符號值的封包符號指 精由包括在通用處理器102之指令集中的封包指令集 ⑽’及執行該等指令的關聯電路,許多多媒體應用使用的 細作可使料用處理ϋ1()2之封包f料執行。因此,藉由使 用處理器資料匯流排的全部寬度執行對封包資料之操作, 許多多媒體應用可加速並更高效地執行。這可消除透過處 理器資料匯流排傳輸較小單元資料以一個資料元件一次執 行一或多個操作之需要。 執行單元108的替代具體實施例還可用於微控制器、嵌入 式處理器、圖形元件、DSP及其它類型的邏輯電路。系統 100包括記憶體120。記憶體12〇可為動態隨機存取記憶體 (dynamic rand〇m access mem〇ry ; DRam)元件、靜態隨機 存取 s己憶體(static random access memory; SRAM)元件、快 閃記憶體元件或其他記憶體元件。記憶體12〇可儲存可由處 88646-960I09.doc 15· 1305882 理器102執行之資料信號代表的指令及/或資料。 系統邏輯晶片116係耦合至處理器匯流排110及記憶體 120。所說明具體實施例中的系統邏輯晶片116係記憶體控 制器集線器(memory controller hub ; MCH)。處理器 102可 藉由處理器匯流排110與MCH 116通信。MCH 116提供至記 憶體120之高頻寬記憶體路徑118,用於儲存指令及資料, 並用於儲存圖形命令、資料及文本。MCH 116係用於指引 處理器102、記憶體120及系統100内之其他組件之間的資料 信號,並橋接處理器匯流排110、記憶體120及系統I/O 122 之間的資料信號。在某些具體實施例中,系統邏輯晶片116 可提供一個圖形埠用於耦合至圖形控制器112。MCH 116係 藉由記憶體介面118耦合至記憶體120。圖形卡112係藉由加 速圖形崞(Accelerated Graphics Port; AGP)互連114搞合至 MCH 116。 系統100使用專用集線器介面匯流排122將MCH 116輕合 至 I/O控制器集線器(I/O controller hub ; ICH) 130。ICH 130 提供藉由局部I/O匯流排至某些1/0元件的直接連接。局部 I/O匯流排係南速I/O匯流排’用於將周邊設備連接至記憶體 120、晶片組及處理器102。某些範例係音頻控制器、韌體 集線器(快閃BIOS) 128、無線收發器126、資料儲存124、包 括使用者輸入及鍵盤介面的獲接1/0控制器、串列擴展埠如 通用串列匯流排(Universal Serial Bus ; USB)及網路控制器 134。資料儲存元件124可包括硬碟驅動器、軟碟驅動器、 CD-ROM元件、快閃記憶體元件或其他大容量儲存元件。 88646-960109.doc 1305882 對於系統之另一具體實施例,晶片上之系統可使用執行 單元以符號指令執行演算法。晶片上之系統之一項具體實 施例包括處理器及記憶體。一該系統之記憶體係快閃記憶 體。快閃記憶體可置於同一晶粒如處理器和其他系統組件 上。此外,其他邏輯區塊如記憶體控制器或圖形控制器也 可置於晶片上之系統上。 圖1B說明實施本發明原理之資料處理系統丨4 〇的替代具 體實施例。資料處理系統140的一項具體實施例係使用Intei XScaleTM技術的Intel⑧個人網際網路客戶架構咖⑷⑧ Personal Internet Client Architecture ; Intel(g) pcA)應用處理 器(如全球資訊網devel〇per.intei.c〇m上所說明的)。熟悉技 術者將谷易明白,本文說明的具體實施例可用於替代處理 系統而不背離本發明之範圍。 電腦系統140包括處理核心159,其能夠執行包括符號與 絕對值的SIMD操作。對於一項具體實施例,處理核心159
代表任何類型架構的處理單元,包括但不限於CISC、RISC 或VLIW型架構。處理核心丨59還適於在一或多項處理技術 中製k,藉由足夠詳細地由機器可讀媒體代表,可適用於 方便該製造。 處理核心159包括執行單元142、暫存器檔案集145及解碼 益144。處理核心159還包括非理解本發明所必須之附加電 路(未顯示)。執行單元142係用於執行處理核心159收到的指 令。除識別一般處理器指令外,執行單元142可識別用於執 行對封包資料格式之操作的封包指令集143中的指令。封包 88646*9601〇9.doc •17· 1305882 指令集143包括支援符號及絕對值操作的指令,還可包括其 他封包指令。執行單元142係透過内部匯流排耦合至暫存器 檔案145。暫存器檔案145代表處理核心159上之儲存區域, 用於儲存資訊,包括資料。如前所述,應明白,用於儲存 封包資料的儲存區域並不重要。執行單元142係耦合至解碼 器144。解碼器144係用於解碼處理核心159接收的指令至控 制信號及/或微碼進入點。回應該等控制信號及/或微碼進入 點,執行單元142執行相應操作。 處理核心159係耦合於匯流排141,以便與各種其他系統 元件通信,該等元件包括但不限於,例如,同步動態隨機 存取記憶體(synchronous dynamic random access memory ; SDRAM)控制146、靜態隨機存取記憶體(static random access memory; SRAM)控制147、叢發快閃記憶體介面148、 個人電腦記憶體卡國際協會(personal computer memory card international association ; PCMCIA)/小型快閃(compact flash ; CF)卡控制 149、液晶顯示器(liquid crystal display ; LCD)控制 1 50、直接記憶體存取(direct memory access ; DMA) 控制器151、及替代匯流排主介面152。在一項具體實施例 中,資料處理系統140還可包括I/O橋接154,用於透過I/O 匯流排153與各種I/O元件通信。該等I/O元件可包括但不限 於,例如,通用非同步接收器/發射器(UART) 155、通用串 列匯流排(universal serial bus ; USB) 1 56、藍芽無線 UART 157及I/O擴展介面158。 資料處理系統140之一項具體實施例提供行動、網路及/ 88646-960109.doc -18 - 1305882 或無線通信及能夠執行包括符號或絕對值操作之simd操 作的處理核心159。處理核心159可使用各種音頻、視訊、 成像及通信演算法程式化,該演算法包括離散轉換,如 Walsh-Hadamard轉換、快速富利葉轉換(fast Fourier transform,FFT)、離散餘弦轉換(discrete cosine transform ; DCT)及其各自的反向轉換;壓縮/解壓縮技術如彩色空間轉 換、視訊編碼動作估算或視訊解碼動態補償;及調變/解調 變(modulation/demodulation ; MODEM)函數,如脈衝編碼 調變(pulse coded modulation ; PCM)。 圖1C說明能夠執行SIMD符號或絕對值操作之資料處理 系統的另一替代具體實施例。根據一項替代具體實施例, 資料處理系統160可包括主處理器166、SIMD共處理器 161、快取記憶體167及輸入/輸出系統i 68。輸入/輸出系統 168叮選擇性地搞合至無線介面169。§imd共處理器161能 夠執行包括符號或絕對值的SIMD操作,處理核心17〇可適 於在一或多項處理技術中製造,藉由足夠詳細地由機器可 讀媒體代表,可適於方便製造包括處理核心17〇之資料處理 系統160的所有或部分製造。 對於一項具體實施例,SIMD共處理器161包括執行單元 162及暫存器檔案集164。主處理器165之一項具體實施例包 括解碼器165,用於識別包括由執行單元162執行之simd符 號及絕對值指令之指令集163的指令。對於替代具體實施 例,SIMD 161共處理器還包括至少解碼器165B之部分,用 於解碼指令集163的指令。處理核心17〇還包括非理解本發 88646-960109.doc 19· 1305882 明所必須之附加電路(未顯示)。 在操作中,主處理器166執行資料處理指令流,控制一般 類型之資料處理操作,包括與快取記憶體167及輸入/輸出 系統168之間的互動。嵌入資料處理指令流内的係81肘〇共 處理态指令。主處理器166的解碼器16s將該等simd共處理 器指令識別為應由附帶之SIMD*處理器161執行的指令類 型。因此,主處理器166在共處理器匯流排166上發出該等 SIMD共處理器指令(或代表SIMD共處理器指令的控制信 號),並由任何附帶SIMD共處理器在該匯流排166接收。^ 此情形下’ SIMD共處理器161將接受並執行向其發出的任 何收到的SIMD共處理器指令。 也可透過無線介面169接收資料再由SIMD共處理器指令 處理。對於-項具體實施例,語音通信可以數位信號形式 接收,然後可由SIMD共處理器指令處理,以再生成代表語 音通信之數位音頻樣本。對另一具體實施例’可以用數位 位元肌形式接收壓縮音頻及/或視訊,然後由8ΐΜ〇共處理器 指令處理以再生成數位母音頻樣本及/或動作視訊訊框。對 於處理核心170的一項具體實施例,主處理器166、simd共 處理器161被整合為一單一處理核心17〇,其包括執行單元 162、暫存器檔案集164、及解碼器165,其用於識別包括 SIMD符號及絕對值指令之指令集163的指令。 圖2係根據本發明包括執行相乘符號運算的邏輯電路之 一項具體實施例之處理器200之微架構的方塊圖。如上所 述’符號運算也可稱為封包符號運算與封包符號指令。對 88646-960109.doc -20- 1305882 於符號指令之一項具體實施例,指令可以第二資料元件之 符號值相乘第一資料元件。該指令也可稱為PSIGN或封包 符號。在該具體實施例中,也可實施符號指令操作具有位 元組、纟元、雙字元、四字元等之大小的資料元件。中序 前端201係處理器200之部分,其擷取將執行之巨集指令, 準備稍後用於處理器管線。該具體實施例之前端2〇1包括若 干單元。指令預取器226自記憶體擷取巨集指令,並饋送至 指令解碼器228,解碼器再將巨集指令解碼成機器知道如何 執行之稱為微指令或微操作(也稱為微或微指令)的基元。追 蹤快取230接&已解碼的微指♦,在微指令作列叫十將其 彙編成程式有序序列或追蹤以便執行。當追縱快取MO遇到 複雜巨集指令時,微碼R⑽232即提供完成操作所需的微 指令。 許多巨集指令係轉換成單—微指令’其他巨集指令則需 要右干微指令完成全部操作◎在該具體實施例中,若需要 四個以上的微指令完成—巨集指令,則解碼器以會讀取微 碼ROM 232以執行巨集指令。對於—項具體實施例,封包 符號指令可解碼成小數目的微指令,用於在指令解碼器228 處理。在另-項具體實施例中需要多個微指令完成操 作’封包符號演算法的指令可儲存於微碼r〇m如内。追 蹤快取230參考進人點可程式化邏輯陣列(卿咖疏 1〇giC_y;PLA)以決定正確的微指令指標,以便為微 ROM 232中的符號或絕對值演算法讀取微碼序列。在微 ROM 232完成當前巨集指令之微碼排序後,機器之前端2 88646-960109.doc •21- 1305882 恢復自追蹤快取230擷取微
集指令之微碼序列。執行該巨集指令所需
數及浮點執行單元執行。 序執行引擎203係準備執行微指令之所在。無序執行邏 :危,以便當其流 。分配器邏輯分 輯具有多個緩衝器平整及重新排序微指令流 下管線並經排程準備執行時最佳化其性能。 配各Μ扣々而要的機器緩衝器及資源以便執行。暫存器重 命名邏輯重命名邏輯暫存ϋ至暫存諸案之項目。在以下 才曰7排程器.記憶體排程器、快速排程器2〇2、慢速/通用 汙點排程器204及簡單浮點排程器2〇6之前,分配器還為各 微指令在一用於記憶體操作、一用於非記憶體操作之兩個 微指令仵列之一分配一項目。微指令排程器2〇2、2〇4、2〇6 根據其依賴性輸入暫存器運算元來源之準備情況及微指令 完成其操作所需之執行資源的可用情況決定微指令何時準 備執行。該具體實施例之快速排程器2〇2可於主時脈週期之 各半週期進行排程’而其他排程器僅能每主處理器時脈週 期排程一次。排程器裁決排程欲執行之微指令的調度埠。 暫存器擋案208、210位於排程器202、204、206與執行區 塊 211 内的執行單元 212、214、216、218、220、222、224 之間。一單獨之暫存器檔案2〇8、210分別用於整數及浮點 88646-960109.doc -22- 1305882 操作。該具體實施例之各暫存器檔案2〇8、21〇還包括旁通 網路,可旁通或轉發剛剛完成但尚未寫入暫存器檔案之結 果至新的依賴性微指令。整數暫存器檔案2〇8及浮點暫存器 槽案210還能夠相同通信資料。對於一項具體實施例’整數 暫存器檔案2 0 8係分割成兩個單獨之暫存器標案,一個暫存 器檔案用於資料之低階32位元,第二暫存器檔案用於資料 的尚階32位元。因為浮點指令一般具有64至128位元寬的運 算兀,一項具體實施例的浮點暫存器檔案21〇具有128位元 寬之項目。 執行區塊211包括實際執行指令之執行單元212、214、 216、218、220、222、224。該區段包括暫存器檔案2〇8、 210,用於儲存執行微指令所需的整數及浮點資料運算元 值。該具體實施例的處理器2〇〇係由多個執行單元組成:位
址產生單元(address generation unit ; AGU) 212、AGU 214、 快速ALU 216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點行動單元224。對於該具體實施例,浮點執行區 塊222、224執行浮點、ΜΜχ、SIMD及SSE操作。該具體實 施例的浮點ALU 222包括64位元除64位元浮點除法器,用於 執打除法、平方根及餘數微指令。對於本發明之具體實施 例,涉及浮點值的任何行動均在浮點硬體發生。例如,整 數格式與浮點格式之間的轉換涉及浮點暫存器檔案。同 樣,浮點除法操作係於浮點除法器進行。另— w ,非洋 點數目及整數類型係使用整數硬體資源處理。簡單、非常 頻繁的ALU操作係於高速ALU執行單元216、218執行。= 88646-960109.doc •23- 1305882 具體實施例之快速ALU 216、218可以有效的半時脈週期延 ' 遲執行快速操作。對於一項具體實施例,大多數整數操作 ' 係於慢速ALU 220執行,因慢速ALU 220包括用於長延遲型 操作(如乘法器、偏移、標記邏輯及分支處理)之整數執行石更 體。記憶體載入/儲存操作由AGU 212、214執行。對於該具 體實施例’整數ALU 216、218、220係根據於64位元資料運 算元上執行整數操作而說明。在替代具體實施例中,ALU 216、218、220之實施可支援各種資料位元,包括16、32、 128、256等。同樣,浮點單元222、224之實施可支援具有 各種寬度位元之各種運算元。對於一項具體實施例,浮點 丨 單元222、224可結合SIMD及多媒體指令操作128位元寬之 封包資料運算元。 在該具體實施例中,微指令排程器2〇2、2〇4、2〇6在載入 完成執行前調度依賴性操作^因微指令係猜測性地於處理 器200中排程並執行,處理器2〇〇也包括處理記憶體遺失的 邏輯。若資料載人在資料快取中遺失,則管線内可能有飛 打中之依賴性操作,給排程器留下暫時之錯誤資料。一重 播機制追蹤並重執行使用錯誤資料之指令。僅依賴性操作 需要重播,允許完成獨立操f處理器之―項具體實施例 的排程器及重播機制也設計成捕獲符號及絕對值操作的指 本文使用的術語「暫存器 集指令的板上處理器儲存位 器係可從處理器外側(從程 」指用作識別運算元之部分巨 置。換言之,本文提及的暫存 式設計師之角度)看見的暫存 88646-960109.doc -24- 1305882 器。不過,具體實施例的暫存器不必限於意指特定類型之 電路。相反,具體實施例的暫存器只需能夠儲存及提供資 料,並執行本文說明的功能即可。本文說明之暫存器可使 用任何數目之不同技術藉由處理器内之電路來實施,該等 技術諸如專用實體暫存器、使用暫存器重命名之動態分配 實體暫存器、及專用與動態分配實體暫存器之組合等。在 一項具體實施例中,整數暫存器儲存三十二位元整數資 料。一項具體實施例之暫存器檔案還包括用於封包資料之 八個多媒體SIMD暫存器。對於以下之說明,暫存器係理解 為資料暫存器,旨在保持封包資料,如加利福尼亞州聖克 拉拉之 Intel 公司(Intel Corporation of Santa Clara,.California)之 MMX技術形成的微處理器中的64位元寬MM TM暫存器(在 某些情況下也稱為「mm」暫存器)。具有整數及浮點形式 之該等MMX暫存器可使用伴隨SIMD及SSE指令的封包資 料元件進行操作。同樣,與SSE2技術關聯之128位元寬XMM 暫存器也可用於保持該等封包資料運算元。在該具體實施 例中,在儲存封包資料及整數資料時,暫存器無需在兩種 資料類型之間進行區分。 以下圖式之範例中說明資料運算元之數目。圖3 A說明根 據本發明之一項具體實施例之多媒體暫存器中各種封包資 料類型之代表。圖3A說明128位元寬運算元之封包位元組 310、封包字元320及封包雙字元(doubleword ; dword) 33 0 的資料類型。該範例之封包位元組格式3 10係128位元長, 包括十六個封包位元組資料元件。本文定義一位元組為8位 88646-960109.doc -25- 1305882 兀資料。#於位几組〇,各位元組資料元件之資訊係健存於 位兀7至位兀0,對於位元組丨,係儲存於位元15至位元8, 對於位兀組2,係儲存於位元23至位元16,最後,對於位元 組15係儲存於位元12〇至位元127。因此,所有可用之位元 均用於暫存器°此儲存配置提高了處理器之#1存效率。同 樣,讀取十六資料元件後,可在並行之十六資料元件上執 行一項操作。 -般而5,資料元件係資料之個別塊,與同樣長度的其 他資料元件一起儲存於單一暫存器中或記憶體位置。在與 SSE2技術關聯之封包資料序列中,儲存於暫存器之資 料兀件的數目係128位元除以個別資料元件的位元長度。同 樣,在與MMX及SSE技術關聯之封包資料序列中,儲存於 MMX暫存器之資料元件的數目係64位元除以個別資料元 件的位元長度。雖然圖3A說明之資料類型係128位元長,但 疋,本發明之具體實施例也可操作64位元寬或其他大小的 運算元。該範例之封包字元格式32〇係128位元長,包括八 個封包字元資料元件。各封包字元包括十六位元資訊。圖 3 A之封包雙子元格式33〇係128位元長,包括四個封包雙字 元資料元件》各封包雙字元資料元件包括三十二位元資 訊。封包四字元係128位元長,包括兩個封包四字元資料元 件。 圖3B說明替代暫存器内資料儲存格式。各封包資料可包 括一個以上獨立資料元件。說明瞭三個封包資料格式:半 封包341、單一封包342及雙封包343。半封包341、單一封 88646-960109.doc -26 - 1305882 包342及雙封包343之一項具體實施例包括固定點資料元 件。對於一替代具體實施例,半封包341、單一封包342及 雙封包343之一或多個可包栝浮點資料元件。半封包341之 一項替代具體實施例係一百二十八位元長,包括八個16位 元資料元件。單一封包342之一項具體實施例係一百二十八 位元長,包括四個32位元資料元件。雙封包343之一項具體 實施例係一百二十八位元長,包括兩個64位元資料元件。 應明白,該等封包資料格式可進一步擴展至其他暫存器長 度,例如,擴展至96位元、160位元、192位元、224位元及 256位元或更長。 圖3C說明根據本發明之一項具體實施例之多媒體暫存器 中各種已標號及未標號之封包資料類型之代表。非符號封 包位元組代表344說明在SIMD暫存器中儲存未標號封包位 元組。對於位元組〇,各位元組資料元件之資訊係儲存於位 元7至位元〇,對於位元組i,係儲存於位元15至位元8,對 於位元組2,係儲存於位元23至位元16,最後,對於位元組 15係儲存於位元12G至位元❿因此,所有可用之位元均 用於暫存ϋ。此儲存配置提高了處理器之儲存效率。同樣, 讀取十六資料it件後,可在並行之十六賴元件上執行一 項操作。已標號之封包位元組代表⑷說明已標號之封包位 ::的儲存。應注意’各位元組資料元件之第八位元係符 L未標號之封包字元代表346說明字元7至字 ^儲存㈣助暫存器的。已標號之封包字元代表⑷传 以於未標號之封包字騎存器内代表34“應注意,各字 88646-960109.d〇( -27· 1305882 兀資料7G件之第十六位元係符號指示符。未標號封包雙字 几代表348顯示如何儲存雙字元資料元件。已標號之封包雙 字70代表349係類㈣未«之封包雙字元暫存ϋ内代表 348。應注意,所必須的符號位元係各三十二位元之雙字元 資料元件。 圖3D係描述具有三十二或更多位元之操作編碼(操作碼) (operation encoding; 〇pc〇de)格式遍之一項具體實施例的 圖’其暫存器/記憶體運算元定址模式對應於「IA_32 架構軟體發展員手冊第2卷:指令集參考」中說明的操作碼 類型,該手冊可自加州聖克拉拉之Intel公司(Intd c〇rp〇rati〇n of Santa Clara,California)的全球資訊網(world_wide web : www) inteUom/design/litcentr上獲得。相乘符號運算類型 ~T使用棚3 61和3 6 2之一或多個編碼。每指令可識別最多 兩個運算元位置,包括最多兩個來源運算元識別項364與 365。對於符號指令之一項具體實施例,目的地運算元識 別項3 6 6與來源運算元識別項3 6 4 —樣。對於一替代且體 實施例,目的地運算元識別項366與來源運算元識別項 3 65—樣。因此’對於相乘符號運算的具體實施例,由來 源運算元識別項364與365識別的來源運算元之一係由符 號運算之結果重寫。對於符號指令之一項具體實施例, 運算元識別項364與365可用於識別64位元來源及目的地 、变险 — 運鼻7L。 圖3Ε描述具有四十或更多位元之另一替代操作編碼格式 (操作碼)370。操作碼格式370對應於操作碼格式360,並包 88646_960109.doc • 28· 1305882 括可選前置碼位元組378。相乘符號運算類型可使用攔 — 378、371及372之一或多個編碼。來源運算元識別項374與’ 375及前置碼位元組378可每指令識別最多兩個運算元位 ' 置。對於付號彳s令之一項具體實施例’前置碼位元組3 7 8可 · 用於識別128位元來源及目的地運算元。對於符號指令之一 項具體實施例’目的地運算元識別項376與來源運算元識別 項374—樣。對於一替代具體實施例,目的地運算元識別項 376與來源運算元識別項375 —樣。因此,對於相乘符號運 算的具體實施例’由來源運算元識別項374與375識別的來 源運算元之一係由符號運算之結果重寫。操作碼格式360及 $ 370允許由MOD欄363及373與可選縮放指數基礎及位移位 元組部分指定的暫存器至暫存器、記憶體至暫存器、記憶 體對暫存器、暫存器對暫存器、仲介對暫存器、暫存器至 記憶體的定址。 再轉看圖3F ’在某些替代具體實施例中,64位元單指令 多資料(SIMD)演算法操作可透過共處理器資料處理 (coprocessor data processing; CDP)指令執行。操作編碼 (opcode)格式380描述具有Cdp操作碼攔382及389的一該種 · CDP指令。對於符號或絕對值操作之替代具體實施例,cDp 指令之類型可使用攔383、384、387與388之一或多個編碼。 每指令可識別最多兩個運算元位置,包括最多兩個來源運 算元識別項385與390及一個目的地運算元識別項386。共處 理器之一項具體實施例可操作8、丨6、32及64位元值。對於 一項具體實施例,符號或絕對值操作係於整數資料元件上 88646-960109.doc -29- 1305882 執行。在某些具體實施例中,使用條件攔38 1可有條件地執 行符號或絕對值指令。對於某些符號或絕對值指令,可使 用攔383編碼來源資料的大小。在符號或絕對值指令的某些 具體實施例中,零(Zero ; Z)、負(negative ; N)、進位(carry ; C)及溢出(V)偵測可於SIMD欄進行。對於某些指令,可藉 由欄384編碼飽和類型。 圖4係根據本發明在封包資料運算元上執行符號運算之 邏輯的一項具體實施例的方塊圖。可實施本發明之具體實 施例與上述之各種運算元類型之功能。對於一項具體實施 例,根據本發明之符號運算係實施為操作特定資料類型之 、. 指令集。例如,封.包符號位元組(packed sign byte ; PSIGNB) 指令係用以決定位元組資料類型之符號。封包符號字元 (packed sign word ; PSIGNW)指令係用以引起字元資料類型 之符號運算。封包符號雙字元(packed sign doubleword ; PSIGND)指令係用以執行雙字元資料類型之相乘符號運 算。雖然該等指令之名稱不同,但相乘之一般符號運算係 以類似方式執行。為簡明起見,以下之說明及範例係根據 處理資料元件之封包符號(packed sign ; PSIGN)指令說明。 該具體實施例之相乘符號運算之PSIGN指令以兩塊資訊 開始:第一資料運算元DATA A 410及第二資料運算元DATA B 420。對於以下說明,DATA A、DATA B及 RESULTANT 一般係稱為運算元或資料區塊,但不限於此,還包括暫存 器、暫存器檔案及記憶體位置。在一項具體實施例中,各 符號指令(PSIGNB、PSIGNW、PSIGND)係解碼成一微操 88646-960109.doc -30- 1305882 作。在一替代具體實施例中,各指令可解碼成各種數目之 微指令,以對資料運算元執行符號運算。對於該範例,運 算元410、420係128位元寬之資訊塊,儲存於具有字元寬資 料元件之來源暫存器/記憶體中。在一項具體實施例中,運 算元410、420係保持於128位元長之SIMD暫存器中,如128 位元SSE2 XMM暫存器。對於一項具體實施例,RESULTANT 440也係XMM資料暫存器。而且,RESULTANT 440也可為 與來源運算元之一相同的暫存器或記憶體位置。根據特定 實施情況,運算元與暫存器可為其他長度,如32、64及256 位元,並可具有位元組、雙字元或四字元大小的資料元件。 雖然該範例之資料元件係字元大小,同一概念可延用於位 元組及雙字元大小的元件。若資料運算元係64位元寬, MMX暫存器將替代XMM暫存器。 該範例之第一運算元410係由一組八個資料元件組成: A7、A6、A5、A4、A3、A2、A1與A0。各個別資料元件對 應於結果440中之資料元件位置。第二運算元420係由另一 組八個資料區段組成:B7、B6、B5、B4、B3、B2、B1與 B0。此處的資料區段長度相同,各由單一字元(16位元)資 料組成。不過,資料元件及資料元件位置可具有非字元之 其他顆粒度。若各資料元件係一位元組(8位元)、雙字元(32 位元)或四字元(64位元),則128位元運算元可分別具有十六 位元組寬、四個雙字元寬或兩個四字元寬之資料元件。本 發明之具體實施例不限於特定長度之資料運算元或資料區 段,並可為各相應實施設定大小。 88646-960109.doc -31- 1305882 查⑼ 420可‘駐留於暫存器或記憶體位置或暫存器 ^或其混合内。資料運算以iq、物係與符號指令一起 :至處理|g内之執行單元之符號計算邏輯㈣。當符號指 -達執订單%時,指令應已經於處理器管線内提前解 碼。因此’符號指令可為微操作(微指令)形式或某些其他解 瑪格j。對於該具體實㈣,符料算賴4观到兩個資 料運算元410、420。符號計算邏輯43G選擇第-運算元41〇 之各貝料70件的符號值或正負號函數,以第二運算元42〇之 對應資料元件位置中的資料元件值相乘該符號值,並將該 相乘之乘積放入結果440之相應位置。雖然本文說明之係相 乘操作之般概办’但是’實現與乘法相乘相同之所需結 果的其他方法及方式亦係可能的。例如,在一項具體實施 例中,可使用乘法單元執行相乘。在另一具體實施例中, 可透過邏輯處理演算法使一值不變、設定為零或將符號從 「+」變成「-」或相反而獲得同樣的結果。 符號擷取及乘法之該處理係對第一運算元410之資料元 件位置的整個集重覆。雖然該具體實施例之資料處理係由 符號擷取及相乘組成,但是術語「符號運算」或「相乘符 號運算」也可一般用於指稱該資料處理。對於一項具體實 施例’所有資料位置之資料元件均係並行處理。在另一具 體實施例中’資料元件位置的某部分可一次一起處理。於 此,結果440係由八個乘積組成·· B7 X SIGNA7、B6 X SIGNA6、B5 X SIGNA5、B4 X SIGNA4、B3 X SIGNA3、B2 X SIGNA2、BlxSIGNA1 及 BOxSIGNa。。對於該具體實施 88646-960109.doc -32- 1305882 例,非零正數之資料元件之正負號函數或符號值(sign value ; SIGNx)為+1,非零負數的為-1,零的為0。在結構允 許+0與-0之一項替代具體實施例中,兩類型中的零均視為 零,其中資料元件之正負號函數或符號值為〇。 圖5說明根據本發明之一項具體實施例之對資料元件之 相乘符號運算的操作。該範例之符號運算可於圖4之符號計 算邏輯430中進行。在該範例中,符號運算530係使用單一 資料元件位置之資料元件說明。第一資料運算元之第一資 料元件DATA ELEMENT A 510與第二資料運算元之第二資 料元件DATA ELEMENT B 520—起處於同種狀態。各資料 元件係由具有符號部分及數值基礎部分的一值組成。例 如,DATA ELEMENT A 510係解釋為由SIGNa與BASEa組成 的數值512。同樣,DATA ELEMENT A 520係解釋為由SIGNb 與BASEb組成的數值522。 在符號運算530期間,符號計算邏輯採用第一運算元的符 號值即 DATA ELEMENT A 510 的 SIGNA,並用 DATA ELEMENT B 520中的數值相乘該符號值。在一範例中,邏 輯係回應SIGNA值而執行相應的相乘操作。數值的符號部分 可為負「-」或正「+」。數值的值部分則可為零「0」或非 零值。對於一項具體實施例之符號運算,邏輯將第一資料 元件裝入三類值之一:正「+」、零「0」或負「-」。若第一 資料元件510為正,意味著其符號為正,則該資料位置之結 果540本質上係第二資料元件520自身,因為正符號係視為 以等於「+1」的SIGNA相乘第二資料元件520。若第一資料 88646-960109.doc -33- 1305882 元件510為零,則可忽略第一資料元件510的符號值,因為零 本質上要求第二資料元件520乘SIGNA等於零,這會產生結果 540為零。若第一資料元件510為負,意味著其符號為負,則 該資料位置之結果540將為第二資料元件520相乘等於「-1」 之 SIGNA 的乘積。涉及 DATA ELEMENT A 510 與 DATA ELEMENT B 520之特定資料元件位置之相乘符號運算的結 果540係「SIGMA X DATA ELEMENTB」。在另一具體實施例 中,邏輯可能能夠同時相乘符號值SIGNA與SIGNB,並將結 果符號值應用於BASEb,以形成該資料元件位置的最終結 果。 圖6A係根據本發明執行相乘符號運算的電路600的一項 具體實施例的方塊圖。該具體實施例之電路600包括多工操 作結構及邏輯,用於評估第一來源運算元之元件的符號 值,並以第二來源運算元之對應元件有效地計算該符號值 的乘積。為簡化說明,圖6A之電路600係顯示一資料元件位 置或結果封包資料區塊之片。而且,所顯示之該資料元件 位置之邏輯600可存在於多種實例之同一執行單元中。根據 特定實施情況,按資料元件所需數目的需要外推多個電路 元件。例如,對於八個資料元件,可能實體存在足夠的多 工器及加法器,以處理八個資料元件之所有位元。同樣, 可存在處理各具有十六個資料元件之兩個運算元的電路的 十六個實例。在另一具體實施例中,某些邏輯如加法器 614,可(例如)在所有資料元件位置之間共用。在又一另一 具體實施例中,電路能夠處理封包資料,而多資料元件位 置之資料可透過邏輯一起處理。 88646-960109.doc -34- 1305882 對於該具體實施例,符號運算之邏輯的部分也與其他封 包操作共用,以便減少元件計數及冗餘。該具體實施例的 電路600接收來源運算元的輸入資料元件,並以結果封包資 料運算元輸出特定資料元件位置之結果資料元件。雖然來 源元件SRC X 602與SRC Y 604在本文中稱為單一資料元 件,但應明白,該等元件係伴隨封包符號指令之較大封包 資料運算元之部分。在該具體實施例中,第一來源資料元 件SRC X 602係耦合至兩個輸入(2:1)多工器(multiplexer; mux) 606。一 SIGN信號622控制該2:1 mux的操作。對於該 具體實施例,若實施了符號運算,則SIGN 622使mux 606 輸出「0」,並將其作為第二輸入耦合至mux 606。若實施了 另一類型之操作,則SIGN 622使mux 606輸出SRC X 602。
該具體實施例之第二來源資料元件SRC Y 604係耦合至 另一2:1 mux 608,作為倒轉605及非倒轉604。若實施了符 號運算,則SIGN 622使mux 608輸出倒轉之輸入605。在該 具體實施例中,SRC Y 604之倒轉605可用於實現減法。兩 個mux 606、608係_合至加法器614。mux輸出610、612分 別係加法器614之第一與第二輸入。加法器614係將其輸入 相加以於其輸出616產生一和。在符號運算期間,加法器接 受「〇」當作其第一輸入610,接受倒轉SRC Y 605當作其第 二輸入612。加法器614顯示將倒轉SRC Y 605加至「0」603。 但是,該具體實施例之SRC Y 604之倒轉基本上使SRC Y 604將符號從正變為負,或從負變為正。因此,倒轉之SRC Y 605本質上使加法器614從「0」603中以數學方式減去SRC 88646-960109.doc -35- 1305882 Υ 604。加法器614之輸出616可表示為「0至SRC Y」之和。 SRC X 602的資料位元也耦合至偵測SRC X 602是否等於 零值的零偵測器電路624。指示是否偵測到總零值的零偵測 器輸出626係當作控制信號耦合至三輸入(3:1) mux 618,並 當作邏輯NOR閘極628的輸入。一項具體實施例之零偵測係 與加法並行實施,並不產生任何新的重要時序路徑。SRC X 602的N符號位元620(N為一或大於一的數值)也係耦合至邏 輯NOR閘極628,並作為對3:1 mux 618的控制信號。若其兩 個輸入均係活動性低的,則該NOR閘極628將輸出一活動性 高之信號。在該範例中,若符號位元620之兩個輸入為低, 指示SRC X 602為正,則NOR閘極輸出632將為高,而零偵 測器結果之輸入為低,指示SRC X 602為非零值。 耦合至3:1 mux 618之控制信號634之群組操作選擇合適 之資料值輸出為結果630。SRC X 602、SRC Y 604的資料值 及「0至SRC Y」616之和係當作輸入耦合至3:1 mux 618。 對於該具體實施例,信號634係用於促使根據該等情形之一 選擇輸入之一。若第一來源元件SRC X 602為零則產生第一 種情形。換言之,第二資料元件604係相乘零。該情形係由 零偵測器輸出626指示。在該情形中,選擇為零值之SRC X 602之輸入,並將其輸出為結果630。在該具體實施例中, 其他控制信號620、632之該零情形被覆蓋,並輸出零,而 不論SRC X 602的符號值及SRC Y 604的内容為何。 若第一來源元件SRC X 602為正且為非零值,則產生第二 種情形。該情形係由NOR閘極輸出632指示。本質上,第二 88646-960109.doc -36- 1305882 資料元件604將相乘「+1」,並產生SRC γ6〇4本身。在此情 形中,選擇SRC Υ 604之輸入並輸出為結果63〇。若第一來 源元件SRC X 602為負且為非零值,則產生第三種情形。該 情形由SRC X 602之Ν符號位元62〇指示,若SRC χ 6〇2為 負,則提供一活動性高之值,若SRCX6〇2為正,則提供一 活動性低之值。在此情形中,選擇「〇至SRC γ」616之和之 輸入並輸出為結果630。本質上,SRC χ 6〇2之負符號係視 為「-1」’「〇至SRCY」計算係於數學上等同於以因數「“」 相乘第二資料元件SRC Υ 604。對於該具體實施例,這個與 其他資料元件位置之結果係封包於一起成為與來源資料運 算元同樣大小的結果資料區塊。例如,若來源封包資料運 算元係64或128位元寬,則結果封包資料區塊也分別為㈣或 128位元寬。而且,符號運算之來源資料運算元可來自暫存 器或記憶體位置。對於該具體實施例,結果封包資料區塊 為來源資料運算元之一重寫在SIMD暫存器中的資料。 圖6B係根據本發明執行符號運算之電路65〇的另一項具 體實施例的方塊圖。雖然電路配置及連接不同,但該具體 實施例總體方案及功能類似於圖6A之電路6〇〇之方案與功 能。該具體實施例之電路650還包括多工操作結構及邏輯, 用於評估第-資料元件之符號及,n料元件相乘該符 號。電路650係根據單一資料元件位置或結果封包運算元之 片而顯示與說明,但是,可根據特定實施情況按需要擴展 裝置及方法,並應用於各種長度之運算元。因此,可複製 圖6B之某些電路元件以便服務更多資料元件。例如,若運 88646-960109.doc -37· 1305882 算元能夠包括十六個資料元件位置,則圖6B之電路可擴展 至支援十六個資料元件位置。 該具體實施例之電路650接受輸入資料作為第一封包運 算元之第一資料元件SRC X 602與第二封包運算元之第二 資料元件SRC Y 604。SRC X 602係作為輸入耦合至3:1 mux 6 18及零偵測器邏輯624。零偵測器624將決定SRC X 602是 否為零。SRC Y 604係耦合至3:1 mux 618’ 倒轉613 (-SRC Y) 係耦合至加法器614。加法器614將倒轉SRC Y 613加至其他 加法器輸入,在此情形下係「〇」603,以於其輸出616獲得 和。藉由相加倒轉SRC Y 604,加法器係以負SRC Y加零, 或以數學方式從「0」減去SRC Y。加法器614之輸出61 6係 「0至SRC Y」,並係當作輸入耦合至3:1 mux 618。值「0至 SRCY」也等同於以「-1」相乘SRCY 604。 零偵測器電路624之輸出信號626係當作控制信號耦合至 3:1 mux 618,還當作輸入耦合至邏輯NOR閘極628。同樣, SRC X 602的N符號位元620係耦合至3:1 mux 618作為控 制,並作為其他輸入耦合至NOR閘極628。若符號位元620 及零偵測器輸出626均為活動性低的,則該具體實施例之 NOR閘極628的輸出632為活動性高的。NOR閘極輸出632也 耦合至3:1 mux 6 1 8作為控制信號。該組控制信號634將根 據存在之情形選擇三個mux輸入6 02、604、616之一,以輸 出為結果630。如以上圖6A所述,該三種情形係:(1) SRC X 602為零;(2)SRCX 602為正且為非零值;(3)SRCX 602為 負且為非零值。對於第一種情形,選擇將為零之SRC X 602。 88646-960109.doc -38- 1305882 子;第種障形,選擇等於「SRC Υ X +1」之SRC: Y 604。 對於第三種情形’選擇等於「SRCYx-l」之「〇至_丫_ 各資料元件位置之結果係相互一起封包成結果資料運 曾 一 鼻7L。 圖7說明根據本發明之一項具體實施例對複數個資料元 牛進行之封包付號指令操作。此係指令「PSignw DATA B、 DATA A」之範例。pSIGNW指令將引起相乘符號運算,以 操作第來源封包運算元D ATA B 711與第:來源封包運算 元DATA A 7G1中的字元大小資料元件。本文之說明也適用 於其他封包符號指令,如1>81(}]^]3與1>81(5]^]:^在該範例中, 一來源資料701的符號係透過相乘應用於另一來源資料711 之值,以獲得存入目的地資料儲存元件721的乘積。與結果 721樣’在該範例中’兩個來源運算元DATA A 701與DATA B 711各由八個封包資料元件組成。在該具體實施例中,所 涉及之各資料元件係八位元或一位元組寬。因此,DATA A 701、DATAB 711與RESULTANT721資料區塊各為128位元 長。而且,該等資料區塊可位於記憶體及/或暫存器内。 如圖7所示,DATA A 702包括具有以下數值之基數1〇内之 數值的資料元件:「-4270」702、「240」703、「-3573」704、 「7033」705、「-2427」706、「_9703」707、「0」708、「2605」 709。同樣’ DATA B 711包括具有以下基數10值之來源資料 元件.「-1120」712、「6401」713、「36」714、「〇」715、「691」 716、「-6780」717、「-855」718、「5177」719。基數 10數目 將在以下用標註「1〇」進一步說明。因此,擷取第二資料運 88646-960109.doc -39- 1305882 算7G 701之各資料兀件的符號,並相乘第一資料運算元711 之對應資料元件位置中之各資料元件的數目。若第二運算 元7〇1之資料元件的數目為「〇」,則「〇」也輸入對應結果 資料元件&置。對於一項具體實施例,可並行執行來源資 ;斗 711中之或夕個資料元件位置之相乘符號運算處 理。 在評估第二運算元701中之各資料元件的符號值後,第— 運算元711中t對應資料元件位置之數目係相乘合適之因 數。對於該具體實施例,根據第二運算元資料元件之符號 值,被乘數為「-丨」或「〇」或「+1」。雖然本文係以相乘 說月符號運算’但實際乘法操作可能並非獲致相同數學結 果所實體必須的。例如,不一定須以「〇」進行乘法操作來 獲致乘積「〇」。也不—定實體必須以「+1」相乘某數值, 因為其乘積為該數值本身。同樣,以「_丨」相乘某數值之 乘法結果也可藉由從「〇」中減去該數值獲得。 例如,第二運算元7〇1之最左邊的資料元件7〇2具有負數 值「-42701()」。同時,第一運算元711之最左邊資料元件712 包括值「-112010」。因為第二運算元資料元件7〇2之符號值 為負,在封包符號運算期間,對應之第一運算元資料元件 712之值「-11201G」係概念上相乘「_丨」,以產生乘積 「1120丨〇」。該乘積係儲存至結果721之相應之資料元件位置 722。 同樣’第二運算元7〇1之最右邊資料元件7〇9具有正值 260510」。同時,第一運算元711之最右邊資料元件719包 88646-960109.doc •40· 1305882 括值「517710」。因為第二運算元資料元件7〇9之符號值為 正,在封包符號運算期間,對應之第一運算元資料元件719 之值「517710」係概念上相乘「+丨」,以產生乘積「5177^」。 該乘積係儲存至結果72〗之最右邊資料元件位置729。在本 文之第二運算元資料元件709之符號值為正之情形下,即無 需實際乘法,因乘積729就是第一運算元資料元件719之值。 第二運算元701自右嘁起之第二資料元件7〇8之值為 〇 10」。同時,第一運算元711自右邊起之第二資料元件718 包括值「-85 510」。因為第二運算元資料元件7〇8之值為零, 在封包符號運算期間,對應之資料元件718之值「_855丨〇」 係基本上相乘「〇」’以產生乘積「〇」。因此,「〇」係儲存 至結果721自右邊起之第二資料元件位置728。因為第二運 算元資料元件708具有零值,因而無需進行乘法,乘積將為 「〇」。同樣,該具體實施例定義了第二運算元資料元件之 零值,使結果位置為「〇」,而不論第二運算元資料元件可 能存在之任何符號值。 圖8A係說明執行符號運算之一方法之一項具體實施例的 流程圖800。長度值L此處係用於代表運算元及資料區塊之 寬度。根據特定具體實施例,L可用於以位元、位元組、字 兀*等之數目指稱寬度。同樣,術語M係用於指稱封包於一 運算兀内之資料元件或區段之數目。在區塊81〇,接收具有 Μ個兀件之第一長度L資料運算元B。在區塊82〇接收也具有 Μ個το件之第二長度L資料運算元a ^對於該具體實施例, 來源運算元與結果長度相等,並具有相同數目之資料元 88646-960109.doc •41· 1305882 件。在區塊830,處理執行相乘符號運算之指令。 該具體實施例之區塊8 3 〇之符號運算之詳情係以各資料 兀件位置發生之情況進一步說明。對於一項具體實施例, 所有封包結果資料元件位置之符號運算均係並行處理。在 另一具體實施例中,資料元件之某部分可—次處理。在區 塊831進行檢查以決定資料運算元a之元件之值是否為負 (小於零)。若該值決定為負,則於區塊832計算該特定資料 元件位置之結果值,即資料運算元B之元件值相乘「_丨」之 乘積。若區塊831之運具元A之元件值不為負,則於區塊833 決定運算元A之元件值是否等於零。若該值決定為零,則該 資料元件位置之結果值係於區塊834設定為「〇」。但是,若 於區塊83 3未發現運算元A元件之值等於零,則於區塊5 進行另一決定:該運算元A元件之值是否為正(大於零)。若 該運算元A元件之值為正,則於區塊836計算該特定資料元 件位置之結果值’即運算元B資料元件之值相乘「+1」之乘 積。若在區塊835該具體實施例之運算元a元件之值不為 正,則於區塊837視該值為未定義,如同三種情形(正、「〇」、 負)中沒有任何情形可適用一樣。該等不同資料元件之該等 結果值係排列至對應於結果封包運算元之來源元件對的相 應貧料元件位置。 圖8B係說明執行符號運算之一方法之另一項具體實施例 的流程圖850。該具體實施例於區塊81〇及820之該方法流程 類似於圖8A之該等流程。在該範例中,區塊830執行相乘符 號運算的方法有所不同。該具體實施例之區塊830之符號運 88646-960I09.doc •42- 1305882 算之詳情也係以各資料元件位置發生之情況進一步說明。 在區塊840決定資料運算元A之元件值是否等於零。若該決 定為真且該值為零,則於區塊841輸入「〇」當作該資料元 件位置之結果值。但,若決定為該位置之運算元A資料元件 係非零值,則於區塊842計算該資料元件位置之結果值,即 如運算元B資料元件之值相乘運算元a資料元件之符號之 乘積。如在圖8A—樣,各資料元件位置之結果值係排列至 結果封包資料區塊之相應位置。 圖9係在封包資料運算元上執行絕對值操作之邏輯之一 項具體實施例的方塊圖。對於一項具體實施例,根據本發 明之絕對值操作係實施為在各種大小資料類型上操作之封 包絕對(packed absolute ; PABS)指令。為簡明起見,本文 以具有八個資料元件之封包運算元之一般術語說明該 PAB S指令。該等資料元件可為位元組、字元、雙字元等, 視特定實施情況而定。在該範例中,封包絕對操作係以一 排代碼如「PABS SRC 1」調用,其中,SRC 1指向SIMr^ 存器或記憶體位置。在此情形下,SRC 1既是資料來源又是 結果目的地。對於一項具體實施例,指令格式需要兩個操 作員,代碼排將讀為「PABS SRC 1,SRC 2」。在此情形下, PABS指令使SRC 2之資料元件之絕對值替代入src 1。而 且’在一項具體實施例中’提供一封包絕對位元組(packed absolute bytes ; PAB SB)指令用於產生位元組資料類型之絕 對值;提供一封包絕對字元(packed absolute words; PABSW) 指令用於產生字元資料類型之絕對值;及提供一封包絕對 88646-960109.doc -43· 1305882 雙字元(packed absolute doublewords ; PABSD)指令,用於 產生雙字元類型之絕對值。 該具體實施例之絕對值操作之PABS指令以具有如下八 個資料元件之第一資料運算元SOURCE DATA 910開始: A7、A6、A5、A4、A3、A2、A1與A0。各個別資料元件對 應於結果930中之資料元件位置。資料運算元91〇係與絕對 值指令一起發送至絕對值計算邏輯920。絕對值計算邏輯 920修改各來源資料元件中的值,使結果93〇中之對應元件 位置的數值將具有該來源資料元件數目之未標號絕對值。 例如,最左邊之結果元件位置具有來源元件A7之數目之未 標號絕對值。絕對值之該處理係對來源運算元91〇之資料元 件位置的整個組重覆。對於該具體實施例,結果位置可與 來源運算元位置一樣。在以PABS指令指定兩個運算元之一 替代具體實施例中,一運算元可指定來源,另一運算元可 指定目的地。 影像處理中經常實施壓,缩。視訊框一般壓縮於像素區塊 中。由於量化操作,高度壓縮之視訊顯示編塊性人工因素。 在許多編碼演算法中,於較低位元速率發生之影像劣化之 一類型稱為編賴應。該效㈣在料處理過財將影像 不自然地劃分成具有固定格柵的矩形區塊而引起。因各區 塊之編碼係獨立的’因此不能確保編碼影像值在區塊邊界 之間的連續性。離散餘弦變換之DC係數的量化可向區塊增 加或從其減少偏移,使其較鄰接區塊更亮或更暗,並形成 沿區塊邊界的顯示線。此情形有時可能在編碼影像中引起 88646-960109.doc 1305882 明顯之人工邊緣及編塊人工因素。在影像序列中,對照行 動景物觀看之非行動邊缘之背景格柵可能導致非常不自然 且難看之劣化。為防止發生該等編塊效應,可使用解塊方 案過濾以平整人工邊緣。使用平整區塊之間邊界之解塊演 算法可使該等人工因素不太明顯。不過,若沿區塊邊界存 在真實邊緣’則演算法不得平整區塊之間的梯級。一般而 言,若邊緣梯級大於量化可能形成之梯級大小,則鄰接區 塊之間的梯級視為真實邊緣。同樣,其他演算法也可用於 在區塊上配合表面。 視訊壓縮方法Η.263與MEPG4的某些解塊演算法使用符 號或正負號函數操作及絕對值操作。在該等視訊解塊演算 法中,符號函數計算正確因數的符號。絕對值操作係用於 決定正確因數之量,並與預定臨界值比較視訊之各種變 化。在Η.263與MPEG4之解塊演算法中’先前說明iSIMD 指令如PSIGN與PABS之具體實施例可一起使用。正負號函 數操作涉及評估資料之符號值,及提供符號值的指示。例 如,若資料元件為零,資料元件之正負號函數操作將輸出 「〇」’若資料元件為負,則輸出「_1」,若資料元件為正, 則輸出「+1」。對於一項具體實施例,根據本發明2PSIGN 指令可用於提供正負號函數功能。 非線性過濾解塊之一方法使用三步非線性過濾方法。第 一步,特徵化區塊邊界。第二步,使用第一步的結果計算 各因數以校正沿區媿邊界的像素值。第三步,藉由加或減 於第二步計算的因數校正沿邊界之像素之像素值。以下範 88646_960109.doc -45- 1305882 例說明一種實施之H.263解塊演算法。A與b係區塊邊界一 側之像素。A 1〇12係與區塊邊界相距一像素距離之像素陣 列。B 1014係沿區塊邊界之像素陣列。C與D係邊界另一侧 之像素C 1 〇 2 2係離開陣列B之於邊界另一側沿區塊邊界之 陣列。D 1 〇24係與陣列c 1022同處一區塊1 〇2〇之距離區塊 邊界一像素的像素陣列。為減少因區塊又1〇1〇與區塊Y 1020之間的量化而產生之連續性人工因素,但同時保留真 實邊緣,將實施解塊操作。解塊之結果標記為「a,」、「bi」、 「C'」與「d,」。 圖W說明根據本發明使用SIMD指令之解塊演算法的操 作。圖10顯示兩個資料區塊1010、1020。在該範例中,區 塊包括影像或視訊流資料。各區塊由複數個資料元件列與 行組成。例如,某些影像處理演算法之區塊係八乘八資料 區塊。於此,說明集中於BL〇CK X 1〇1(^BL〇CK γ 1〇2〇 之間的區塊邊,界。顯示之底部兩資料列1012、1014屬於 BLOCK X 1〇1〇。BL〇CK γ 1〇2〇顯示具有頂部兩資料列 1022、1024。各資料列由編號從7至〇的資料元件組成。 SIMD暫存器載有陣列八1〇12、B 1〇14、c 1〇22與〇 1〇24 的像素資料。首先,特徵化區塊邊界。決定跨越區塊邊界 之梯級的大小及方向。可由以下等式代表·· d=(A-4B+4C-D)/8 ° 然後,使用升降斜坡計算陣列B 1〇14與(:1〇22的校正因 數: dl = SIGN(d) x (MAX(〇, ABS(d) - ΜΑΧ(0,2 x (ABS(d) - ^^)))). S8646-960109.doc •46- 1305882 陣列A 1012與D 1024的校正因數計算如下: d2 = clipd 1((A - D) / 4,山 /2)。 其中,絕對值與最大值及裁剪操作係用於計算像素校正 因數dl與d2的數值。符號運算也使用來自第一步的因數(1計 异校正因數dl的符號。校正因數4與(!2係加入像素值或自其 中減去。陣列B 1014與C 1022之邊界像素校正如下: B’ = cliP(B + dl);與 C'= clip(C -屯)· 然後,陣列A 1012與D 1024之像素校正如下: A· = A - d2; D' = D + d2。 dl之計算係稱為升降斜坡之函數。當d等於「強度」時為 峰值,當d等於「2 x強度」時值為零。「強度」之值由量化 梯級之大小決定。一般而言,「強度」約係梯級大小之一半。 函數「clipdlO」裁剪「(A — D)/4」的結果至+或-「七/2」 的絕對值。函數「clip()」裁剪評估結果至值「0」或「255」。 該演算法之具體實施例可使用SIMD指令實施。對於該具體 實施例,可使用pSIGNB4PSIGNW指令實施符號運算。同 樣,可使用PABSB或PABSW實施絕對值操作。在該具體實 施例中,陣列A、B、c、D之多個像素值係載入分別之SIMD 暫存器中。對於一項具體實施例,解塊操作係一次或並行 應用於一個以上之像素行。中間值山與&之多個值係於分別 之SIMD暫存器中使用符號、絕對值及最大值指令計算。結 果「A’」、「B’」、「c’」與「D,」係於分別之SIMD暫存器中 計算。裁剪操作可使用SIMD最大值及最小值指令計算。 上述符號指令之功能係用於該具體實施例之非線性過濾 88646-960109.doc • 47- 1305882 解塊廣算法。可使用編碼技術 該解埦5㈣如Η·263·ΡΕ(}4之技術實施 ,“法之具體實施例,以移除該兩個通用視訊塵縮 =之量化操们丨起的編塊人工因素。藉由在解塊演算法 使^目乘之符號指令,該方案之具體實施例可加速該等 人辱β算法之s十算並降低編碼大+。例如,單一 PSIGN指 令可代替執行類似資料操作所需的多個演算法指令,或無
法操作封包資料的指令,,可改善整體通量,並釋放 處理資源。 匕對於解塊演算法之—項具體實施例,符號指令及絕對值 指令沒有鮮行為。這意味著,對於封包料值指令,具 有值-2“之N位元資料將評估為广。若為封包符號指令, 具有第-來源元件等於-2 n、N位元資料與負第二來源元 件將評估為2“。在某些情形下,需要符號結果,不允許大 於2 η-1的非正值。一種解決方案為,在執行pABs<psiGN 指令前,強制最大負與正值具有同樣的數值。 如下文所述,一項具體實施例的符號與絕對值操作也可 應用於MPEG4解塊演算法。區塊邊界任一侧的十個像素, 五個 η 係代表為:v〇 VI V2 V3 V4 | V5 V6 V7.V8 V9。「|」 代表區塊邊界。首先,特徵化區塊邊界: 計數=P(V0-V1)+ p(Vl-V2)+ p(V2-V3)+ <V3-V4) + ^(V4-V5)+ ^(V5-V6)+ ^(V6-V7)+ ^(V7-V8) + <^(V8 - V9), 其中〆γ) = 1若 ABS(Y) <= THRESHOLD】,否則〆γ) := 〇。 若計數大於或等於THRESHOLD2,使用DC模式,否則使用 88646-960109.doc -48- 1305882 預設模式。區塊邊界也經DC特徵化: 最大值=MAX(V1,V2, V3, V4, V5, V6, V7, V8); 最小值=MIN(V1,V2, V3, V4, V5, V6, V7, V8)。 若(ABS(最大值-最小值)<2 X量化因數),則實施DC相 關之校正步驟2與3,否則不進行校正。對於預設模式,校 正因數計算如下: a3,0 = (2 X V3 - 5 X V4 + 5 X V5 - 2 X V6) / 8; a3,l = (2 x VI - 5 x V2 + 5 x V3 - 2 x V4) / 8; a3,2 = (2 x V5 - 5 x V6 + 5 x V7 - 2 x V8) / 8; a3,0' = SIGN(a3,0) x MIN(ABS(a3,0), ABS(a3,l), ABS(a3,2)); d = CLIP(5 x ( a3,0' - a3,0) / 8, 0, ((V4 - V5) / 2) x 5(ABS(a3,0) <量化因數)), 其中若為真,δ()評估為1,若為假,δ()評估為0。 然後校正邊界像素。函數CLIP(r,p,q)在ρ與q之間裁剪r。 對於DC模式,校正因數計算如下: 若 m < 1,則若 ABS(V1 - VO) < QP,則 pm = V0 ;否則 pm = VI ; 若 1 <= m <= 8 ’ 則 pm = Vm ; 若m > 8,則若ABS(V8 - V9)〈量化因數,則pm = V9,否 則 Pm = V8。 圖11係說明使用SIMD指令執行解塊演算法之一方法之 一項具體實施例的流程圖1100。例如,可使用H.263與 MPEG4壓縮方法之代碼實施該種解塊演算法。在區塊1102 88646-960109.doc •49- 1305882 接收第一區塊與第二區塊之像素資料。兩個區塊之間的區 塊邊界係於區塊1140特徵化。在區塊1106,藉由使用相乘 之封包符號運算的指令及封包絕對值操作的指令,計算封 包像素資料之一或多個校正因數。當計算解塊演算法之校 正因數時使用PSIGN與/或PABS指令可減少所需的非SIMD 指令的數目’並提高處理資源之效率。例如,根據本發明 之一項影像處理演算法之解塊序列之具體實施例使用 PSIGN操作決定校正因數的符號,PABS係用於計算校正因 數的數值。在區塊1108,第一區塊與第二區塊之邊界像素 之校正係使用以相乘符號運算或絕對值操作計算之一或多 個校正因數。 至此’揭示了執行符號及相乘操作之方法、裝置及指令。 雖然附圖中已描述及呈現特定範例性具體實施例,但是應 明白’該等具體實施例僅僅是解說本發明而不是限制本發 明’並且本發明不限於所顯示及說明之特定結構及配置, 因為熟知技術者經研究本文可進行各種其他修改^在諸如 該項技術之技術領域,成長迅速並且進一步之發展難以預 測’如藉由促成技術進步所獲得之促進,可方便地修改所 揭示之具體實施例之配置及細節而不背離本發明之原理及 所附申請專利範圍的範疇。 【圖式簡單說明】’ 本發明係藉由實例解說,但不限定於附圖之圖示: 圖1A係根據本發明之一項具體實施例之與一處理器形成 88646_960109.doc -50- 1305882 之電腦系統的方塊圖,該處 符號運算之指令; Μ括“單w執行相乘 圖1Β係根據本發明之一替代 系統之方塊圖; 替代具體實施例之另—範例電脂 圖ic係根據本發明之另_替代具料施例之又另 電腦系統之方塊圖; & 圖2係根據本發明之包括執 砧一话目胁叙 相策付就運具的邏輯電路 的-員具體實施例之處理器之微架構的方塊圖; 圖3 Α說明根據本發明之— 中各種封包資料類型之代表;實施例之多媒體暫存器 圖職明根據—替代具體實施例之封包資料類型; 圖3C說明根據本發明之一 ρ ^ ^ η + ^ 貝她例之多媒體暫存器 中各種已標號及未標號之封包資料類型之代表; 圖3D說明操作編碼(操 , 拾武之一項具體實施例; 圖職明—替代之操作編碼(操作碼)格式; 圖3F說明另-替代之操作編碼格式; 圖4係根據本發明在封包 、羅絡& sa 枓運算70上執行符號運算之 邏輯的一項具體實施例的方塊圖; 圖5說明根據本發明之一項具體實施例之對資料元件之 相乘符號運算的操作; 圖6A係根據本發明執杆您 ㈣仃相運4之電路的_項具體實施 例的方塊圖; 圖6B係根據本發明劲#效 ㈣仃付號運“電路的另一項具體實 施例的方塊圖; 88646-960109.doc •51- j3〇5882 圖7說明根據本發明之一項具體實施例對複數個資料元 件進行之封包符號指令操作; 圖8A係說明執行符號運算之一方法之一項具體實施例的 流程圖; 圖8B係說明執行符號運算之一方法之另一具體實施例的 流程圖; 圖9係在封包資料運算元上執行絕對值操作之邏輯之一 項具體實施例的方塊圖; 圖10說明根據本發明使用SIMD指令之解塊演算法的操 作;以及 圖11係說明使用SIMD指令執行解塊演算法之一方法之 一項具體實施例的流程圖。 【圖式代表符號說明】 100 系統 102 處理器 104 快取記憶體 106 區塊 108 執行單元 109 封包指令集 110 處理器匯流排 112 圖形卡 114 加速圖形埠互連 116 記憶體控制器集線器 118 記憶體介面 88646-960109.doc 1305882 120 122 124 126 128 130 134 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 記憶體 集線器介面匯流排 資料記憶體 無線收發器 固件集線器(快閃BIOS) I/O控制器集線器 網路控制器 區塊 匯流排 執行單元 封包指令集 解碼器 暫存器檔案 同步動態隨機存取記憶體控制 靜態隨機存取記憶體控制 叢發快閃記憶體介面 個人電腦記憶體卡國際協會/小型快閃卡控制 液晶顯示器控制 直接記憶體存取控制器 替代匯流排主介面 I/O匯流排 I/O橋接 通用非同步接收器/發射器 通用串列匯流排 88646-960109.doc •53- 1305882 157 藍芽無線UART 158 I/O擴展介面 159 處理核心 160 資料處理糸統 161 SIMD共處理器 162 執行單元 163 指令集 164 暫存器檔案 165 解碼器 165B 解碼器 166 主處理器 167 快取記憶體 168 輸入/輸出系統 169 無線介面 170 處理核心 200 處理器 201 前端 202 微指令排程器 203 無序執行引擎 204 微指令排程器 206 微指令排程器 208 暫存器檔案 210 暫存器檔案 211 執行區塊 88646-960109.doc 54 1305882 212 214 216 218 220 222 224 226 228 230 232 234 310 320 330 341 342 343 344 345 346 347 348 349 執行單元 執行單元 執行單元 執行單元 執行單元 執行單元 執行單元 指令預取器 指令解碼器 追蹤快取記憶體 微碼ROM 微指令佇列 封包位元組格式 封包字元 封包雙字元 半封包 單一封包 雙封包 未標號封包位元組代表 標號封包位元組代表 未標號封包字元代表 標號封包字元代表 未標號封包雙字元代表 標號封包雙字元代表 88646-960109.doc -55- 1305882 360 361 362 363 364 365 366 370 371 372 373 374 375 376 378 380 381 382 383 384 385 386 387 388 操作碼格式 搁 搁 Μ Ο D搁 來源運算元識別項 來源運算元識別項 目的地運算元識別項 操作碼格式 搁 搁 MOD搁 來源運算元識別項 來源運算元識別項 目的地運算元識別項 可選前置碼位元組 操作編碼(操作碼)格式 條件欄 CDP操作碼欄 棚 棚 來源運算元識別項 目的地運算元識別項 搁 搁 88646-960109.doc -56- 1305882 389 CDP操作碼欄 390 來源運算元識別項 410 第一運算元 420 第二運算元 430 符號計算邏輯 440 結果 A0-A7 資料元件 B0-B7 資料區段 510 第一資料元件 512 數目 520 第二資料元件 522 數目 530 符號運算 540 結果 600 電路 602 SRC X 603 0 604 SRC Y 605 SRC Y 606 多工器 608 多工器 610 多工器輸出 612 多工器輸出 613 SRC Y 614 加法器 88646-960109.doc -57- 1305882 616 0 至 SRC Y 618 多工器 620 符號位元 622 SIGN 624 偵測器電路 626 輸出信號 628 輸入邏輯NOR閘極 630 結果 632 NOR閘極輸出 634 控制信號 650 電路 701 第二運算元 702 第二運算元資料元件 711 第一運算元 712 第一運算元資料元件 721 結果 722 資料元件位置 728 第二資料元件位置 729 乘積 800 流程圖 910 來源運算元 920 絕對值計算邏輯 930 結果 1012 陣列A 88646-960109.doc -58- 1305882
1014 陣列B
1022 陣列C
1024 陣列D 1100 流程圖
88646-960109.doc -59 -

Claims (1)

1305S8Sl28278號專利申請案 β鼻疋 中文申請專利範圍替換本(97年4月) ’ /斤'Α …袖l 拾、申請專利範圍: 硬體裝置,其包括 1. 一種實施一相乘之符號運算之電腦 一處理器,包含: 一儲存單元;及 執行單元,其係用於執行包含於在該處理器上運作之 一程式中的—組—或多個指令,該組指令包含-第一運 算元:執行將一第一輸入運算元與—第二輸入運算元之 -運算符號相乘之-運算,其中該等第_及第二運算元 以二元數字表示且依據在該電腦處理器上運作之該程式 而變化,並回應該第—指令將具有以下說明之一值的一 結果儲存至該儲存單元: 則為該第一運算元; 則為零;及 則為一負化之該第一運 若該第二運算元為一正值 若該第二運算元為一零值 若該第二運算元為一負值 险 一 算70。 2. 3. 如申請專利範圍第1項之裝置1中該第-運算元為包括 一第一複數個封包資料元件之—第—封包運算元,並且 其中該第二運算元係包括—第:複數個封包資料元件之 一第二封包資料運算心及進—步其中該結果包括―第 三複數個封包資料元件’各該第三複數個封包資料元件 設定至該第一複數個封包資料 乘該第二複數個封包資料元件 號之一符號數值之一乘積。 如申請專利範圍第1項之裝置, 几件之一第一資料元件相 之一對應資料元件之一符 其中該第—運算元係一來 88646-970424.doc 1305882 源/目的地運算元’其中該來源目的地運算元係取自該儲 存單元以汁算該結果並由該結果重寫。 4·如申明專利範圍第2項之裝置’其中該儲存單元包括-暫 存姦1且其中該第二運算元係一暫存器或一記憶體運 ΑΛ· 一 算兀。 5. 如申請專利範圍第4項之裝置,其中該第-運算元係-暫 存器運算元。
6. f中請專利範圍第1項之裝置,其中該第-指令係封包符 唬指令,並且其中該裝置進一步包括: 一加法器電路; /合之一第—輸入多工器,以向該加法器電路提供一 弟-輸入,該第一多工器用於在該第一運算元與一補充 第一運算元之間選擇; 一㈣測n ’其係用於回應該第二運算元輸出一選擇 信號;及
耦-帛-輸入多工器’以向該加法器電路提供 第二輸入’該第二多工器用於回應該指令之一控制信 在該第二輸入運算元及一零值之間選擇。 7.如申請專利範圍第6項之裝置,其進_步包括. 搞合之-第三多工器’以接收該第—輸人運算元、 第二輸入運算元及包括該第一輸入運算元之一補充值 一加法器輸出; 二運算元之一數值及一 二運算元或該加法器輸 選擇邏輯,其係用於根據該第 符號值選擇該第一運算元、該第 88646-970424.doc -2- 1305S 82 出之—,其中: 第若二運算元之該數值為-零,該選擇邏輯使錄 第一運舁元中選; ,以第—運算凡之該數值係一非零值且該第二運曾 二之該符號值為正’則該選擇邏輯使該第-運算元: 選,以及 r 元第「運算凡之4數值係非零值且該第二運算 選。。符號值為負’則該選擇邏輯使該加法器輸出中 8. 如申請專利範圍第3項之费 一解M h 其中該執行單元包括: 解^ ’其係用於解竭該第—指令; 一第—實體暫存器檔案, -第-眘a+ 整數操作;以及 第-實體暫存器檔案,其 嗜笫-奢挪私备 Γ曰的地運异7L在 _亥弟—實體暫存器標案中指定一 在 係一整數值。 D /、中該結果值 9. 如:請專利範圍第8項之裝置, 指令,且其中該解碼器將該符號指令U日1 一符號 作以便由—第一執行單元執行5辱成—付號微操 結果儲存㈣第_實體暫存 仃早几係與執行將 作之一整數執行單元分開之單元〃複數個純量整數操 10·如中請專利範圍第!項之裝置早二。 封包資料指令’且其中該結果包括::指令係-第- 包資料元件,各兮楚 ^ ^ 弟—複數個結果封 干各該第-複數個結果 值,其等於複數個筮—办、E 匕貝枓7L件具有一 源運算元資料元件之一對應者 88646-970424.doc 1305882 相乘複數個第二來源運曾开眘 ― 水席遲^70貝科凡件之一對應者之一對 應符號值。 如申請專利範圍第10項之裝置,其中為回應一第二指 令’:等執行單元將包括—第二複數個結果封包資料元 件之-第二結果儲存至該儲存單元,各該等第二複數個 結果封包資料元件係複數個來源封包資料元件之一對應 者之一絕對值。 12. 13. 如申請專利範圍第1項之裝置,#中該裝置係為以實施於 電月a硬體中在—機||可讀儲存媒體上之機器可讀資料之 形式呈現,該機器可讀資料係可製造以提供該裝置。 一種實施一相乘之符號運算之處理器,其包含: 一暫存器檔案,其係能_存封包資料元件;及 -執仃早7L ’其係搞合至該暫存器檔案並回應複數個 封包資料指令在該暫存器標案巾儲存值,該執行單元回 應該等複數個封包資料指令之_第—指令,將包括複數 個結果資料元件之-結果儲存至該暫存器㈣,其中, :於各該第一複數個來源資料元件及該第二複數個來源 資料元件之任—值,該各該複數個結果資料元件係等於 一第一複數個來源資料元件之—對應者相乘—第二複數 個來源資料元件之一對應者之一符號值 其中該執行單元藉由將包含一第二複數個結果資料元 件之H㈣存至該暫存器㈣中㈣應該複數個 封!:資料指令之—第二指令,其中每個該第二複數個結 果貢料元件等於第三複數個來源資料元件之一相應指令 88646-970424.doc 1305882 的一絕對值, ’、中該複數個#包資料指令之該第一指令係一符號指 7及該複數個封包資料指令之該第二指令係一絕對值指 令’且其中該處理器進一步包括: 用以解碼該符號指令成一第一微運算及解 碼該絕對值指彳成一第二微運算 多工器’用以接收輸入,該等輸入包括該第一複數 個來源資料元件之一第一資料元件的一第一值,對應於 該第一資料元件的該第二複數個來源資料元件之一第二 "貝料元件的一第二值,及該第一複數個來源資料元件之 該第肓料元件的該第一值之一負化的一第三值;以及 輸出選擇邏輯,可以選擇該多工器的輸入之一輸入以 輸出作為對應該第一及第二資料元件的一資料元件位置 之一符號運算結果。 14. 一種實施於電腦硬體中之方法,其包括: 執行包含於在一電腦處理器上運作之一程式中的一組 一或多個指令,該組指令包含: t藉由一執行單元執行時,擷取一指令,其實行將— 具有一第一運算元數值及一第一運算元符號的第一輸入 運算元與一具有一第二運算元數值及該第二算元符號之 第二輸入運算元的一運算元符號相乘之一運算,其中 § 亥等第一及第二運算元以二元數字表示且依據在該電腦 處理器上運作之該程式而變化; 决疋該第·一運异元是否為正,然後回應該指令儲存今 88646-970424.doc 1305882 第一運算元當作一結果; 決定該第二運算元是否為負’然後儲存等於該第、室 算元之負-次冪的-值當作該指令之'结果;及第—運 之=第二運算元是否為零’然後儲存零當作該指令 15. 16. 17. 18. 19. 其中該指令係—封包符 如申請專利範圍第14項之方法 號指令。 …月寻利範圍第15項之方法,纟中該第 第二運算元係各為分別包括一第一與第二複數個:料 件之封包資料運算元。 Ί 如申請專㈣㈣16項之方法,其進—步包括將該封 符號指令解碼成一第一微指令。 、 如申請專利範圍第17項之方法,其中該第 ..,, <弄凡之玲 決疋包括評估該第二運算元之各個別資料元件。 μ -種實施-相乘之符號運算之電腦硬體處理系統 括: /、包 一記憶體,其係用於儲存包含在一程式中之一組、 多個指令’該組指令包含—第一封包資料指令,::或 時,用以實行將一包括第—複數個來源資料元件2一行 -封包資料輸入運算元與包括第二複數個來源資料:第 之一第二封包資料的一運算元符號相乘之運算,其件 等第一及第三資料輸入運算元以二元數字表:且该 據在一電腦處理器上運作之該程式的要求而變化、厂:依 一用以處理該程式之電腦處理器,其包 一 ' ^ 祝式中 88646-970424.doc I3〇5882 之一組一或多個指令,用- ;執行該第一封包資料指令, 並以回應方式在一處理琴 7 果封早元儲存—包括複數個結 果封包貧枓7L件的結果封包眘 ,,^μ 貝枓,對於該第二複數個來 源貝枓兀件之非零者,各呤 ㈣蜜、t^ 各該4複數個結果封包資料元件 係该弟一複數個來源資料元 元件之對應者之 …亥第-複數個來源資料 ,+ 函數,並且,對於該第二複數 個來源資料元件之該等對應者之單—與非單—值,係兮 第-複數個封包資料元件之僅該對應者之—數值的一函 數0 20.:申請專利範圍第19項之系統,其中該第-封包資料指 令係—封包符號指令’用以引起對應於該第-複數個來 源貧料兀件之資料元件位置的符號運算。 21·:申請㈣範圍第2㈣U統,其中該複數個結果封包 貝料凡件重寫-儲存該第—封包資料輸人運算元之處理 器儲存單元。 22· -種實施於電腦硬體中之—機器可讀儲存媒體,其提供 包含在該電腦硬體上運作之一程式中之一組一或多個指 令,當執打時,該組指令致使該電腦硬體實行一相乘之 符號運算,包括·· 執行S亥組一或多個指令包含: 當藉由一執行單元執行時,擷取一指令,其實行將 -具有-第-if算元數值及一第一運算元符號的第一 輸入運算元與一具有一第二運算元數值及該第二算元 符號之一第二輸入運算元的一運算元符號相乘之一運 88646-970424.doc !3〇5882 示且依 真’其中該等第一及第;^運算元以二元數字表 據在該電腦處理器上運作之該程式而變化; 決定該第二運算元是否為正,然後回應該指令儲存 該第一運算元當作一結果; 子 決定該第二運算元是否為負,然後儲存等於該第— 運算元之負一次幂的一值當作該指令之—結果;及 決定該第二運算元是否為零,然後儲存零當作該指 令之一結果。 23·如申請專利範圍第以項之機器可讀儲存媒體,其中該第 —輸入運算元為包括一第一複數個封包資料元件之—第 -封包運算元,並且其中該第二輸入運算元係包括—第 —複數個封包資料元件之一第二封包資料運算元,且進 其中該結果包括一第三複數個封包資料元件,各該 第三複數㈣包資料元件設定至該第—複數個封包資^ 几件之—第—資料元件相乘該第二複數個封包資料元杜 之—對應資料元件之-符號之—符號數值之—乘積。 •如申請專利範圍第22項之機器可讀儲存媒體,其 地:二運:7"係一來源/目的地運算元’其中該來源目的 係取自-儲存單元’以計算該結果並由該結果 •如申請專利範圍第23項 六„ _ a wJ躓儲存媒體,其中一 子早兀包括一暫存器,並且其 暫存H a 第一輸入運算元待 货存益或—記憶體運算元。 26.如申請專利範 固第2項之機15可讀儲存媒體,其中該 88646-970424.doc 1305882 久第封包資料指令,其中該結果包括一第、 件具有件,各該第—複數個結果封包資料元 -對應 ϋ ,其等於複數個第一來源運算元資料元件之 ,、、目乘複數個第二來源運算元資料元件之— 者之-對應符號值。 干(對應 27. 28. 29. 種只施-相乘之符號運算之電腦硬體處理 一儲存單元;及 ,、I括· 執仃單7L,其係用於執行包含於在該處理器上運作之 一程式中的-組—或多個指令,該組指令包含 令以實行將一第一耠瞀一 才日 罘輸入運算疋與一第二輸入運算元夕— 運算符號相乘之—,置曾甘 卜 、一-:瑕之一運算,其中該第一及第二輸入運算元 、π數字表不且依據在該處理器上運作之該程式而 化’該第一運直;目士 异兀具有一第一數值及一第一運算元初始 符',該第二運算元具有一第二數值及該第二運算元‘ 號°亥等執行單元回應該第-指令向該儲存單元儲存_ 值若°亥第一運算元係一正運算元,則該結果具有該第 一數值及該第—運算元初始符號,若該第二運算元係_ 零運算兀,則該結果為零,若該第二運算元係一負運算 元,則該結果具有該第一數值及係該第一運算元初始符 號相乘該第二運算元符號之一乘積的一結果符號。 如申請專利範圍第27項之電腦硬體處理器,其中該儲存 單兀包括一暫存器,並且其中該第二運算元係—暫存器 或一記憶體運算元。 Β 一種在電腦硬體中實施一相乘之符號運算之裝置,其包 88646-970424.doc -9- 1305882 括: —電腦處理器,包含: —儲存單元;及 執灯單7G ’其係用於執行包含於在該電腦處理器 =之-程式中的—、组—或多個指令,該組指令包含 封匕才"以實行將一具有第一複數個資料元件之 封包輸人運算元與—具㈣二複數個資料元件之 封包輸人運算元相乘之—運算,其中該第—及第_2 輸入運算元以二元數 一封包 几數字表不且依據在該電腦處理 作之該程式而變化,兮馇 °上運 料-此, 該弟一運算元之該等第一複數個資 f+TM牛具有_第一數值及一第一運 唬該第一運算疋之該等第二複數個資料元件之各資料 凡件具有-第二數值及1二運算元符號,該等執行單 元回應該第一封包指令向 Θ結果運“之各㈣元件位 …予值至該儲存單元’若該S二運算S係—非 算7L ’則忒結果具有該第—數值及係該第一運算元符 與:第,運算元符號之—函數的一結果符號,若該第二 運算兀係-零運算兀’則該結果為零。 3〇·如申請專利範圍第29項之震置,其中該結果運算元係由 -第三複數個資料元件組成’各該第三複數個資料元件 設定至該第-複數個資料元件之―第—資料元件相乘該 第二複數個資料元件之1應資料元件之-符號之-符 號數值之一乘積。 3L如申請專利範圍第3〇項之農置,其中該儲存單元包括一 88646-970424.doc •10- !3〇5882 暫存器,並且其中該第二運算元係 運算元。 器或一記憶 體 32. 33. 34. 如申請專利範圍第3 1項 暫存器。 如申請專利範圍第32項 暫存器也係該儲存單元 之裝置,其中該第— 之裝置,其中該第— 運算元係 運算元之該 種實行-相乘之符號運算之構件,其包括: 執盯構件,其係用於執行包含於在該處理器上運作之 程式中的一組一或多個指令,包含: 榻取構件,當藉由—執行單元執行時,擷取—第一 :包指令’實行_運算以將一具有一第—複數個來源 >料元件之-第一冑包輸入運算元與一具有一第二複 數個來源資料元件之—第二封包輸人運算元的一運算 元符號相乘 其中該等第一及第二封包輸入運算元係 二元數字且依據在該電腦處理器上運作之該程式而變 化; 决定構件,用以決定該第二封包輸入運算元是否為 正,然後回應該第一封包指令儲存該第—封包輸入運 异元當作一結果; 決足構件,用以決定該第二封包輸入運算元是否為 負,然後儲存等於該第一封包輪入運算元之負一次冪 的一值當作該第一封包指令之—結果;及 決定構件,用以決定該第二封包輸入運算元是否為 零’然後儲存零當作該第一封包指令之一結果。 88646-970424.doc • 11 · I3〇5882 35·如申請專利範圍第34項之構件,其中 如果在該第二封包輪入運算 t Pen ^ τ ^ ^ 中 特別元件位置之一 貝抖兀件值為正,然後回應該第— 封句舲λ、富瞀-々 丄 匕知令儲存從該第一 了包輪入運算疋之一相對應的 果; 冲及*件之一值當作一結 如果在該第二封包輸入運算元— 2元件值為1,然後儲存等於從該第 的忒相對應資料π件之該值 4 特別元件位置之該結果; 、- 人冪的-值當作該 如果在該第二封包輸入運算元 咨*,L _ & T 特別兀件位置之一 資枓几件值為零,然後儲存零當 果。 Χ将別兀件位置之該結 36.如申請專利範圍第35項之構件, 眘粗-# > 亥第—複數個來源 =件之母個資料元件具有一對應的第—數值及一對 應的第-符號,且該第二複數個來源資料元件之各資料 凡件具有—對應的第二數值及—對應的第二符號。 37·如中請專利範圍第36項之構件,進—步包括解碼該第一 封包指令成一第一微指令。 38·如申請專利範圍第37項之構件,其中該第 輸入運 ί =定包括評估該第二封包輪入運算元之各個別 的 88646-970424.doc -12-
TW092128278A 2003-06-30 2003-10-13 A method, apparatus, system,storage medium and means for performing a sign operation that multiplies TWI305882B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/610,929 US7539714B2 (en) 2003-06-30 2003-06-30 Method, apparatus, and instruction for performing a sign operation that multiplies

Publications (2)

Publication Number Publication Date
TW200500878A TW200500878A (en) 2005-01-01
TWI305882B true TWI305882B (en) 2009-02-01

Family

ID=33452633

Family Applications (1)

Application Number Title Priority Date Filing Date
TW092128278A TWI305882B (en) 2003-06-30 2003-10-13 A method, apparatus, system,storage medium and means for performing a sign operation that multiplies

Country Status (10)

Country Link
US (1) US7539714B2 (zh)
EP (2) EP1496432A3 (zh)
JP (1) JP4869552B2 (zh)
KR (1) KR100841131B1 (zh)
CN (1) CN1577249B (zh)
BR (2) BR0306094A (zh)
MX (1) MXPA03011899A (zh)
RU (1) RU2275677C2 (zh)
SG (1) SG144700A1 (zh)
TW (1) TWI305882B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9946542B2 (en) 2012-03-15 2018-04-17 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9952862B2 (en) 2012-03-15 2018-04-24 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424501B2 (en) 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
US7729426B2 (en) * 2004-09-20 2010-06-01 Divx, Inc. Video deblocking filter
US7475103B2 (en) * 2005-03-17 2009-01-06 Qualcomm Incorporated Efficient check node message transform approximation for LDPC decoder
US7747088B2 (en) * 2005-09-28 2010-06-29 Arc International (Uk) Limited System and methods for performing deblocking in microprocessor-based video codec applications
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US20090113174A1 (en) * 2007-10-31 2009-04-30 Texas Instruments Incorporated Sign Operation Instructions and Circuitry
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8041927B2 (en) * 2008-04-16 2011-10-18 Nec Corporation Processor apparatus and method of processing multiple data by single instructions
JP5490710B2 (ja) * 2008-10-24 2014-05-14 シャープ株式会社 表示装置および表示装置の駆動方法
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
CN105227960B (zh) * 2010-07-14 2018-06-05 株式会社Ntt都科摩 用于视频编码的低复杂度帧内预测
RU2467377C1 (ru) * 2011-04-19 2012-11-20 ОАО "Концерн "Моринформсистема-Агат" Способ и устройство умножения чисел в коде "1 из 4"
RU2461867C1 (ru) * 2011-06-23 2012-09-20 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" Реконфигурируемый вычислительный конвейер
CN104081341B (zh) * 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9207941B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses, and methods for reducing the number of short integer multiplications
CN103995475B (zh) * 2014-05-16 2016-05-18 北京航空航天大学 一种柔性嵌入式被测设备模拟器
US20160125263A1 (en) 2014-11-03 2016-05-05 Texas Instruments Incorporated Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
CN108733347B (zh) * 2017-04-20 2021-01-29 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
RU2653310C1 (ru) * 2017-05-24 2018-05-07 федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный университет" (ФГБОУ ВО "ВГУ") Устройство для умножения числа по модулю на константу
CN107729990B (zh) * 2017-07-20 2021-06-08 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行正向运算的装置及方法
RU2666285C1 (ru) * 2017-10-06 2018-09-06 Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" (ВятГУ) Способ организации выполнения операции умножения двух чисел в модулярно-логарифмическом формате представления с плавающей точкой на гибридных многоядерных процессорах
US11614920B2 (en) * 2020-05-07 2023-03-28 Meta Platforms, Inc. Bypassing zero-value multiplications in a hardware multiplier

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1398092A (fr) * 1964-03-26 1965-05-07 Saint Gobain Nouveau circuit électronique de commutation
FR1509926A (fr) * 1966-03-21 1968-01-19 Saint Gobain Techn Nouvelles Circuit multiplicateur scalaire
JPS63310023A (ja) * 1987-06-11 1988-12-19 Matsushita Electric Ind Co Ltd 符号付固定小数点乗算装置
NL9001608A (nl) * 1990-07-16 1992-02-17 Philips Nv Ontvanger voor meerwaardige digitale signalen.
JPH04155503A (ja) * 1990-10-19 1992-05-28 Matsushita Electric Ind Co Ltd ニューロ制御装置
US5128890A (en) * 1991-05-06 1992-07-07 Motorola, Inc. Apparatus for performing multiplications with reduced power and a method therefor
US5349545A (en) * 1992-11-24 1994-09-20 Intel Corporation Arithmetic logic unit dequantization
US6023489A (en) * 1995-05-24 2000-02-08 Leica Geosystems Inc. Method and apparatus for code synchronization in a global positioning system receiver
US6038583A (en) * 1997-10-23 2000-03-14 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products
US6490607B1 (en) * 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
US6243803B1 (en) * 1998-03-31 2001-06-05 Intel Corporation Method and apparatus for computing a packed absolute differences with plurality of sign bits using SIMD add circuitry
US6351293B1 (en) * 1998-05-18 2002-02-26 Sarnoff Corporation Decision directed phase detector
US6292814B1 (en) * 1998-06-26 2001-09-18 Hitachi America, Ltd. Methods and apparatus for implementing a sign function
US6397240B1 (en) * 1999-02-18 2002-05-28 Agere Systems Guardian Corp. Programmable accelerator for a programmable processor system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9710267B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9772843B2 (en) 2012-03-15 2017-09-26 International Business Machines Corporation Vector find element equal instruction
TWI617975B (zh) * 2012-03-15 2018-03-11 萬國商業機器公司 用於計算至一指定記憶體邊界之距離之指令之電腦程式產品、電腦系統及方法
US9946542B2 (en) 2012-03-15 2018-04-17 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9952862B2 (en) 2012-03-15 2018-04-24 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9959117B2 (en) 2012-03-15 2018-05-01 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9959118B2 (en) 2012-03-15 2018-05-01 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary

Also Published As

Publication number Publication date
MXPA03011899A (es) 2005-01-13
EP2284694B1 (en) 2013-05-15
US7539714B2 (en) 2009-05-26
CN1577249B (zh) 2010-04-14
KR100841131B1 (ko) 2008-06-24
BR0306094A (pt) 2005-05-17
EP1496432A3 (en) 2007-12-12
CN1577249A (zh) 2005-02-09
EP2284694A1 (en) 2011-02-16
JP4869552B2 (ja) 2012-02-08
KR20050005729A (ko) 2005-01-14
RU2003137709A (ru) 2005-06-10
SG144700A1 (en) 2008-08-28
TW200500878A (en) 2005-01-01
EP1496432A2 (en) 2005-01-12
US20040267858A1 (en) 2004-12-30
JP2005025719A (ja) 2005-01-27
RU2275677C2 (ru) 2006-04-27
BRPI0306094B1 (pt) 2017-06-27

Similar Documents

Publication Publication Date Title
TWI305882B (en) A method, apparatus, system,storage medium and means for performing a sign operation that multiplies
US10474466B2 (en) SIMD sign operation
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
US10146541B2 (en) Processor to execute shift right merge instructions

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees