TWI345703B - A data processing apparatus and method for moving data between registers and memory - Google Patents

A data processing apparatus and method for moving data between registers and memory Download PDF

Info

Publication number
TWI345703B
TWI345703B TW093124106A TW93124106A TWI345703B TW I345703 B TWI345703 B TW I345703B TW 093124106 A TW093124106 A TW 093124106A TW 93124106 A TW93124106 A TW 93124106A TW I345703 B TWI345703 B TW I345703B
Authority
TW
Taiwan
Prior art keywords
data
data elements
registers
register
memory
Prior art date
Application number
TW093124106A
Other languages
English (en)
Other versions
TW200527203A (en
Inventor
Simon Andrew Ford
Dominic Hugo Symes
Andrew Christopher Rose
David Raymond Lutz
Christopher Neal Hinds
Original Assignee
Advanced Risc Mach Ltd
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 Advanced Risc Mach Ltd filed Critical Advanced Risc Mach Ltd
Publication of TW200527203A publication Critical patent/TW200527203A/zh
Application granted granted Critical
Publication of TWI345703B publication Critical patent/TWI345703B/zh

Links

Classifications

    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

1345703 九、發明說明: 【發明所屬之技術領域】 概言之,本發明係關於一種在暫存器與記憶體之間移動 資料之資料處理設備及方法。 【先前技術】 當需於一些個別資料元件,執行一特定資料處理操作 時’加速此一操作性能之一已知方法,乃是利用單一指令多 φ 重資料(Single Instruction Multiple Data,SIMD)方法。根 據SIMD方法’多個資料元件乃並排置於一暫存器内,且接 著於這些資料元件平行執行操作。 然而’僅當資料元件可以適當順序安排於暫存器内,而 無顯著過荷(overhead)時,才可完整實現SIMD方法之實 際性能優點》通常,於執行SIMD操作前,相關資料元件將 需由記憶體載入至暫存器,且通常SIMD操作所需之資料元 件,並未連續地位於記憶體位址空間内。例如,於記憶體之 =料’可表示為圖素數值之紅色、綠色與藍色構件(· 貝料),且因此當資料由記憶體—連續區塊載入至一暫存器 時’暫存器内之資料元件亦將表示紅色、綠色與藍色= (components),對於每個圖素重複。可能希望於所有操取 之紅色構件執行-特定操作,且因此將產生如何安排紅色構 件,使得SIMD操作,得以接著應用於其上之問題。 根據一已知技術,來自記憶體一連續區塊之資料(包含 5 1345703 欲接受SIMD處理所需之資料元件),乃由記憶體載入至 或多個暫存器。接著,若暫存器内之每一資料元件,視為 據一不同處理徑,處理器可安排為以不同方式於不同徑 作,以執行特定資料元件所需之SIMD處理。或者,對於 定操作,可發展某些自訂指令。雖然使用這些技術可避免 執行SIMD操作前,需重新排序資料,這些方法相當複雜 且顯著地增加程式碼,乃因對於不同操作,需定義不同指 及/或過程。因此,此類方法無法做為一般解決方案。 此外,可知就所浪費之資源頻寬而言,此類方法呈現 大量重複。例如,若一特定暫存器具有儲存八個資料元件 能力,但暫存器内一些位置含有不接受SIMD操作之資料 件,接著將無法藉由使用SIMD操作,獲得最大可能優點 例如於一特定範例,若一特定暫存器内,僅四個資料元件 接受SIMD操作,則僅利用一半暫存器所支援之可能頻寬 另一習知技藝方法,乃是由記憶體載入所需資料,以 述相同方式載入至一或多個暫存器,但接著利用由額外指 所指定之某些重新安排操作,以重新安排資料,使得欲接 SIMD操作之資料元件,乃並排放置於一或多個暫存器内 雖然此方式接著允許隨後之SIMD操作,可最大化地利用 獲得之暫存器頻寬,其具有一顯著性能影響,乃由於執 SIMD操作前,需執行一或多個進一步指令,以依所需重 安排資料。此可能顯著不利地影響藉由使用SIMD操作所 佔 操 特 於 令 之 元 〇 將 〇 上 令 受 0 可 行 新 欲 1345703 實現之可能優點。 於向量處理之不同技術領域,已知具有載入指令,可藉 由指定一起始位址與一步距(stride ),由記憶體内非連續位 置收集個別資料元件。例如,此可使得由一特定位址開始之 每第三個資料元件,載入至暫存器。亦可提供相似之儲存指 令。 此一方式可有利地用於向量處理系統,因此類系統於記 憶體系統内通常未利用快取(caches ),且通常未尋求存取記 憶體之連續區塊。因此,實施此類步距功能所需之載入/儲存 硬體產生之增加複雜度,視為值得的。 然而,可對於特定暫存器内並排放置之資料元件,執行 稍早所述之SIMD操作之一資料處理系統,通常希望存取記 憶體之連續區塊,且因此其將不希望增加基本載入/儲存硬 體之複雜度,以支援此類步距功能。例如,考慮稍早之範例, 其中資料表示圖素之紅色、綠色與藍色構件,接著其可能希 望對於特定圖素序列,存取紅色、綠色與藍色.資料,且這些 資料元件通常將儲存於記憶體之一連續區塊。雖然增加載入 /儲存單元之複雜度以支援步距功能,可能使得紅色構件聚 集至一特定暫存器,藍色構件聚集至另一暫存器,且綠色構 件聚集於另一暫存器,此將需對於每個構件,發佈個別指 令,且進一步地將顯著增加所需之記憶體存取數目,以擷取 這些資料。尤其,可知於此範例,每一資料元件由記憶體之 1345703 非連續位置存取,且因此對於每一資料元件,可能需一個別 ; 存取,然而實際上所需資料乃佔據記憶體之一連續區塊。因 此,將瞭解利用此一方式,不僅將增加載入/儲存硬體之複 雜度,且亦將對於資料可存取之速度,具有一非常顯著之不 利衝擊。 因此,將需提供一種改進之技術,以於指定暫存器與 記憶體連續區塊間移動資料元件,以支援有效率之SIMD處 理操作。 0 【發明内容】
根據本發明之第一目的,乃提供一種資料處理設備,包 含:一暫存器資料儲存庫,具有複數操作為保留資料元件之 暫存器:一處理器,操作為對於至少一暫存器内所存取之多 個資料元件,平行執行一資料處理;一存取邏輯,操作為回 應一單一存取指令,以於指定暫存器與記憶體之連續區塊 間,移動複數資料元件,其中,資料元件乃以具有一結構格 式之一結構陣列保留,結構格式具有複數構件;一單一存取 指令,辨識结構格式中之構件數目;以及一存取邏輯,操作 為當其移動時,重新安排複數資料元件,使得每一指定暫存 器,保留一構件之資料元件,且於記憶體中,資料元件乃以 此結構陣列保留。 根據本發明,乃提供一處理器,操作為對於至少一暫存 器内所存取之多個資料元件,平行執行一資料處理操作。因 8 1345703 此,處理器可對於資斜分I批/ 邏輯_操作。亦提供-存取 ' 早一存取指令,以於指定暫存器愈- 續區塊間,移動複數資料 /、記憶體連 及致貢料7C件。其十資料元件 格式之結構陣对儲存。社 ,、β構 ^構格式具有複數構件。 稍早之紅色、綠色輿駐洛 考慮 …… 件範例,若希望於紅色、綠 件。相同地,若視為具三個構 心體之資料表示複數,每個複且 數與一虛數部分,接菩於+ β Χ、 接者於此範例之結構格式, 件,㈣Μ㈣# # U 了具W兩個構 同操作。 ㈣件,假設於這些構件需執行不 根據本發明,罝_ — Λ 早-存取和令乃辨識結構格式内之構件數 目。此外’存取邏輯操作為當其移動時 使得每個指定暫存g蚀六A 女排資料7C件’ …暫存β儲存-構件之資料元件,同時於記憶體 中,資料兀件乃以此結構陣列儲存。 " 依照此-方式,藉由自記憶體之連續區 之所需資料元件,可以砟杳士 驭锊畀 了 Μ非常有效率之方式存取,同時亦可於 存取時,允許進扞眘社1L 、 ……Μ 因此,於自記憶體 Η ’ Α件接著以適當順序’儲存於暫存器,而得 以進行SIMD操作,二— 叩付 操作而無進一步延遲,而於儲存操作 接受SIMD操作之眘钽_从 .al 此 之資科π件,乃以正確結構格式, 憶體,而無任何進一步延遲。 己 本發明因此提供— 特別有效率之技術’以處理暫存器與 9 1345703 記憶體間之資料元件移動, j^允許完智:卷λ 之性能優點。 堡實現利用SIMD操作 將瞭解與存取相關之指定暫存 例如,可使用某些預設暫存 可以各種方式辨識。 卄窃。然而,认 -存取指令乃辨識指定暫存 …具體實施例,單 目之俾赵斑士β也共—暫存器之數目為構件數 «數。藉由確保私疋暫存器數 ^ ^ ^ ^ 為構件數目之倍數,存 取邏輯可確保,任何特定暫存器僅儲 曰,β & 存構件之資料元件, 且進一步可容易地決定哪—構 ^ 件77派至哪—暫存器。例如, 右結構格式具有三個構件,且孩Λ „ 且藉由指令辨識三個指定暫存 器,接著清楚可知,一構件可分派 ^ 主母一暫存器。相同地, 若辨識六個指定暫存器,接著暫在哭 者皙存器將以任何預先規定方式 分派,例如前面兩個暫存器可分派至第一構件,隨後兩個暫 存器分派至第二構件,且最後兩個暫存器分派至第三構件。 將瞭解資料元件可利用各種形式,且於相同資料處理設 備内’甚至可支援不同形式之資料元件β於此類具體實施例, 單一存取指令較佳地包含資料類型資訊,辨識與所移動資料 元件相關之資料類型。資料類型資訊可辨識用於定義資料類 型之任何相關資訊。例如,資料類型資訊可辨識所移動之資 料元件尺寸。於其他具體實施例’其亦可辨識其他型態,例 如資料為有號或無號等。 於一些昊體實施例,所移動之資料元件可為不同資料類 型。例如,一構件之資料元件,與另一構件之資料元件可為 10 1345703 不同資料類型。於一特定範例,一構件之資料元件與另一構 件之資料元件可為不同尺寸。然而,於一特定具體實施例, 所移動之每個資料元件為相同資料類型,且因此,資料類型 資訊僅需辨識關於單一資料類型之資訊。此因此可促進於單 一存取指令内,有效編碼資料類型資訊。 將瞭解指定暫存器可以各種方式辨識。然而,於一具體 實施例,指定暫存器彼此間具有一固定關係。藉由於辨識指 定暫存器時加入此一限制,此可促進於單一存取指令内,指 定暫存器之有效率編碼。 此固定關係可具有各種形式。然而,於一具體實施例, 根據固定關係,指定暫存器由η個中間暫存器所分隔,其中 η為2m-l,且m為大於等於零之整數。此於本發明之一具 體實施例尤其有利,其中暫存器資料儲存庫内之暫存器,可 以各種方式混疊。例如,暫存器資料儲存庫可視為包含一些 64位元暫存器,每個可個別地辨識,或者,可視為含有一 半數目之 12 8位元暫存器。此外,暫存器可以動態方式改 變。因此,可能希望載入特定構件之資料元件,至第一 64 位元暫存器,且接著載入相同構件之其他資料元件,至一相 鄰64位元暫存器。隨後,這兩個暫存器可視為一單一 128 位元暫存器,作為隨後SIMD操作之用。藉由以上述方式, 定義指定暫存器間之固定關係,此可支援此類功能。 於一非常特定範例,當由記憶體載入RGB資料至暫存 11 1345703 器時,第一單一存取指令,可用於載入红色構件之資料元件 ; 至第一暫存器,綠色構件之資料元件可載入至第三暫存器, . 、 且藍色構件之資料元件可載入至第五暫存器。接著可使用隨 後之一單一存取指令,以載入紅色構件之其他資料元件至第 二暫存器,且將綠色構件之其他資料元件載入至第四暫存 器,且將藍色構件之其他資料元件載入至第六暫存器。隨 後,欲於紅色構件之資料元件執行之SIMD操作時,可指定 一來源暫存器為一 128位元暫存器(實際上含有64位元暫 φ 存器1與2)。 雖然可以上述方式定義此固定關係,以支援上述功能, 於一具體實施例,指定暫存器為暫存器資料儲存庫内之一系 列相鄰暫存器。此將提供單一存取指令内之特別有效編碼。 將瞭解單一存取指令可具有不同形式。然而,於一具體 實施例,單一存取指令為一單一載入指令,此存取邏輯操作 為回應此單一載入指令,以由記憶體之此連續區塊,載入複 數資料元件至此指定暫存器,且於將資料元件儲存於此指定 φ 暫存器前,藉由解交錯配置(de-interleaving)不同構件之 資料元件,重新安排此資料元件,使得不同構件之資料元 件,儲存於此指定暫存器之不同暫存器中。 根據此具體實施例,記憶體存取可以非常有效率之方式 管理,因乃存取記憶體連續區塊之資料元件,且接著解交錯 配置個別資料元件,使得一構件之資料元件,乃儲存於與另 12 1^45703 一構件之資料元件不同之暫存器 後,需執行進一步指a 此避免於單一載入指令 疋 7 4令,以於可勃仁, 新安排資料,且因此~ 钒订任何SIMD操作前, 〇且因此得以更完整 里 點。 現SIMD操作之性能優 根據本發明一具體實施例, 指令,此存取溫締姐 存取指令可為單一儲在 伟取邏輯操作為回應此 干锗存 暫存器,儲存複數資料一錯存指♦,以由此指定 存資料元件於此^ / % #憶趙之此連續區塊,且於儲 件於此记憶體連續區塊於儲 之資料元件,重新安排此資藉由父錯配置不同構件 陣列儲存於記憶體此連續區塊。 “此結構 本發明乃提供一種 _ 4 有效率之機制,以由記恃俨# 凡件至暫存器, 隐體載入資料 性能觀點,提供一種:Γ SIMD操作,將瞭解由 杈供種—旦處理器不再 將資料元件儲存回記恃 料疋件’可 根據本發明之此具體實餘如.^ j馮有利地。 骽實施例,存取邏輯乃回應單 令’藉由交錯配置不同構件之資料元件,重新安指 使得資料Μ接著以結構陣列方式,料於記“件’ 塊。再次,可產生非常有效率之記憶體存取,因乃:連續區 體之連續區塊進行記憶體存取。 對於兄憶 所存取之結 令範例,可 相同地,當 於本發明一具體實施例,單一存取指令辨識 構數目。此因此提供額外之彈性,接著於載入指 能載入未完全填入整個暫存器之資料元件子集。 13 1345703 執行一儲存指令時,此使得暫存器内之一資料元件子集儲存 回記憶體。 於一特定具體實施例,當單一存取指令為單一載入指令 時,若結構數目不足以使得資料元件填滿指定暫存器,存取 邏輯乃使指定暫存器任何未填滿部分,填入一或多個預先決 定數值。將瞭解預先決定數值可具有各種形式。於一特定具
體實施例,邏輯零(logical zeros )乃用於填入指定暫存器 之其餘未填滿部分。 將瞭解記憶體定址方式可具有各種形式。然而,於一具 體實施例,單一存取指令,乃辨識用於辨識所移動資料元件 之一定址模式。於一特定具體實施例,定址模式辨識記憶體 連續區塊之一起始位址。通常,起始位址未於指令内直接編 碼,而是於指令内辨識暫存器,且此暫存器安排為保留起始 位址。 將瞭解指定暫存器可為任何適當尺寸。例如,若不同構 件之資料元件為不同尺寸,接著其可適合用於具不同尺寸之 Φ 指定暫存器。然而,於一具體實施例,指定暫存器為相同尺 寸。 於本發明之一具體實施例,單一存取指令可辨識施加於 資料元件之一轉換(transformation),且存取邏輯操作為當 其移動時,施加此轉換至資料元件。轉和可具有各種形式。 然而,於一範例,轉換可指定,當其由記憶體載入時,且於 14 1345703 儲存於暫存器前,資料元件為有號延伸(sign-extended)。 因此,於一特定範例,若資料元件為有號8位元資料類型, 接著單一存取指令可辨識為一轉換,這些資料元件需為有號 延伸至16位元,且接著以有號16位元數值,儲存於暫存器。 於指令内指定此一轉換之一種方式,乃是指定所存取資料元 件之資料類型,以及所需之結果資料類型。藉由利用此一方 式,可利用一有效率之機制,使得當其由記憶體載入至暫存 器,或是其由暫存器儲存回記憶體時,資料元件得以轉換。 根據本發明之第二目的,提供一種操作一資料處理設備 之方法,資料處理設備包含具有複數暫存器之一暫存器資料 儲存庫,操作為保留資料元件,以及一處理器,操作為對於 至少一此暫存器内存取之複數資料元件,平行執行一資料處 理操作,本方法包含步驟:(a)回應一單一存取指令,於指 定暫存器與記憶體一連續區塊間,移動複數資料元件,其中 資料乃以具有一結構形式之結構陣列保留,結構形式具有複 數構件;單一存取指令辨識結構形式内之構件數目,且本方 法進一步包含步驟:(b)當其移動時,重新安排複數資料元 件,使得每一指定暫存器保留一構件之資料元件,同時於記 憶體内,資料元件以結構陣列保留。 根據本發明之第三目的,提供一電腦程式產品,包含一 電腦程式,含有至少一單一存取指令,當執行時,使得資料 處理設備根據本發明第二目的所述之方法操作。 15 1345703 【實施方式】 第1圖圊表式地繪示一資料處理系統(積體電路)2,包 含純量資料處理功能,以及SIMD之資料處理功能。純量資 料處理部分可視為一標準 ARM處理器核心,包含一純量暫 存器資料儲存庫4、一乘法器6、一移位器8、一加法器10, 一指令線路12與一純量解碼器14,以及為了清晰緣故而未 繪示之許多其他電路元件。於操作時,此一純量處理器核心 乃於純量暫存器資料儲存庫4内,儲存固定長度之32位元資 料數值,並且使用乘法器6、移位器8與加法器10,在沿指 令線路12通過之資料處理指令控制下,操作這些數值,並提 供至純量解碼器14。純量解碼器14產生控制信號,以常見 方式控制純量處理元件之操作。 如第1圖所繪示,積體電路2包含各種專用之SIMD處 理元件,包含一 SIMD暫存器資料儲存庫20、專用之SIMD 處理邏輯18與重新排序(reordering)邏輯24。一載入儲存 單元2.2乃與純量部分共享,且可與純量處理器内常見之載入 儲存單元相同,或為其修改變化形式。 指令線路12延伸具有額外線路平台(stages ),其透過 一專用SIMD解碼器16,用以控制SIMD處理操作。(將可瞭 解於其他具體實施例,SIMD線路可與其他純量線路平行提 供)。SIMD解碼器1 6產生SIMD控制信號,其控制SIMD處 理元件之操作,例如讀取SIMD暫存器,寫入SIMD暫存器, 以及 SIMD處理邏輯之組態,以便執行希望之資料處理操 16 1345703 作。SIMD線路平台於純量平台之後,使得處理器^動部 分效地尋找與純量部分不同之執行點。此可能導致需要 一些父互鎖定(interl〇cking),將於下討論。 重新排序邏輯24用以重新排序,由耗接至積體電路2 之-記憶體(未顯示)擷取之資料元件,使得其成為較適合 SIMD處理操作所需之順序。此重新排序邏輯24,其操作與 優點將於下進-步討論。於儲存載人單元22與重新排序邏輯 24間,亦提供載人與儲存先人“(η·) 23與23,。 純量暫存器資料儲存庫4’於此範例可視為劃分為固定 數目之固定長度暫存器,例如常見之16 32位元伽暫存 器。相對地’ SIMD暫存器資料儲存冑2〇,乃提供一儲存區 塊,其可以彈性方式定址,存取,取決於與则之資料處理 指令相關之參數。更具體地,s_之資料處理指令指定 來源與目標暫存器數目、資料元件大小,以及與資料處理指 令相關之暫存器大小。這些參數藉由simd解碼器16,以: 暫存器資料錯存庫20之讀取/寫入部分-同結合,以控制不 同部分之映射’以及儲存於暫存器所存取之,smD暫存器 資料儲存庫20中之對應資料元件。因此,具不同大小之81咖 暫存器,不同大小之資料元件等,可有效地混疊(即,這此 暫存器可視為重疊’且可依所需,透過不同暫存器指定器 (specifiers)、f存器大小與資料元件大小組合存取… 範例具例’ SIMD解碼器16 ’以及讀取/寫人蟑可視為 17 1345703 提供暫存器存取邏輯)。 第2圖圖表式地繪示,可提供做為SIMD暫存器資料儲 存庫20之讀取與寫入埠安排。於此範例,三十二個暫存器可 由SIMD之資料處理指令内之暫存器指定範圍(5位元)所 指定。N個讀取埠與SIMD暫存器資料儲存庫2〇連結。所支 援之最小顆粒度(granularity)為64位元暫存器數值。於此 範例,直接支援之暫存器大小為64位元與128位元。熟知此 項技藝之人士將可瞭解,此安排可直接放大至支援W位元 以及較大之暫存器大小,或間接地藉由組合使用支援指令 較小大小暫存器。第2圖圖表式地繪示1^個解多工 (de-muitipiexers),用以寫入埠至SIMD*存器資料儲存 2〇。將可瞭解,實際上,此類解多工器乃以可適當導引致 信號,至SIMD暫存器資料儲存庫内之儲存元件列形式 供,以及連同多工器發送所需之輸入至其目的之動作。
第3圖繪示一特定範例,其中兩個64位元δΐΜ〇暫存 數值(以兩個D表示)’每個含有多個資料元件彼此相 以產生多個輸出資料元件,—同儲存於一 128位元暫存器( Q表示)。個別讀取埠乃安排為由SIMD暫存器資料儲存 20,讀取來源SIMD暫存器數值山與^。兩個寫入埠— 做為分别允許128位元結果之第一 q [63:〇]部 >,與第: [127:64]部分寫回SIMD暫存器儲存庫2()。冑瞭解〇暫存 與Q暫存器内之資料元件大小可變動。,於每個來源 18 暫存器,可包 含四個16位元資料元件,目椁 一組相乘結果 *、Q暫存器含有 可瞭解,當資料::大 位元資料元件。於此範例,將 增加至32〜::根據所執行之相乘操作,由16位元 時’處理平行徑之數目(個) 第4圖绛+ a ^ 個)如何維持固定。 來源暫存器大小與目標暫存器大, 援之各種不 戈仔窃大小間,可支 類型關係。於最上方之範例,處 目维持固定, 處理平行徑之數 處理平行件大小維持固定。於第二與第四範例, 間改變。巧目維持固定,但資料元件大小於來源與目標 本系統之SIM;範例’兩個來源元件具不同資料元件大小。 指令,將於下4理結構與技術,支援不同類型之資料處理 之單一㈣進—步描述。最後三個範例為具單-輸入變數 資料元件大“第五範例維持相同資料元件大小。第六範例將 0倍,且第七範例將資料元件大小減半。
弟5圖圖I 4地繪示SIMD資料處理指令之語法。語法 :;關一操作子一),於此情形為 件其他特徵之二示輸出資料元件大小’以及輸出資料元 領域(field〇。於此範例’輸出資料元件長度 马1 6位το,曰达 ,具 為有號整數(signed integers )。下—領域表承 輸入資料兀件大小與特徵’於此情況為有號8位元整數。下 領域表不目標暫存器大小與暫存器指定器。於此範例, 有暫存器指定器12之128值元四字元SIMD暫存器,用以做 為目標SIMD暫存器。兩個來源SIMD暫存器每個為雙字元 19 1345703 64位元暫存器,暫存器指定器分別為「1」與「4」。以下將 進一步描述語法之資訊。 定義一組資料類型,以表示不同資料格式。此於表格0 中描述。多數指令使用至少一種資料類型修飾詞 (qualifier),以決定正確操作。然而,操作不需支援所有資 料類型。資料類型乃以下標方式應用至領域,表示資料元件 大小與特徵。 資料類型修飾詞 解釋 .<size> <s i ze > 位 元 之 任 何 元 件 .I<size> <size>-iir. 元 之 有 號 或 無 號整數 .F <s ize > <size> 位 元 之 浮 點 數 字 .P < s i ze > 大於{0,1 }程度 1 小 於 < s i z e >之多 項式 .S <s i ze> < s ize> 位 元 之 有 號 整 數 .U<size> < s ize> 之 無 號 整 數 表格0 第6圖繪示SIMD暫存器資料儲存庫20,如何視為分割 為三十二個64位元暫存器,或十六個128位元暫存器。這些 暫存器映射至相同實體SIMD暫存器資料儲存庫20,且因此 20 存 位 於SIMD暫存 元SIMD暫存 ,所 ή @ 互混疊。於,y_ ^ ^ 。。®於此範例,暫存器DO内之資料元件 裔Q0内之資料元件存取。 第7圖圓表式地進一步繪示64位元與128位 :重疊。如圓所示’ 128位元暫存器q⑻對應〜 暫存器 D(2n+1)與 D(2n)。 第圖圖表式地繪示資料元件範例,其 器内。於第8圖之上方部分 器含有四個32位元資料元件 疋資料元件。資料元件可有號或無號整數 所需且適合執行平行處理之數字格式。 第8圖下部分繪示- 64位元SIMD暫存器, 有號32位元整數,或四個無號16位元整數。 、他可能’且將為此項技藝之人士所熟知。 第9圖圖表式地繪示,如何參照SIMD暫存 純$數值。所繪示之SIMD暫存g 26含有四個 值右此SIMD暫存器視為暫存器^,則不同個 數值可表不為Dn[3]Ji Dn[0]。SIMD暫存器内個 之此類參照乃用力,例#,當&行暫存器轉移指令 暫存器之一資料元#,並將其移動至純量暫存器 4内之—暫存器’《由純量暫存器資料儲存庫4 器移出。 第1〇圖繪示如何執行SIMD資料處理指令, 亦可以暫存 元暫存器間 Μ固64位元 不同大小儲 繪示之128 ^八個1 6位 數字或其他 其可含有兩 可具有許多 器内之個別 有號整數數 別有號整數 別資料元件 ’選擇SIMD 資料儲存庫 内之一暫存 使得來源暫 21 1345703 存器與目標暫存器間之處理徑數目维持固定且資料元件大 小維持固定。於此範例,來源SIMD暫存器為D暫存器(64 位元且含有四個16位元資料元件),具有四個處理平行和。 目標SIMD暫存器亦& “ ^ " 戈仔益亦為64位兀D暫存器,含有四個結果i6 位元資料元件數值。 相對於第10圖,笛11ASI ^__ 弟11A圖乃繪不,目標SIMD暫存器寬 度為來源SIMD暫存器兩倍之範例。處理徑數目維持固定, 但資料元件大小加倍。此類型狀態適合用於SIMD操作,例 如相乘、相加、相減盘孩/ , 相减與移位(尤其為左移位)。第UB圖乃 繪示,目標SIMD暫存器寬度為來源' SIMD暫存器寬度一半 之範例。此類型指令適用於相加與移位(尤其為右移位)。 改變來源與目標間資料元件大小之能力,料維持處理 徑數目,可允許建立SIMD資料處理指令序列,而不因執行 資料處理操作產生之資^件大小改變,而需使資料元件重 新排序,或加倍指令。钛虚搜坤由 就處理連度'程式碼密度、功率消耗 等’此為一顯著優點。 第12圖圖表式地繪示純量暫 吨I瞀#器貢枓儲存庫4與SiMd 暫存器資料儲存庫20,藉由塹在哭絲放浪炫 猎由暫存器轉移邏輯28耦接。由純 量解碼器14或SIMD解碼器兩去七使由> 〇 阱碼盗兩者或其中之—接收之控制信 號’回應指令線路〗2内之暫在罟鰱软讲a ° 督吞盗轉移指令,以控制暫存器轉 移邏輯28’於純量暫存器資料儲存庫4内之特定暫存器以 及SIMD暫存器資料儲存庫 Π符疋皙存器之特定位置間 22 1345703 移動資料。由純量暫存器移動至SIMD暫存 值,可複製至SIMD暫存器内所有位置,如第 此類具有複製之暫存器轉移指令,非常適合於 内,快速使得所有處理徑具有數值,例如純量 由SIMD處理邏輯18,應用至SIMD暫存器内 作元。 第14圖繪示不同類型之暫存器轉移指令。 32位元純量數值A,移動至SmD暫存器内一半 其他徑維持其原始數值。純量數值於整個純 製。目標純量暫存器内之位置,可藉由暫存器 一適當範圍數值改變。此類操作允許SIMD暫 資料70件,具有來自純量暫存器資料儲存庫之 第15圖緣示暫存器轉移指令之進一步類今 來自SIMD暫存器内之_ 16位元資料元件,乃 存器内之一特定變動位置取得,並複製至其 器。因純量暫存器為一 32位元暫存器於此範 接著有號延伸(sign extended)。資料元件亦可^ extended )’取決於特定演算法或系統之需求。 第16圖為—流程圖示,圖表式地繪示處 例,其中可有利地利用第14與15圖之暫存器 步驟3〇,於多條徑平行執行一些SIMD處理, 身之資料元件。於某一時刻,此處理需執行— 器之一資料數 1 3圖所繪示。 SIMD暫存器 數值,其需藉 之不同其他操 於此範例,一 字定位置(徑)。 量暫存器未複 轉移指令内之 存器内之個別 資料數值。 5!。於此範例’ 由此SIMD暫 中一純量暫存 例,資料元件 ^零延伸(zero 理類型之一範 轉移指令。於 每個還有其自 資料操作,其 23 1345703 不為SIMD處理邏輯U所支援,或僅能無效率地支棱。 情況,希望得以分別移動個別資料元件通過純量處理系 以允許執行此一複雜資料操作。步驟32選擇欲移動之~ 料元件。步驟34接著執行一暫存器轉移指令,如第15 繪示。步驟36於系統純量部分之個別資料元件,執行 複雜處理。當此複雜處理完成時,步驟38執行— ▼存器 指令,如第1 4圖所示,以使得現在修改之資料元 卞逐回 原始位置。步驟40決定是否到達最後資料元件,且“ 此’於返回處理至步驟34前’步驟42選擇下— 聲料元 若所有需執行複雜操作之資料元件,已移動通過純量系 接受希望之處理,並移動返回至SINtD系統,接著處理 驟40繼續至步驟44 ’於此繼續平行SIMD處理。 指定SIMD暫存器,以存取暫存器資料儲存庫之資 理指令,包含一或多個暫存器領域,編碼暫存器欲存取 存器數目。所使用之5位元暫存器指定器,乃設計為與 向量浮點(Vector Floating p〇int ,VFP)單元所使用的卓 亦即’指定暫存器之指令位元為: *對於目標暫存器: D = bit[22]
Rd = bits[15:12] 於此 統, 一資 圖所 望之 轉移 至其 非如 件。 統, 由步 料處 之暫 ARM I同, 24 1345703 *對於第一來源暫存器指定器: N = bit[7]
Rn = bits[19:16] *對於第一來源暫存器指定器· m = bit[5]
Rm = bits[3 :0] 此外,迫些位元之使用選擇,為使得Di暫存器與字元量 得以一致地編碼’藉由向量浮點分別指定倍精度 (d〇Uble-precisi〇n)與單精度(single-precisi〇n)暫存器之 方式,且對於Qi暫存器與半字元量,使用相同方式。以下將 描述如何使用(D,Rd); (N,Rn)與(M,Rm)亦以相似方式使用:
Qd: Qi 暫存器數目為 對應之 Di暫存器數目為(D,Rd[3],Rd[2],Rd[1] 0)與 φ (D,Rd[3],Rd[2],Rd[ 1 ],1)
Rd[0]需為零
Dd: Di 暫存器數目為(D,Rd[3],Rd[2],Rd[l],Rd[0]) 字元量: 25 1345703
Di 暫存器數目為(0,Rd[3],Rd[2],Rd[l],Rd[0]) word[D]根據小尾序(little-endian),由暫存器選擇 半字元量:
Di 暫存器數目為(0,0,Rd[2],Rd[l],Rd[0]) halfword[(D,Rd[3])]根據小尾序,由暫存器選擇 位元組量:
Di 暫存器數目為(〇,〇,〇,Rd[l],Rd[0]) byte[(D,Rd[3],Rd[2])]根據小尾序,由暫存器選擇 因此,位元 D、Rd[3]、Rd[2]、Rd[im Rd[〇]視為可映 射至一 5位元相鄰領域,其可藉由一些位元位置數目循環 (rotatable ),取決於暫存器數目之暫存器大小。實際上,= 存器編碼位元並非以個別操作映射或循環,而是提供至暫存 盗存取邏輯,以形成一列位址與一行位址以存取暫存器資 料儲存冑’且提供根據暫存器大小之一可移動㉟罩(⑴, 以選擇位元之正確部分,做為列與部分行位址。 根據本發明之具體實施例,乃提供載入與儲存指令以 於隨D暫存器棺t 2〇 (見第⑷與記憶體間移動資料。 載入指令可用於由記憶體載入資料元件至指定暫存器,而儲 存指令用於由指定暫存器儲存資料元件至記憶體。這些載入 26 1345703 與儲存指令75設計為,支援使用SIMD處理邏肖18之演 所需之資料移動。根據本 傅令赞奶之載入與儲存指令,指 入與儲存之資料元件 大小,且此資訊用於提供暫存器 致排序,而與記憶體系 — 、统之尾序(endianness)無關。 本發明具體實施例 # 例之載入與儲存指令,允許來自記憶體 連續區塊之一些資料元 ^ 件,載入或儲存至SIMD暫存器檔索 20。根據一具體實施例 ” x_ 可於任何位元校直(alignment)執 订存取,且載入或儲存古 子敢间至32位元組。 本發明具體實施例 ^ . j之載入與儲存指令,視為由記憶體存 取資料,其中資料元件 也 乃以結構方式安排,每個結構具有一 ‘構件(components )。捃M 曰站由 〇 根據一具體實施例,記憶艎中之結構 可含有一至四個構件,甘山 、中一個構件,可具有SIMD處理邏 輯1 8可辨識之任何資料 寸類型大小’於較佳具體實施例,這些 資料類型大小為8、16、39七γ •^或64位元。用於本發明具體實施 例之一些常見結構格式 八把例’乃不於下列表格:
27 1345703 格式 1---- 說明 (a) ---iL 構件 ~~ Ο, y) --- 二維位詈应择 (real, imm) ~---—— 複數 __ O,y,z) p —i _ ___ 二維向晉 _ (r,g,b) —(x, y, z, w) ----- 四維向詈 A. 格 1 對於任何特定載人或料指令,記憶體中之每個任 存取對象將具有相同結構格式,且因此將包含相同數目之構 件。載人與储存指令安排為辨識結構格式中之構件數目且 此資訊為重新排序邏輯24所使帛,當執行載入操作時,用以 提供資料元件之解交錯配置,且當執行儲存操作時提供二 料元件之交錯配置,允許資料於暫存器内安排,使得結構之 不同資料元件,出現於不同暫存器。此概念乃圖表式地繪示 於第17圖,其中載入指令用於由記憶體之連續區塊,載入一 些資料元件至二個指定暫存器。於此範例,指定之暫存器為 三個64位元暫存器D〇 22〇、D 1 225與D2 230。於此範例, 結構格式為二維向量格式’且因此於記憶體200中每個結構 210具有三個構件215» 如第1圖所示,載入指令由指令線路12發送至純量解碼 器14’使得適當之記憶體存取控制信號,傳送至載入儲存單 28 1345703 元(Load Store Unit ,LSU) 22。巷入紗六 „ 栽入储存早元接著由記憶 體之一連續區塊,存取所需之四個蛀 〜構 A[〇] ' A[I]、A[2]斑 A[3] »因此,載入儲存單元22可以放 ,、止常方式刼作。隨後, 資料透過重新排序邏輯24發送,其娈 、文排為解交錯配置每個結 構之三個構件,使得屬於X構件之 資枓7C件發送至暫存器 D〇 220, Y構件之資料元件發送至智 义主暫存盗D1 225,且z構件 之元件發送至暫存器D2230。 由·一結構陣列載入,以及脾咨4、 乂及將資訊分離至個別暫存器,作 為部分載入操作之能力,可允許音粗
許資枓立即進行有效率之SIMD 處理。 當來自指定暫存器之儲存資租 碎仵貪料,返回至記憶體之連續區 塊,重新排序邏輯24亦安排盔抽,_ , 女排為執仃-相似處理,於此情況, 重新排序邏輯24執行—交錯配 且保作,以重新產生資料儲存 於記憶體前之結構格式。 如第1圖所示’於這些指令抵達指令線路12之伽平 台前,載入指令由指令線路發送至純量解…4。此使得載 入資料至SIMD暫存器檔牵 莱20之過程盡可能地早產生,且立 優點為隨後之SIMD處理4t入 ^ 八 處理指令,於其開始執行前,通常將不 需專待資料載入,從而起& 顯著地減少載入操作之延遲。狭而, 儲存指令需通過指令線路’ 直到其發送至SIMD解碼器16, 由此處’適當之控制信號 了用於控制來自SIMD暫存器檀亲 20之資料存取,以及在 ’、 資料透過載入儲存單元22儲存回記 29 1345703 憶體前,控制重新排序邏辍 辑24内之適s重新排序。然而,可 執行储存指令之某歧都公 — ’同時於指令線路〗2之ARM部 分,例如檢查位址,記传 μ趙存取許可等,以確保指令不會造 成資料失敗。 本發明具想實施例之哉 栽入與儲存指令’可視為下列單一 語法。語法可以下列方式表示. V(LDIST)<st>.<dt>{(S<a、、 i@<a>}<reglist> {<n>j) <addr> 其中 <st>結構格式 s己憶體之資料元件,相兔目士 現為具有<st>構件之一结構陣列。
當其於記憶體與SIMD暫存哭辟六A M 子器儲存庫間移動時,此資訊用於 件以產生有效率之SIMD處 理〇 〜
<dt>資料類型 此決定載入之資料元件之大小 交錯配置與解交錯配置資料
<a> <reglist> SIMD暫存器列表 此決定將寫入或讀取之SIMD暫存 臀存窃狀態。對於載入, 為SIMD暫存器檔案將受指令影響 表 /菴之明確部分。暫存器列 規為具有大小 <价之資料元件集合 向量。 幻刀為相專長度之 30 1345703 注思暫存器列表内之位元组數目,不需與所存取記憶體 i位元,A數目相同。參照<n>選項與第2〇A至2〇c圖。 ------------ <n>結構數目(選擇性) 此定義載人或料之結構數目^允許暫存器列表僅部 分載入記憶體資料,且其餘部分歸零。當其未提供時其利 用預設值,表示暫存器列表與記憶體存取大小相同。 -def_ault <^> elements<dt>(<reglist>) / <st> <addr>用於存取之定址模式 根據本發明之具體實施例,定址模式可採用各種形式, 尤其可使用下列所述之三種形式: ;// <addr> [Rn] ;// address := Rn [Rn]! address := Rn,Rn := Rn + transfer_size (其 中「轉移大小」為記憶體所存取之數量) [Rn],Rm ;// address := Rn,以:=Rn + Rm 上述之語法’允許載入或儲存單一結構或多個結構,以 及邏輯零(logical Zeros)寫入至,未被來自記憶體之資料所 填入之暫存器其餘部分,且藉由使用含有純量指定器(例如 D0[1])之暫存器列表,插入至暫存器。將可瞭解,於本發明 之具體實施例’所提供之實際載入與儲存指令,通常將為上 述語法所有可能組合之子集。 31 1345703 關於結構格式,第18圖繪示三種可能結構格式之範例, · 以及其對應之「st」數值。由第18圖可知,第一結構250僅 _ 具單一構件,且因此「st」數值為一。於第二範例,結構255 具有兩個構件,例如表示一複數之實數部分X與虛數部分y, 且因此「st」數值為二。最後,於第三範例,結構260具有 三個構件,代表R、G與B資料元素,且因此「st」數值為 三 ° 為幫助說明當使用本發明具體實施例之載入與儲存指令 Φ 時,可獲得之功能,第19至22圖繪示載入與儲存指令之特 定範例。考慮第1 9A至1 9C圖,第1 9A圖繪示由儲存指令所 指定之reglist狀態 VST 2.16 {DO, Dl, D2, D3}, [rl] 此指令用於由指定暫存器檔案,儲存多個結構至記憶體 之一連續區塊。如圖所示,第19A圖辨識reglist含有四個指 定暫存器 DO 270、D1 280、D2 290 與 D3 300。如第 19B 圖 所示,這些暫存器可視為劃分為具有「dt」大小(即1 6位元)φ 資料元件之「st」向量(即2)。於暫存器 D0,這些資料元 件以數字275表示,於D1以數字285,於D2以數字295, 且於D3以數字305表示。如第19C圖所示,重新排序邏輯 24安排為由這兩個向量交錯配置資料元件,使得結構3 1 2之 每一資料元件3 1 4,以所需結構格式’儲存於記憶體3 1 0。 第20A至20C圖為一相似圖示組,說明由指令所執行之 32 1345703 操作 VLD2.i6 {D〇, Dl), #1, [rl] 第2〇A圖繪示 與 D1 280 » 第 20B 小(即16位元)資 reglist狀態之集合, 圖接著繪示這些暫存 料元件之st向量。 M 1¾暫存器D0 270 器如何劃分為dt大 圖之範例,此指令指定一
相對於與第19A至19C
參數,辨識所存取之結構數目,於此範例η為卜因此,紫 於此載入指令,nx st (即1χ2 )資料元件需由記憶體中 於有效位址開始讀取,且接著以循環(r〇und r〇bin )分配, 刀配至向量,由第一向量之最低指數元件開始。此過程乃續 不於第20C圖,且使得第一構件314之資料元件χ。寫入暫启
益D0之最低16位元,而第二構件之資料元件寫入暫存器 之最低16位元。根據此具體實施例未寫入之暫存器狀 態任何部分,一旦載入所有資料元件,乃設定為零。需注意 對於同等儲存指令,nx st資料元件乃以相反於載入方式储 存。 第21A至21C圖繪示另一特定範例,其中延伸指令之語 |, 以允許指定兩種資料類型,亦即所存取之資料元件之資 /類里’以及載入至暫存器’或儲存至記憶體之結果資料元 件之資料類型。因此,第21A至21C圖繪示由指令所執行之 操作 VLD 2.32.S16 {DO, Dl, D2, D3}, [rl] 33 1345703 如第 21A圖所示,收集reglist狀態,辨識暫存器 DO -270、D1 280、D2290 與 D3300。接著,如第 21B 圖所示, 一 此暫存器狀態劃分為dt大小(即32位元)資料元件之st向 量(即2),因此,此指令指定當資料元件儲存於暫存器内時, 其長度將為32位元。 指令亦指定,記憶體中之資料元件長度為1 6位元,且因 此一旦資料元件由記憶體310存取,其將通過一些轉換邏輯 340(其選擇性地可併入成為重新排序邏輯24之一部份),其 Φ 接著用於延伸每個1 6位元資料元件,以形成新的3 2位元資 料元件342。解交錯配置這些資料元件,使得第一構件之資 料元件,乃儲存於暫存器D0與D1,而第二構件之資料元件, 乃儲存於暫存器D2與D3。 第22A至22C圖繪示進一步範例,且尤其繪示指令之操 作。 VLD2.16 {D0[2], Dl[2]}, [rl] 雖然此指令可與先前指令共用相同語法,此指令概念上 φ 為不同類型指令,其並非由以結構陣列儲存資料元件之記憶 體一連續區塊,載入資料元件,此載入指令僅載入單一結構。 此外,載入之單一結構資料元件,可置於指定暫存器内任何 選擇之處理徑。因此,當考慮64位元寬度暫存器,以及16 位元資料元件,具有四種可能之處理徑,可放置資料元件。 於較佳具體實施例,對於特定指令所選擇之徑,於reglist資 34 1J45/03 料内’藉由辨識特定徑指示。 考慮第22A圓,可知當妆隹 J沖备收集reglist狀態時,此辨識暫存 器DO之徑2 320,以及暫存器 1之仅2 325。如第22B圖 所示,接著這些乃劃分為dt大 J (即16位元)資料元件之 st向量(即2)。隨後,如第22 圖所不,一旦由記憶體310 存取結構312 ’重新排序邏輯24 μ Α ίτ 科24女排為導引資料元件X。至 0暫存器330之徑2,同時導引資料 ^ OTt
丨實料兀•件y〇至D1暫存器335 VLD1 。於此範例 ,將瞭解徑可辨識之範 圍由0至3 » 鲁 於有興趣之 ,讀者’下列表格辨識可提供於__特定具體 中,各種類 型之載入與储存指令: _ifl·類型 操作元格式 說明 •8 <list>, <addr> 載入多個元件 • 16 •32 <list> := .64 {〇π} |{ Dn, Dn+1 } |{ Dn> Dn+I ? 〇n+2 } —·- |{ Dn, Dn+1 9 〇n+2, 〇n+3 } .8 <list>, #UIMM, <addr> 載入多個元件與零 .16 UIMMlreg = (l)-(a-l) •32 <list> := UIMM_2reg = (a+l)..(b-l) 35 1345703 {0„} |{ Dn,Dn+i } 其中 a = (64/size<dt>) b = (128/size<dt>) VLDl .8 Dd[x], <addr> 載入單一元件 • 16 •32 VST1 .8 <list>, <addr> 儲存多個元件 .16 .32 <list> := .64 |{Dn} |{ Dn, Dn+i } |{ Dn,Dn+i,Dn+2 } |{ Dn,Dn+i,Dn+2,Dn+3 } VST1 .8 <list>,#UIMM, <addr> 儲存多個元件 • 16 UIMM_Ireg= (2)..(a-l) UIMM_2reg=(a+l)..(b-l) .32 <list> := 其中 {〇n} a = (64/size<dt>) 丨{ Dn,Dn+i } b = (128/size<dt>) VST1 .8 Dd[x], <addr> 儲存單一元件 • 16 .32
36 1345703 VSTl 範例 VLD1.16 DO, [Rl] VLD1.8 {DO, Dl}, [R2]! VLD1.8 Q2, #10, [R2], R7 VLD1.16 D20[3], [R8], RI VST1.32 {D8, D9, DIO, Dll}, [RO] VST1.32 Q73 #3, [RIO] VST1.8 D30[0], [RO], R14 表格2
符號 資料類型 操作元格式 說明 VLD2 .8 <list>,<addr> 載入多個2元件結構 • 16 .32 <list> := { Dn,Dn+i } |{ Dn,Dn+2} |{ Dn5 Dn+1 , Dn+2, Dn+3 } VLD2 .8 <list>, #1, <addr> 載入多個2元件結構與零
•32 <list> := 37 1345703 { Dn,Dn+i } |{ Dn,Dn+2 } VLD2 .8 <list>,<addr> 載入單一 2元件結構 .16 其中 .32 <list> := 列出無法取得之{Dn[x], Dn+2[X] } {Dn[x], Dn+l[x] } 當 dt = 8 |{Dn[x],Dn+2[x]} VST2 .8 <list>5 <addr> 儲存多個2元件結構 .16 .32 <list> := { Dn,Dn+i } \{ Dn, Dn+2 } 丨{ Dn,Dn+i,Dn+2, Dn+3 } VST2 .8 <list>, <addr> 儲存單一 2元件結構 .16 其中 •32 <list> := 列出無法取得之{Dn[x], Dn+2[x] } 當 dt = 8 {Dn[x], Dn+[[x] } |{Dn[x],Dn+2[x]} 範例 38 1345703
VLD2.16 {DO, D1},[RI] VLD2.32 {D2,D3,D4,D5),[R3]! VLD2.8 {DO, Dl), #1,[R1],R7 VLD2.16 {D2[1],D4[1]1,[R6] VST2.8 {D20, D21), [R0] VST2.32 {D20[0], D21[0]}, [R5],R6 符號 資料類型 操作元格式 說明 VLD3 .8 • 16 .32 <list>, <addr> <list> := { Dn,Dn+i,Dn+2 } |{ Dn,Dn+2,Dn+4} 載入多個3元件結構 VLD3 .8 <list>,#1,<addr> 載入單一 3元件結構與零 .16 .32 <list> := { Dn,Dn+1,Dn+2 } |{ Dn,Dn+2,Dn+4} VLD3 .8 <list>, <addr> 載入單一 3元件結構 .16 其中
39 1345703 VST3 .8 <list>, <addr> 儲存單一3元件結構 • 16 其中 .32 <list> := 列出無法取得之{Dn[x], Dn+2[X], Dn+4[X]} 當 dt = 8 {D„[x],D„+1[x],Dn+2[x]} |{Dn[x], Dn+2[x], Dn+4[X]> VST3 .32 <list> := {Dn[x],Dn+1[x],Dn+2[x]} |{D„[x], D„+2[x], D„+4[x]} .8 <list>, <addr> .16 •32 <list> := {Dn[x], D„+i[x], D„+2[x]} {Dn[x], Dn+2[x],Dn+4[x]} 列出無法取得之{Dn[x], Dn+2[X],Dn+4[X]} 當 dt = 8 儲存多個3元件結構 範例___ VLD3.8 {D0,D1,D2},[R1]! VLD3.16 {D2, D3,D4},#1, [R3], R4 VLD3.16 {D2[l], D3[l], D4[l]}, [R3], R4 VST3.32 {D20, D22, D24}, [R7] 1345703 VST3.8 {D0[0], D1[0], D2[0]}, [RIO], R14 表格4 符號 資料類型 操作元格式 說明 VLD4 .8 <list>, <addr> 載入多個4元件結構 .16 • .32 <list> := { Dn,Dn+1,Dn+2,〇η+3 丨{ Dn,Dn+2,Dn+4,Dn+6 } VLD4 .8 <list>, #1, <addr> 載入單一 4元件結構與零 .16 .32 <list> := { Dn,Dn+i,Dn+2,Dn+3 |{ Dn> 〇n+2 5 Dn+4 , Dn+6 } • VLD4 .8 <list>,<addr> 載入單一 4元件結構與零 .16 其中 •32 <list> := 列出無法取得之{Dn[x],Dn+2[x],
Dn+4[x], Dn+6[x] }當 dt = 8 {Dn[x], Dn+i[x],
Dn+2[x],Dn+3[x]} 41 1345703 {Dn[x],Dn+2[x], Dn+4[x],Dn+6[x]} VST4 .8 <list>5 <addr> 儲存多個4元件結構 • 16 •32 <list> := { Dn,Dn+l,Dn+2,Dn+3 } |{ Dn,Dn+2,Dn+4,Dn+6 }
VST4 .8 <list>,<addr> 儲存單-4元件結構 ^ • 16 其中 •32 <list> := 列出無法取得之{Dn[x],Dn+2[x], Dn+4[x], Dn+6[x] }當 dt = 8 {Dn[x], Dn+l[x], Dn+2[x], Dn+3[x]} {Dn[x], Dn+2[x], Dn+4[x],Dn+6[x]} 範例 VLD4.8 {DO, D1,D2, D3}, [Rl]! VLD4.16 {D2, D3,D4, D5},#1, [R3] VLD4.16 {D2[l], D4[l], D6[l], D8[l]}, [R3],R4 VST4.32 {D20, D22.D24, D26}, [R7] VST4.8 {D20[5],D21[5], D22[5], D23[5]},[R1], R4 表格5 42 1345703 於-具體實施例,第1圖之重新排序邏輯24使用第η 圖所繪示之形式。帛23圓之邏輯包含兩個多工器35〇、… 於其輸人,其於載人指令時’乃安排為接收來自與載入儲存 單元22連結之載入先入先出23之資料,如第u㈣示, 或於儲存指令時,安排為接收來自5励暫存器储存庫⑼之 資料。此外’於一些情況,載入指a θ 戰八知令可能使4第23圊之邏輯, 接收來自测暫存器儲存庫2〇之資料。多工器35〇 355 控制為於不同輸入間選擇,並發 上赏达所選擇之輸入至連接之輸 入暫存盗3 60、3 65。於一具體實施例,每個輪入暫存器可儲 存64位元資料。儲存於輸入 飞仔态之貪枓,接者透過交錯式 (crossbar )多工器 3 7 S ▲ 夕器3 75,请取至暫存器快取(cache) 38〇, 交錯式控制暫存器370提供 代供驅動k唬至交錯式多工器,以導 引由輸入暫存器接收之個別一 貪枓位兀組,至暫存器快取内所 希望之位元組位置。控制 解碼器取得。 “ ”。内之數值,乃藉由指令 如第23圖所示,暫在 快取380可視為包含四個暫存 器且於-具體實施例,每個 存器長度為64位元。 責科儲存於暫存器快取 工咬 3 80後’其接著可透過輸出多 工益3 85,讀取至與載入儲存 出23,(於健存指令時),: 之儲存資料先入先 入指令時)。 或至S細暫存器檔案20 (於載 43 1345703 輸入 工器 為自 相同 讀取 重新 (未 暫存 之其 持於 序邏 先出 有資 體實 邏輯 寫入 取乃 隹然位元組交錯式多工器37 可以位το组顆粒度讀取 皆存器,且以位元组顆粒度寫入至暫存器‘…寫入多 3 85以64位元顆粒度由暫存器快取讀取。 與其他SIMD處理邏輯18相較,重新排序邏輯24主要 主的,但於程式順序,乃與積體電路内其他功能單元以 方式給予指令。於-具體實施例,其具兩個暫存器檔案 埠,以及控制自身之兩個寫入埠。為偵測與避免危險, 排序邏輯24可安排為與一些交互鎖定(interl〇ck)邏輯 顯示)’使用計分板溝通β 相對於其他SIMD指令,以無順序方式執行來自SIMd 器稽案20之儲存指令’但相對於來自SIMD暫存器槽索 他儲存彳0令’仍為依照順序的。棚置(P e n d i n g )儲存維 仔列(queue )’且當儲存資料準備好時,其透過重新排 輯24 ’讀取並進入與載入儲存單元22連接之儲存先入 23’ 〇 於一具體實施例,記憶體與SIMD暫存器檔案20間之所 料處理’乃透過重新排序邏輯24發送。然而,於另一具 施例’對於決定不需重新排序之情況,可提供重新排序 24附近之旁路(bypass)。 暫存益快取3 80稱為「快取」,乃因於某些情況下,於其 simd暫存器檔案2〇前,其快取暫存器數值。暫存器快 ’斗維持為資料由重新排序邏輯24輸出之格式。 44 1345703 第 VLD 3. 新排序 第24A 入至輸 載入至 假設結 期,如: 透過重 器快取 存器, 於z構 亦於此 透過多 於 資料元 y、z構 使得暫 暫存器 暫存器 暫存器 24…圖繪示重新排序邏輯 16 {DO, D1 not r ^•保作’备執仃 。 ’ ’ rl]類型之指令時,以實施所需之重 旦資料由載入储存單元 圖所千、^ 伐有於第一週期(如 Μ )’ 64位元之擷取資料, 入暫“⑽n τ /透過多工器350載 鈴入%„ 64位兀乃透過多工器355 , 輸入暫存器365。於坌Α Μ ^, 、 至24C圖所繪示之範例, 構格式表示具有構件 卞x y、z之三維向量。於 * 下迥 窃内之1 ό位元資料元件,乃 新排序資料之位元組交"夕丁毋 寸斗疋件乃 日式^工器375’讀取至暫存 3 80,使得關於χ構 主笮仔 冓件之任何資料元件, 關於y構件之任何資料-从 鼻暫 叮#枓兀件,置於第二暫存器,且 件之任何資料元件, 置於暫存器快取之第三暫存器。 週期中,來自栽入弈入“ 乐暂存盗 工器350巷5 出23之下一 64位元資料, 工器350載入至輸入暫存器36〇。 下一週期,如第24c 斤不,來自輪入暫存器360之 件,透過位元組交錯4夕 节仔盗360之 # 交錯式多工器,發送至暫存器快取,χ、 件乃解父錯配置,如 直如先前所述。如第24C圖所干,此 存器快取中,於笛^ _所不此 、第一暫存器含有四個乂構件, 含有四個y構件,且於第_^ 於第一 ..^ '第一暫存器含有四個2構件。 快取之内容,挺裟π 土 稱干 ,鈐Ψ S # X办 15 3 85,每次兩個 輸出至載入指令所指定之暫存器。 45 1345703 第25 A-25D圖繪示,通過重新排序邏輯之資料流向第二 範例’當執行指令 VLD 3.16 {DO[l],Dl[l], D2[l]},[H]時, 執行所需之重新排序。根據此指令,資料將載入暫存器D〇、 D1與D2之一特定徑,即這些暫存器内之兩個16位元寬度 徑,以及四個16位元寬度徑。在資料可儲存於暫存器特定徑 前,需擷取暫存器目前内容,使得當隨後寫入暫存器時,暫 存器之内容以整體方式寫人。此特徵避免需提供任何寫入僅 至SIMD暫存器檔案20内之部份暫存器。因此,於第一週期, 如第25A圖所示’暫存器D〇與⑴之目前内容,透過多工器 350、355’由SIMD暫存g撼宏,靖认 爷存窃擋案,讀取至輸入暫存器36〇、365。 於下一週期,如第25B圖所示, 啤I 与二円令透過交錯式多工 3 75,讀取至暫存器快 夕H如 之内各放置於暫存器快取 暫存器,且DI之内容放置於第_ 期,锈堝々„ 、弟—暫存器。於相同週
透過夕工益350,由SIM 括冲六& u 晋评窃擷取暫存器D2之内容, 並储存於輸入暫存器36〇。 過二: = 暫……,透 暫存器“…暫::至::器快取38°,使得其健存於 構,其通當P u 迥期載入對象之資料結 其通常已由載入儲存單元 載入4入庄山 边過多工器350,由 出23讀取至輸入暫存器3 60。於第2 之範例,再次將却掩雜心 、第2 5 C圊所繪示 ° 中之結構視為表示=唯θ μ 有構件X、y、ζ。於τ _ a —、准向量資料,具 、一週期,如第25D圖所示,X、y、z 46 l3457〇3 之第二徑,使 之第二徑先前 器D1第二徑 先前於暫存器 構件透過交錯式多工器3 75,讀取至資料元件 得資料元件覆蓋暫存器快取内,暫存器d〇 内容,構件y〇覆蓋暫存器快取内,先前於暫存 之資料元件,且構件zo覆蓋暫存器快取内, D2第二徑之資料元件。
將可瞭解於此時,SIMD暫存器標案内之暫存器D〇、^ 與D2中實際内容並未改變。然而,儲存於暫存器快取之資 料,現在可透過寫入多工器3 8 5,寫回至暫存器D〇、⑴與 D2,以覆蓋先前内容。結果,單一載入指令可用於由記憶體 載入特定結構之構件,且接著交錯配置此結構之個別構件, 至不同暫存器之選定徑位置。 第25E至25H圖乃繪示,通過重新排序邏輯之資料流向 第三範例,使得執行互補之儲存指令,以載入先前討論之指 令時,參考第24A至25D圖,執行所需之重新排序。因此, 第25E至25H圖繪示當執行指令VST 316 {D〇[l],Dl[l], D2[l]},[rl]時,執行所需重新排序之步驟。因此,根據此指 令,資料將由暫存器DO、D1與D2之第二16位元寬度儲存 回記憶體。如第25E圖所示,於第一週期,暫存器D0與D1 之目前内容,透過多工器35〇、355,由SIivID暫存器檔案讀 取至輸入暫存器360、365。於下一週期,如第251:圖所示, 於第一控之資料元件’即,χ〇與y〇數值,透過交錯式多工器 375 ’讀取至暫存器快取380之第一暫存器。於相同週期,暫 47 1345703 存器D2之内容,透過多工器350,由SIMD暫存器檔案擷取, 並儲存於輸入暫存器360。
於下一週期,如第25G圖所示,於暫存器D2第二徑之 資料元件,透過交錯式多工器375,讀取至暫存器快取380 之第一暫存器。接著,於下一週期,如第25H圖所示,x、y、 z構件現在可藉由寫入多工器385,輸出至載入儲存單元,以 儲存回記憶體。將瞭解於此階段,資料元件現在已重新排序 為儲存於記憶體所需之結構格式。 第2 6 A至2 6 E圖繪示於執行下列四個指令序列時,重新 排序邏輯内產生之重新排序: VLD 3.16 { DO, Dl, D2}, #1, [rl] VLD 3.16 {DO [1], D1 [1 ], D2 [1]}, [r2] VLD 3.16 {DO [2], Dl [2], D2 [2]},[r3] VLD 3.16 {DO [3], Dl [3], D2 [3]}, [r4]
一旦由第一載入指令所辨識之資料,由載入儲存單元所 擷取,於第一週期,其透過多工器350讀取至輸入暫存器360 (見第2 6A圓)。於下一週期,其透過交錯式多工器375,讀 取至暫存器快取380,使得X、y與z構件置於暫存器快取之 不同暫存器。第一指令内之「#1」,表示每個資料元件,需置 於每個暫存器之最低有效(丨east significant)資料徑,且其 48 1345703 餘徑需以邏輯0數值填入,此乃示於第26B圖。亦於此週期, 由第二載入指令所辨識之資料元件,乃擷取至輸入暫存器 360。於下一週期(見第26C圖),儲存於輸入暫存器360之 資料元件,透過交錯式多工器375,移動至暫存器快取380, 於此其儲存於第二徑。亦於此週期,第三載入指令之資料元 件,置於輸入暫存器3 60内。
於下一週期,輸入暫存器360之内容,透過交錯式多工 器375,發送至暫存器快取之第三徑,同時第四載入指令對 象之資料元件,擷取至輸入暫存器360。此示於第2 6D圖。 最後,如第26Ε圖所示,於下一週期,這些資料元件透 過交錯式多工器375,發送至暫存器快取380,於此其儲存於 第四徑。之後,暫存器快取之每個暫存器中,64位元寬度部 分資料,可輸出至SIMD暫存器檔案之指定暫存器。
需注意與第25Α至25D圖之方式相較,使用關於第26Α 至26Ε圖所繪示之第一 VLD指令,從而一旦資料元件置於一 特定徑時,其餘徑乃以〇數值填入,於進行任何更新前,避 免需由SIMD暫存器檔案,擷取任何暫存器DO至D2中之目 前内容。重新檢視第26A至26E圖,可知於此範例之暫存器 快取380,做為一「寫入通過快取(write through cache)」, 因其快取載入指令序列之資料元件,且當完成每個指令時, 寫入資料至SIMD暫存器檔案之相關暫存器。然而,當執行 序列中之每個相鄰指令時,通常不需讀取暫存器檔案。 49 1345703 於資料處理,通常 (commutative )與組入 需要藉由於所有元件間,使用交換 (associative)操作子「op」,減少所 謂的元件向量至單— 折疊操作之典型範例 件之最大值。 元件。此將以折巷(folding)操作描述。 為總和一向量之元件,或找尋向量内元 於平行處理架構, 法’乃於第27圓插述。 存器r 1。將瞭解平行處 件’同時執行相同操作 瞭解此概念。於此範例 [3]其中之一。
一種已知用於執行此一折疊操作之方 欲折疊之資料元件[〇]至[3]乃位於暫 理架構之優點為’其可於多個資料元 。可參考所謂處理平行徑,以更清楚 ,每個處理平行徑含有資料元件[〇]至
首先,於步驟發出第一指令,使得資料元件循環兩 個位置,於暫存II 一 ^形成循環之資料元件。此步驟將不同資 料元件置於每個虚柿 僅’使付步驟B可使用siMD操作。 隨後’於步驟B,狢屮扣人 執行_操作。於發“ ’於每個徑之資料元件 '此缸例,些多個平行操作產生之資料 疋牛,乃儲存於暫存器d。因此 存器rl—半資料_ * 了知暫存盗r3現在含有暫 +資枓几件之組合(即,暫存器6含 [1]〇P[^t2^Pt〇];A [3] 0P[1]). 步驟接二發:::指令,使得儲存於暫存器:3之結果,於 储存於暫存器行徑所循環,並料於暫存器-再次, 之資料元件相對於暫存…循環,使得 50 1345703 不同資料元件位於相同處理平行徑。 最後,於步驟D,發出第四指令,而進一步於每個徑所 儲存之資料元件,執行SIMD操作,且結果乃儲存於暫存器 r5 〇
因此,可知僅藉由使用四個指令,可組合暫存器之所有 資料元件,且結果乃儲存於暫存器r5之每個欄位(entry ) (即,於暫存器r5之每個攔位包含:[0] op [ 1 ] op [2] op [3])。產生之資料元件,可由暫存器r5四個欄位任何其中之 一,依所需讀取。
第2 8圖繪示一具體實施例之折疊指令原理。與常見之處 理平行徑安排不同(其於第2 7圖描述),每個處理平行徑於 整個徑具有一固定寬度,其與一個資料元件寬度相等,於此 具體實施例,處理平行徑之安排不同。於此新安排,每個處 理平行徑於其輸入之寬度,與至少兩個來源資料元件之寬度 相等,且其輸出通常等於一個所產生資料元件之寬度。已知 以此方式安排處理平行徑,較習知技藝之安排,具有顯著優 點,因單一暫存器内之資料元件組(例如資料元件對),可為 平行處理操作之對象。由下述亦可知,此免除習知技藝安排 需執行之資料操作操作(即,循環操作),因無須安排資料元 件於進一步暫存器之正確欄位位置,以使多個操作得以平行 產生。 因此,來源資料元件 d[0]至 d[3]乃於暫存器之個別欄 51 1345703 位提供。相鄰來源資料元件 料元件。來源資料元件d[2J 件。因此,於此範例,具有 於步驟(A),於暫存器 一操作,以產生一結果資料 件對產生相同操作。 d[〇]與d[l]可視為一對來源資 與d[3]亦可視為一對來源資料元 兩對來源資料元件。 内之每對來源資料元件,乃執行 疋件,且於每個相鄰來源資料元 ^ … μ,入珥馬乏結果眘钮- 件,皆位於平行處理之相同 枓疋 咨μ 门徑。可知於步驟(Α)後,纟士要 資料元件之數目,為來源資料元 -果 〇Pd[3md[0]opd⑴亦可 之+。資料元件叫 P Lj視為一來源資料元件對。 於步驟於一來源資料元件對, 同操作,以產生-結果資料元件_ 〇p 步^相
d[3]。可知於步驟(B)後,杜 P 2] 〇P 資料元件數目之一半。如上所 亦為來源 故產生相同結果資料元件,與來源資料作 無關》 n D之正確順序
'、1卜踎果後,來源資料元件之 變為-半,且可於這些來源資料元件執行相同操作, 所需結果。因此,可知僅於 資料1 β 力兩個操作,便可產生所需 抖70件’…7圖之習知技藝安排需執行至少㈣ Γ瞭解此改進,乃透過於-來源暫存器内之資料元 執行平行處理操作,而得以有效率地達成。雖 52 僅 對 料 之 之 與 同 於 處 生 有 元 元. 明: 來i 來源資料元件,將瞭解任何數目之…料元件 J馮操作之對象 夕,雖然為清晰緣故,僅繪示來源資 十之操作,.將瞭解任你叔s 個、伽 何數目之來源資料元件對(例如 1因、四個式H史、Λ - 多)可為操作之對象。 實際上,為效率緣故,4>£_β t φ,.,折疊操作乃安排為,於最少數目 最小暫存器大操作,由暫存器資料槽案2。内,所支援 存Is大小所決定。第 _ 來m μ 弟29圖♦不—實施方式,其產生 木原'身枓疋件數目相同 u <結果f料元件。 來源資料元件d [ 〇 ]至d 數目 []k供於暫存器Dn。為產生相 叛目之結果資料元件,來 ^ ^ #枓兀件d[〇]至d[3]亦提供 育存盗Dm。將瞭解暫存器
、ffi A。 n兴Dm可為相同暫存器,SIMD 邏輯18由暫存器d讀抱 — v 臀存器Dn讀取母個來源資料元件兩次,以產 相同之結果資料元件。
於步驟(A)發出一個SIMD ^ *日令’每對來源資料元件具 一操作於其上執行,並產 對應之結果資料元件。 於步驟(B),發出另—SIMD扣人 和令’使得每對來源資料 件具有一操作於其上執行, 座生一對應之結果資料元件。 因此’可知已結合所有來 男术屌貢科凡件,以產生結果資料 伴。 之操作,其採用與說 瞭解於表示具有兩個 存器。此外,將可瞭 第30a至30d圖繪示各種折疊指令 中其他部分所敘述之相同語法。將 暫存器之情形,此二者可為相同暫 53 1345703 解每個來源暫存器,可指定作為目標暫存器,以減少所利用 之暫存器空間數量。
第30a圖繪示一 SIMD折疊指令操作,藉此,來自相同 暫存器之來源資料元件對,以「η」位元表示,於其上執行一 操作,以產生結果資料元件,以2η位元表示。提升(Promoting) 結果資料元件至具有2n位元,可減少溢位(overflow )發生 之可能性。當提升結果資料元件時,其通常為有號延伸,或 以〇’ s填充(padded )。下列範例總結支援此類操作之折疊 指令: 說明 (加入並提升相鄰 元件對)
符號 資料類型 操作元格式 VSUM .S16.S8 Dd, Dm • S32.S16 Qd, Qm .S64.S32 .U16.U8 .U32.U16 .U64.U32 於第30a圖所示之特定範例(VSUM.S32.S16Dd, Dm), 含有四個16位元資料元件之一 64位元暫存器Dm,乃折疊並 儲存於,含有兩個32位元結果資料元件之一 64位元暫存器 54 1345703
Dd。 第3 0b圖繪示一 SIMD折疊指令操作,藉此,來自不同 暫存器之來源資料元件對,以「η」位元表示,於其上執行一 操作,以產生結果資料元件,亦以「η」位元表示。下列範例 總結支援此一操作之最大與最小指令。 符號 資料類型 操作元格式 說明 VSUM .18 Dd, Dn, Dm (加入相鄰元件對) .116 .132 .F32
符號 資料類型 操作元格式 說明 VFMX S8 Dd, Dn, Dm (利用相鄰元件對最大值) •S16 •S32 · •U8 .U16 •U32 .F32 符號 資料類型 操作元格式 說明 55 1345703 (利用相鄰元件對最小值) VFMN ,S8 Dd, Dn, Dm .S16 .S32 ,U8 .U16 •U32 .F32
於第30B圖所示之特定範例(VSUM.I16Dd,Dn,Dm), 兩個6 4位元暫存器D m、D n,每個含有四個1 6位元資料元件, 乃折疊並儲存於,含有四個1 6位元結果資料元件之一 64位 元暫存器Dd。 第3 0c圖繪示一 SIMD折疊指令之操作,藉此,來自相 同暫存器之來源資料元件對,以「η」位元表示,於其上執行 一操作,以產生結果資料元件,亦以「η」位元表示。於第 3 0 c圖所示之特定範例,含有八個1 6位元資料元件之一 1 2 8 φ 位元暫存器Qm,乃折疊並儲存於,含有四個16位元結果資 料元件之一 64位元暫存器Dd。 第30d圖繪示與第30b圖相似之一 SIMD折疊指令操作, 但其中Dm=Dn,而於目標暫存器複製結果資料數值。來自相 同暫存器之來源資料元件,以「η」位元表示,於其上執行一 操作,以產生結果資料元件,亦以「η」位元表示,每個乃於 56 :存盗之另—襴位中複製。於第3°d圖所示之特定範例,含 個16位几資料疋件之__ 64位元暫存器、,乃折叠並储 子於’含有兩組兩㈤16位元結果資料元件之一 64位元暫存 器Dd。 J 圖圖表式地繪示SIMD折疊邏輯範例,其可支援折 叠指令’且其提供作為SIMD處理邏輯18之一部分。為清晰 故所不之邏輯用以支援其選擇每個相鄰資料元件對最大 v…而,將瞭解邏輯可容易地設計為提供其他操作 φ 之支援,將於下詳述》 邏輯由暫存器Dm,接收來源資料元件((Dm[〇]至 Dm[3] ’選擇性地一同接收’來自暫存器Dn之來源資料元件 •[]至D1^3])。或者,邏輯接收來自暫存器Qm之來源 資:兀件(Qm[〇]至Qm[7”。每一相鄰來源資料元件對, k供至連接之—折疊操作邏輯單元每個折疊操作邏 輯單το 40 0具有-算術單元41。,其對於來源資料元件彼此 ’進行相/減ϋ透過路徑415,提供何者較大之指示至多工鲁 窃420。根據透過路徑415之指示,多工器由操作邏輯單元 4 0 0輸出較大之來源資料元件數值。因此,可知每個折疊操 作邏輯單元400 ’安排為分別透過個別路徑425、435、445、 455,輸出連接相鄰資料元件對之最大值。 選擇與分^邏輯450接收結果資料元件’並透過路徑431 至434 ’提供所要求之這些結果資料元件,以儲存於 57 5703 暫存器資料檔案2〇内 存益Dd欄位内,以支援上述指令。 祝在將描述選擇與公Λ 评兴分配邏輯450之操作。 為支援第30a圖所續 n / 之扣7 ,來源資料元件Dm[0]至
Dm[3]乃提供至下方兩個 叠插作邏輙單元400»折疊操作邏 料早元400透過路徑425與435銓φ咨上丨 、4 3 5輸出資料元件。路徑4 3丨與 432將以有號延伸,或容妹袖炊斗,坦μ 延伸格式知:供1)"1[0]〇1)〇111[1],同 路仅433與434,將以有號延伸或零延伸格式提供Dm[2] 〇ρ
Dm[3]。此藉由SIMD解瑪器16回應折疊指令,產生使多工 器470選擇其b輸入,多 益4ί>υ選擇有號延伸或零延伸,
多工器490選擇其Ε铪人,Β夕T 3S 运悴卉b输入,且多工器48〇選擇其D輸入之信 號而達成。 為支援第30b圖所緣示之指令,來源資料元件Dm[〇]至 Dm[3]’乃提供至下方兩個折昼操作邏輯單元4〇〇,同時來源 資料元件Dn[0]至Dn[3],乃提供至上方兩個折疊操作邏輯 單元400。折疊操作邏輯單元4〇〇透過路徑425、43 5、445 與45 5輸出資料元件。路徑431將提供Dm[〇] 〇p Dm[l],路 徑432將提供Dm[2] op Dm[3],路徑43 3將提供Dn[0] op Dn[l] ’且路徑434將提供Dn[2] op Dn[3]。此藉由SIMD解 碼器16回應折疊指令,產生使多工器470選擇其a輸入, 多工器48 0選擇其C輸入,且多工器490選擇其E輸入之信 號而達成。 為支援第30c圖所繪示之指令’來源資料元件Qm[〇]至 58 1345703
Qm[7]’乃提供至折疊操作邏輯單元4〇(^折疊操作邏輯單元 400透過路徑425、435、445與455輪出資料元件。路徑μ! 將提供Qm[〇] op Qm[i] ’路徑432將提供Qm[2] 〇p如[3], 路徑433將提供Qm[4] op Qm[5],且路徑434將提供〇p Qm[7]。此藉由SiMD解碼器μ回應折疊指令,產生使多工 器470選擇其A輸入,多工器48〇選擇其c輸入且多工器 490選擇其E輸入之信號而達成。
為支援S 30d圖所繪示之指令,來源資料元件Dm⑼至 Dm[3],乃提供至下方兩個折疊操作邏輯單元彻。折疊操作 邏輯單元400透過路徑425與43 5輸出資料元件。路徑431 將提供 Dm[〇】〇P Dm[1],路徑 432 將提供 Dm[2] 〇p Dm[3], 路徑43 3將提供Dm[〇] 0P Dm[n,且路徑43 4將提供Dm[2] op Dm[3]。此藉由SIMD解碼器16回應折疊指彳,產生使多工 器470選擇其A輸入’多工器48〇選擇其d輸入且多工器 490選擇其F輸人之信號而達成。或者,將瞭解來源資料元
件,亦可提供至上方雨相w 乃兩個折疊操作邏輯單元400,且可執行 其將減少選擇與分配邏輯450之 如第30b圖所繪示之操作, 複雜度。 因此’可知此邏輯佶 使传,-σ果責科元件於單一操作中,直 接由兩個相鄰來源資料元件產生。 如上所述,折疊操作邏輯單元 例如, 料元件執行任何數目之操作 400,可安排為於來源資 可容易地提供另一邏輯, 59 1345703 以選 資料 比較 瞭解 作範 作, 小 〇 令採 當表 外, 暫存 資料 指令 量操 作, 暫存 結果 充或 保證 擇性地使多工器420透過路徑425,提供最小量之來源 元件。或者,計算單元410可安排為選擇相加、相減、 或相乘來源資料元件’並輸出結果資料元件。因此,將 本具體實施例之方式,使用此安排,於可執行之折疊操 圍,有利地提供較多彈性。 此外,將瞭解雖然第31圖所描述之邏輯支援丨6位元操 可提供相似邏輯以支援32或8位元操作,或任何其他大 第32圖繪示向量乘 用說明書其他部分所述之相同語法。將瞭解,如前所述 示具有兩個來源暫存器時,此二者可為相同暫存器。^ ::來源暫存器可指定為目標暫存器,以減少所利用: 器空間數量,並得以有效率的重新循環資料元件。
I存器Dm儲存—些資料元件、[()]至。每個這! _ 表不可選擇純量操作元。向量乘以純量SIM 作乃指定其中一資料元件做為純量操作元,並使用此$ 70於另—暫存器口„之所有資料元件,平行執行 :。結果乃儲存於一對應暫存器…之欄位。將瞭解儲存2 =、Dn與Dd之資料元件,皆可具不同大小。尤其 :’、件可相對於來源資料元件提升。提升可包含零★ 號延伸,以將一種資料類型轉換成另一類型。此具; 不會發生溢位之額外優點。
60 1345703 可選擇SIMD操作之一純量操作元,對於含有資料元件 矩陣之情況尤其有效率。不同純量操作元,可寫入至 SIMD 暫存器檔案20,且接著可立即選擇做為不同向量乘以純量操 作,無須重新寫入資料元件,或四處移動資料元件。下列範 例相乘指令支援此一操作:
乘以純量 符號 資料類型 操作元格式 說明 VMUL .116 Dd,Dn,Dm[x] (Vd[i] = Vn[i] * Vm[x]) .132 Qd,Qn,Dm[x] .F32 •S32.S16 Qd,Dn,Dm[x] .S64.S32 •U32.U16 .U64.U32 純量累積相乘(Multiply Accumulate by Scalar ) 符號 資料類型 操作元格式 說明 VMLA .116 Dd, Dn, Dm[x] (Vd[i] = Vd[i] + (Vn[i] * Vm[x])) .132 Qd, Qn, Dm[x] .F32 •S32.S16 Qd, Dn, Dm[x] 61 1345703 •S64.S32 .U32.U16 .U64.U32 純量相乘相減(Multiply Subtract by Scalar ) 符號 資料類型 操作元格式 說明 VMLS •116 Dd, Dn, Dm[x] (Vd[i] = Vd[i] _(Vn[i] * Vm[x])) .132 Qd, Qn, Dm[x] .F32 •S32.S16 Qd, Dn, Dm[x] .S64.S32 •U32.U16 .U64.U32
Vd、Vn與 Vm描述由所選擇暫存器格式,以及所選擇 資料類型所建構之元件向量。此向量内之元件選擇作為陣列 符號。例如,Vd[0]選擇向量Vd中最下方之元件。 一註標(iterator ) i乃用於允許向量定義;語法乃對於 所有i值均成立,其中i小於向量内之元件數目。此指令定 義提供「資料類型」與「操作元格式」行;藉由從每一行取 出一個而建構有效指令。 第33圖繪示純量操作元H0至H3 1,於SIMD暫存器檔 62 1345703 案2 0内之安排。如說明書別處所述,用於指令領域,以指定 SIMD暫存器檔案20内,資料元件位置之較佳位元數目為5 位元。此得以指定32個之可能位置。可瞭解,將純量操作元 映射於SIMD暫存器檔案20之一種可能方式,乃是將每個操 作元置於個暫存器D0至D1之第一欄位。然而,SIMD暫存 器檔案20反而安排為,映射或混疊所選擇之純量操作元,至 SIMD暫存器檔案20之第一 32個邏輯欄位。以此方式映射純 量操作元,乃提供顯著優點。首先,藉由定位於鄰近欄位之 純量操作元,使得用於儲存純量操作元之D暫存器數目最小 化,而可使用於儲存其他資料元件之D暫存器數目最大化。 藉由具有儲存於鄰近欄位之純量操作元,而得以存取一向量 内之所有純量操作元,當執行矩陣或過濾(fiIter )操作時, 此將為有利地。例如,一矩陣乘以向量之相乘,對於每個由 向量選擇之純量,需執行一向量乘以純量之操作。此外,以 此方式,由至少一些暫存器中,儲存可選擇純量操作元,所 有純量操作元可由這些暫存器中選擇。 第3 4圖圖表式地繪示,安排為執行一向量乘以純量操作 之邏輯之一具體實施例。 來源資料元件(Dm [0]至Dm[3])由暫存器Dm提供。 每個來源資料元件,乃提供至純量選擇邏輯 5 1 0,其包含一 些多工器5 00。每個來源資料元件,乃提供至每個多工器500 之一個輸入(即每個多工器接收來源資料元件Dm [0]至 63 1345703
Dm[3]。因此,可知每個多工器可輸出任一來源資料元件Dm [0] 至Dm[3]。於此具體實施例,每個多工器安排為輸出相同來 源資料元件。因此,純量選擇邏輯5 1 0可安排為選擇與輸出 一純量操作元。此藉由SIMD解碼器16,回應向量乘以純量 操作,產生之信號而達成,使得多工器輸出其中一來源資料 元件Dm [0]至Dm[3],作為選擇之純量操作元。
向量乘以純量操作邏輯5 2 0,乃接收選擇之純量操作元, 且亦接收由暫存器 Dn所提供之來源資料元件 Dn [0]至 Dn[3]。每個來源資料元件,乃提供至向量乘以純量操作邏輯 5 2 0,.其包含一些操作單元5 3 0。每個來源資料元件,乃提供 至其中一操作單元5 3 0 (即,每個操作單元接收其中一來源 資料元件Dm [0]至Dm[3],以及所選擇之純量操作元)。向 量乘以純量操作邏輯5 2 0於兩個資料元件執行一操作,並輸 出一結果資料元件,以儲存於SIMD暫存器資料檔案20内暫 存器之個別欄位,以支援上述指令。此藉由S IM D解瑪器1 6,
回應向量乘以純量指令,產生之信號達成,使得操作單元5 3 0 於所接收之資料元件,執行所需操作。 因此,可知此邏輯,使得來源暫存器之其中一資料元件, 選擇作為純量操作元,並使用相同純量操作元,於來自另一 暫存器之所有來源資料元件,執行向量乘以純量操作。 第3 5圖顯示於SIMD處理中,處理移位與窄化操作之一 種已知方式。可知需三個個別指令(SHR、SHR與PACK LO) 64 1345703 以執行此操作。於第35、36與38圖,為清晰緣故,中間值 以虛線表7F。
第36圖顯示根據本發明之右移與窄化操作。本具體實施 例之架構,尤其適合用於處理移位與窄化操作,且可回應單 一指令執行。指令乃以SIMD解碼器16内之一指令解碼器解 碼(見第1圖)。於此範例,於暫存器Qn内,位於SIMD暫 存器檔案2 0之資料,乃右移位5位元,且接著其餘資料循環, 且接著右邊16位元,轉移至亦於SIMD暫存器檔案20内之 目標暫存器 D d。硬體亦可選擇性地支援循環及/或資料之飽 和(saturation),根據指令而定。通常右移位指令不需徵和, 當處理整數右移位時,通常產生一較小數字。然而,當右移 位與窄化飽和可能為適當時。
飽和乃是可藉由選擇最靠近之可允許數值,用於限制資 料元件於某一範圍之一過程。例如,若兩個無號8位元整數, 使用8位元暫存器相乘,結果可能溢位。於此情形,所能提 供之最正確之結果為二位元11111111,且因此,數字將飽和 以給予此一數值。當移位與窄化時,一相似問題可能產生, 從而使得窄化之數字無法填入較窄空間。於此情形,於使用 無號數字情泥下,當於移位步驟時所摒棄之任何位元不為零 時,數字將飽和於最大可允許數值。於有號數字情形,問題 將更形複雜。於此情形,當最高有效位元與所摒棄之任一位 元不同時,數字不需飽和於最大可允許正數字,或最大可允 65 1345703 許負數字。
飽和亦可能發生於資料元件輸入類型與輸出不同時,例 如一有號數值可能移位或窄化、飽和與無號數值輸出。得以 輸出不同資料元件類型之能力為非常有用地》例如,於圖素 處理,亮度為一無號數值,然而,於處理此一數值時,可能 以有號數值處理較適當。需輸出隨後處理之一無號數值,然 而僅由有號切換為無號數值可能產生問題,除非提供得以飽 和數值之能力。例如,若於處理時,由於些許不正確,亮度 值下降至一負數字,僅以一無號數值,輸出此負有號數值將 無意義。因此,於輸出無號數值前,得以將任何負數字飽和 至零之能力,乃為一非常有用之工具。
對於不同移位指令之可能格式範例,乃於下方之表格6 與7提供。可知指令指定其為向量指令,具有V於前方,接 著以SH指定一移位,且於最接近值(immediates)移位情形, 右邊或左邊方向接著以 R或L表示。指令接著包含兩種類 型,如同表格 0,第一為資料元件於目標暫存器之大小,且 第二為元件於來源暫存器之大小。下一資訊包含目標暫存器 與來源暫存器之名稱,且接著可給予一最接近值,此數值表 示於此資料中移位之位元數,且於前方具有#。可使用一般指 令格式之修飾詞,Q用以表示操作使用飽和整數計算,且R 用以表示操作執行循環。關於指令格式之更多細節,乃於前 面敘述中提供,例如,於表格〇。 66 1345703 左移 提供 一負 對於 藉由
將來 低, 何固 以及 擇。 當以 下列 包裝 符號 表格7顯示移位有號變數之指令。此指令與最接近值之 位相同’但並非提供具有指令之—最接近值乃以指令 表示有號變數向量,所儲存之一暫存器位址。於此情形, 數字表示向右移位。當移位之位元數字儲存於向量時, 毎個資料元Ί牛’可儲存不同之有號變數使得其可個別 不同數量移位》此過程乃於第39圖詳細顯示。 丧格6 由最接近值移位 最接近值移位,乃使用於指令内編碼之一最接近值以 源向量之所有元件移位相同量。窄化方式允許使數值降 其了包3飽和而延伸方式(Long versions)允許以任 定點提1¾。 |^供乂累積方式移位,以支援有效率之比例(scaling), 許多D S P决算法中之累積。右移位指令亦提供循環選 香環實際上乃藉由加入一半至欲循環之數字執行。因此,φ η位右移位時’乃於移位前加入2 n · i至此值。因此,於 表格,若 ng 1 r〇Und⑷,或若 u 〇,r〇und⑷=〇。 乃包含位元方式(Bitwise)擷取指令,以允許有效率地 (packing)資料。 資料類型 操作元格式 說明 67 1345703
Dd,Dn,#UIMM 由最接近值右移 Dd,Dn,#UIMM Vd[i]:=Vn[i]»UIMM
VSHR .S 8 •S16 •S32 .S64 •U8 •U16 •U32 •U64 .S8.sl6 Dd, Qn, #UIMM 由最接近值與窄化右移 .S16.S32
Vd [i]:= Vn[i]»UIMM •S32 .S64 •U8.U16 .U16.U32 •U32.U64
VRSHR .S 8 Dd,Dn, #UIMM 以循環最接近值右移 •S16 Qd,Qn, #UIMM Vd[i]:= (Vn [i] +round (UIMM))
.S32 »UIMM .S64 •U8 .U16 68 1345703 •U32 •U64 •S8.S16 Dd, Qn,#UIMM 以最接近值右移 •S16.S32 並以循環窄化 •S32.S64 Vd[i]:=(Vn[i] + round .U8.U16 (UIMM))» UIMM .U16.U32 •U32.U64
VQSHR .S8.S16 Dd, Qn, #UIMM 以最接近值飽 和右移與窄化 .S16.S32 Vd[i]:=sat<td> (Vn[i]»UIMM)
•S32.S64 •U8.U16 •U16.U32 .U32.U64 •U8.S16 •U16.S32 .U32.S64 以最接近值飽和右移 且以循環窄化 VQRSHR .S8.S16 Dd, Qn, #UIMM .S16.S32 69 1345703
Vd[i] := sat<td> ((Vn[i] + round (UIMM))» UIMM) •S32.S64 ,U8 .U16 .U16.U32 •U32.U64 .U8.S16 .U16.S32 •U32. S64
VSRA .S8 .S16 .S32 .S64 •U8 •U16 •U32 Dd, Dn, #UIMM Qd, Qn, #UIMM 由最接近值右移 並累積 Vd[i] := Vd(i) + (Vn(i) » UIMM) •U64 VQSRA .5 58 Dd, Dn, #UIMM 以最接近值飽和右移與累積 .S16 Qd, Qn, #UIMM .S32 Vd(i) := sat<td>(Vd(i) .S64 + (Vn[i] » UIMM)) •U8 .U16
70 1345703
VRSRA •U32 •U64 •S8 Dd, Dn, #UIMM 由最接近值右移 •S16 Qd, Qn, #UIMM 並以循環累積 .S32
Vd(i) := Vd[i] + ((Vn[i] + .S64 round(UIMM))» UIMM)
•U16 •U32 .U64
VSHL
VQRSRA .S8 Dd,Dn, #UIMM 由最接近值飽和右移 • S16 Qd, Qn, #UIMM 並以循環累積 • S32 Vd(i) = sat<td>( •S64 Vd(i) + ((Vn[i] + •U8 round(UIMM))» UIMM)) •U16 .U32 .U64 .18 Dd, Dn, #UIMM 由最接近值左移 .116 Qd, Qn, #UIMM Vd[i] .= Vn(i) « UIMM
71 .1321345703 .164 •S16.S8 .S32.S16 .S64.S32 .U16.U8 •U32.U16 .U64.U32
Qd, Dn, #UIMM 由最接近值延伸左移 Vd(i) := Vn[i] « UIMM
VQSHL S8 Dd, Dn, #UIMM •SI6 Qd, Qn, #UIMM •S32 •S64 .U8 .U16 •U32 •U64 •U8.S8 •U16.S16 •U32.S32 .U64.S64 由最接近值飽和左移
Vd[i] := sat<td> (Vn[i] « UIMM)
72 1345703 表格7 由 有 號變數 移 位 於 此 部分之 移 位,乃 於 元 件 之 一向量 執 行 移位 > 第 二 向 量 内指定 之 有號移 位 量 控 制 。支援 有 號 移位 量 許 支 援 以 指數( exponent ) 值 移 位 ,其可 為 負 值; 一 值 將 執 行 右移位 〇 向量移 位 允 許 每 個元件 以 不 同量 移 可 用 於 以 相同量 移 位所有 徑 > 藉 由 在執行 移 位 前, 複 控 制 操 作 元至向 量 之所有 徑 而 達 成 。有號 移 位 控制 值 與 欲 移 位 之操作 元 之最小 操 作 元 元 件,大 小 相 同之 一 然 而 , 移 位器變 數 僅使用 每 徑 底 部 8位元 解 釋 ,以 決 量 〇 亦 可 具有循 環 與飽和 選 項 0 符 號 資料類 型 操 作 元 說明 VSHL S8 Dd, D η, Di T1 由有號變數左移 .S16 Qd,Qn, Q】 Ώ Vd[i] ;= V n[i] << .S32 .S64 .U8 .U16 .U32 Vm[i] • U64 其藉由 ,乃允 負控制 位,但 製移位 ,乃是 元件。 定移位 1345703 VQSHL ,S8 .S 16 .S32 .S64 .U8 .U16 .U32 .U64
Dd, Dn, Dm 由有號變數飽和左移 Qd, Qn, Qm
Vd(i) := sat<td> (Vn[i] « Vm[i])
VRSHL ,S8 Dd,Dn, Dm 由有號變數循環左移 ,S16 Qd,Qn,Qm Vd[i] := (Vn[i] + round S32 (-Vm(i))) << VM(i) S64 U8 U1 6 U32 U64
VQRSHL .S8 .S16 .S32
Dd,Dn, Dm 由有號變數飽和循環左移
Qd, Qn, Qm
Vd(i) := sat<td>((Vn[i] + 74 1345703 .S 64 round(-Vm[i])) « Vm[i]) ,U8 .U16 .U32 • U64
因此,可知硬體,乃支援可指定來源資料元件,以及結 果資料元件大小之指令,且有時亦可指定欲移位資料之位置 數目。此使得其成為一具有強大適用性與功效之工具。
第36圖所示之右移位與窄化操作,乃具有一些可能應 用。例如關於固定點數字之計算,當需某些精確度時,可將 _ 1 6位元數字置於朝向3 2位元數值之中心,以減少資料溢 位或不足之危險,同時執行計算。於需要計算16位元數字之 末端,且因此,如第36圖所示之移位與窄化操作將為適當 的。本發明使用不同大小之來源與目標暫存器,所產生之可 能性,尤其與此處有效,且允許不同大小之資料於SIMD處 理時,仍舊位於特定徑。 第3 6圖所繪示之移位與窄化操作之另一使用,可用以處 理彩色圖素資料。SIMD處理尤其適合影像資料,因影像資料 包含許多圖素,皆須於其上執行相同操作。因此不同圖素資 料,可位於一暫存器不同徑,且單一指令可於所有資料執行 相同操作。通常,影像資料可為紅色、綠色與藍色資料。於 75 1345703 其上執行有意義操作前,需將其加以分離。第37圖顯示於一 16位元資料元件呈現之紅色、綠色與藍色資料之一典型範 例。於所示之範例,藍色資料可藉由左移位3位元與窄化操 作擷取。左移位3個位置,乃將藍色資料送至資料元件之中 間右側,以虛線暫存器圖表式地顯示(表示一中間值),三個 零填入由資料左移所造成之資料值右側之三個空白位置。窄 化操作使得藍色資料與三個零,轉移至結果8位元資料元件。
除移位與窄化外,本發明亦可用於相加與移位,此過程 乃示於第3 8圖。於此情形,執行相加後為一左移位。此操作 可用於,例如,轉移3 2位元數值至6 4位元數值,3 2位元數 值乃置於64位元數值内之一適當位置。於所示之範例,兩個 32位元數值,藉由將最高有效位元置於徑,且將零加入至最 低有效位元,轉移至64位元數值。
第3 9圖繪示使用數值向量之可能性,表示每個資料元件 需移位之位數,數值為有號整數,負數表示左移位。暫存器 保持每一資料元件使用之一數值,且每一資料元件,藉由位 於其徑之數值所指定之數量移位。此類操作之指令乃於先前 之表格7提出。
第4 0圖圖表式地顯示一簡單多工操作。於此多工操作, 多工器700根據控制位元c之數值,選擇數值a或數值b於 D之輸出。c乃用於選擇a與b間之輸出。c通常根據一判斷 之結果,例如a > b。本發明架構之具體實施例提供於SIMD 76 1345703 處理時,執行多工之能力。SIMD 處理不適合執行分支 (branch)操作,且因此多工無法使用標準方式執行,若接 著產生一指令,而非一遮罩,遮罩將用於表示選擇兩個來源 暫存器a與b哪一部份。
此遮罩由控制數值所構成,用以表示兩個來源暫存器 a 與b何部分被選擇。於一些具體實施例,於a某些位置之一, 可表示選擇b之某些部分,而於此位置之零,將表示選擇a 之對應部分。此遮罩乃儲存於一般用途暫存器,從而減少需 要使用特殊用途暫存器。
-遮罩之產生,乃根據所執行之多工操作,且回應此操作 而產生。例如於上述之情況,將執行a與b之比較。此可以 一部份接著一部份達成,例如比較SIMD處理中之對應資料 元件。根據b大於a,或b等於或小於a,比較b與a之對應 資料元件,且將一數值寫入部分一般用途暫存器,用於儲存 這些控制數值。此可藉由平行對於所有資料元件,比較是否 大於指令 VCGT。此指令乃提供於系統具體實施例之指令集 中》下面之表格8,顯示一些比較指令之廣大範圍,提供做 為本架構之具體實施例。 表格8 比較與選擇 可執行變數之比較與測試,以產生遮罩,其可用於提供 77 1345703 資料平面 (plane ) 選擇與遮罩 。其亦提供指令以選擇最大值 與最小值 ,包含折 疊方式,其 可用於向量化碼(vectorised code)之末端,以尋找向量内之最大值與最小值。 符號 資料類型 操作元格式 說明 VCEQ • 18 Dd, Dn, Dm 比較相等 • 116 Qd,Qn,Qm Vd [i] : =(Vn [i] == Vm [i])? • 132 一:零 .F32 VCGE • S8 Dd, Dn, Dm 比較大於或相等 • S 16 Qd,Qn,Qm Vd [i] : =(Vn [i]>= Vm [i]) ? • S32 一:零 • U8 • U16 .U32 .F32 VCGT • S8 Dd,Dn,Dm 比較大於 • S16 Qd, Qn, Qm Vd[i] := (Vn[i] > Vm[i]) ? • S32 一: 零 .U8
78 1345703 .U16 .U32 • F32 VCAGE VCAGT .F32 Dd,Dn,Dm Qd,Qn,Qm 比較絕對大於或相等 Vd[i] := (|Vn[i]| >= |Vm[i] |) ? 一:零 .F32 Dd,Dn,Dm Qd,Qn,Qm 比較絕對大於 Vd(i) : = (|Vn(i)丨 > |Vm(i)|)? — •零 VCEQZ • 18 Dd, Dm 比較相等於零 • 116 Qd,Qm Vd[i] := (Vm[i] == 0) .1 32 ? 一:零 • F32 VCGEZ ,S8 Dd,Dm 比較大於或相等於零 .S16 Qd, Qm Vd(i] : = (Vm[i] >= 0) .S32 ? 一:零 .F32 VCGTZ ,S8 Dd, Dm 比較大於零 .S 16 Qd, Qm Vd(i] := (Vm[i] > 0) ?
79 1345703 .S32 .F32 :一:零 VCLEZ .F32 Dd, Dm 比較小於或等於零 Qd, Qm Vd[i] :=(Vm[i] <= 0) ? — :零 注意: 整數 a <= 0 == !(a > 0) VCLTZ .F32 Dd, Dm 比較小於零 Qd, Qm Vd[i] :=(Vm[i] < 0) ? —:零 注意: 整數 a < 0 == !(a >= 0) VTST • 18 Dd, Dn, Dm 測試位元 .116 Qd, Qn, Qm Vd[i] := ((Vn[i] & Vm[i]) != 0) • 132 ? 一:零 VMAX .S8 Dd, Dn, Dm 最 大值 .S 16 Qd, Qn, Qm Vd[i] := (Vn(i] > = Vm[i]) ? .S32 Vn(i] : Vm(i] .U8 .U16 .U32 .F32
80 1345703 • S8 Dd, Dn, Dm 最小值 S16 Qd, Qn, Q m Vd[i]:= =(Vn(i] S32 Vm[i]: Vn(i] U8 U16 U32 F32
VMIN 一旦產生遮罩,可使用單一指令,以利用包含於此遮罩 内之一般用途暫存器,即控制暫存器C,以選擇a或b。因此, 資料處理器由C所控制,以執行選擇a或b之多工操作。
第4 1圖圊表式地繪示系統之一具體實施例,其中選擇來 源數值a或b,乃以位元方式達成。於此情形,控制暫存器 73 0藉由比較暫存器a 710與b 720内之資料元件,填入資 料。因此,資料元件a0,其寬度為8位元,乃與具相同大小 之資料元件b 0進行比較。於此情形,a小於或等於b,且因 此八個零乃插入至控制暫存器7 3 0對應部分。若a大於b, 八個一乃插入至控制暫存器7 3 0對應部分。於所有資料元件 執行一相似比較,且產生對應控制位元。產生控制向量之比 較操作,乃對應於指令VCGT.SS c,a,b。接著可非常簡單地以 位元接著位元方式,執行選擇,藉由在儲存於來源暫存器之 81 1345703 位元,以及儲存於控制暫存器之對應位元間,執行一簡單邏 輯操作,每個結果位元乃寫入至一目標暫存器,於此範例其 為暫存器 730,即,結果覆蓋控制數值。此種以位元方式選 擇之優點為與資料類型及寬度無關,且若適當的話,可比較 不同大小之資料元件。
第4 2圖顯示另一具體實施例,其中控制非以位元方式達 成,而以資料元件方式達成。於所示之具體實施例,若控制 暫存器C 730内之資料元件,大於或等於零,接著,來源暫 存器b 720中之一對應資料元件,寫入至目標暫存器(於此 情形為暫存器720)。如果,如同於此範例,C為一有號整數, 接著當選擇a或b時,僅需考慮C之最有效位元。
於其他具體實施例,C之其他部分可用於決定,選擇來 自暫存器a 71 0,或來自資料暫存器b 720之資料元件。此類 特性之範例包含,C為奇數或偶數,其中再次地,僅需考慮 控制數值之一位元,於此情形最小有效位元,或若C等於零, 不等於零或大於零。 通常ARM指令,且實際上許多其他RISC指令,任何指 令僅提供三個操作元。多工操作一般需四個操作元,以指定 兩個來源暫存器a與b,一個控制暫存器C與一目標暫存器 D。本系統之具體實施例乃是利用,通常於多工操作後,不 再需要至少兩組來源資料其中之一,或控制資料之特點。因 此,目標暫存器選擇做為兩個來源暫存器其中之一,或是控 82 1345703 制暫存器。此僅於控制暫存器為一般用途暫存器,而非特殊 暫存器時有效。於本系統之具體實施例,於指令集提供三種 不同指令,一個指令指定寫回至一來源暫存器,另一指令寫 回至其他來源暫存器,且第三指令寫入至控制暫存器。每個 指令僅需三個操作元,指定兩個來源暫存器與一控制暫存 器。這三個指令乃於下面之表格9中指出。 表格9 · 邏輯與位元方式選擇 符號 資料類型 操作元格式 說明 VBIT 無 Dd,Dn,Dm 若「真」,位元方式插入
Qd, Qn, Qm Vd ··= (Vm) ? Vn : Vd VBIF 無
Dd, Dn, Dm 若「假」位元方式插入 Qd, Qn, Qm Vd := (Vm) ? Vd : Vn
VBSL 無 Dd,Dn,Dm 位元方式選擇
Qd, Qn, Qm Vd := (Vd) ? Vn : Vm 第4 3圖圖表式地繪示多工器安排之三個範例,乃對應於 系統提供之三個多工指令。第43a圖顯示多工器701連接以 83 1345703 執行指令位元方式選擇VBSL。於此範例,相較於第41與42 圊所繪示之範例,當C為「假」(0)時,選擇A,且當C為 「真」(1)時,選擇 B。於所繪示之具體實施例,目標暫存 器與控制暫存器相同,使得結果數值覆蓋控制數值。若需相 反選擇,即,當C為「真」時,選擇A,且當C為「假」時, 選擇B,可僅藉由交換操作元A與B,使用相同電路。
第43b圖顯示對應於若「真」,指令BIT位元方式插入之 多工器702,且使得來源暫存器A做為來源與目標暫存器, 且以結果資料覆蓋。於此範例,當C為「真」時,B寫入至 A,同時若C為「假」時,於暫存器A之數值維持不變。於 此具體實施例,若需相反選擇,即,當C為「假」而非「真」 時,希望寫入B至目標暫存器,此時無法僅藉由切換暫存器, 因設備不具有如同多工器7 0 1之對稱性。
第43c圖顯示多工器703,設定為對應於第43b圖之相 反選擇,即若「假」時,指令BIF以位元方式插入。於此範 例,當C為「假」時,於暫存器A之數值,寫入至暫存器B, 同時當C為「真」時,於暫存器B之數值維持不變。如同第 4 3 b圖,於此系統不具對稱性。 第44圖圖表式地繪示,儲存於記憶體内資料B0至B7 之位元組序列。這些位元組乃根據位元組不變量(i n v a r i a n t ) 定址方式儲存,從而相同位元組之資料,將回應一特定記憶 體位址之讀取而返回,而與目前尾序模式無關。記憶體亦支 84 1345703 援未校直之定址,從而半字元,字元,或較長多位元組資料 元件,可由記憶體之任一記憶體位元组位址讀取。 當系統於小尾序模式,由記體體讀取八位元組之資料B 0 至B7時,接著位元組B0至B7乃以第44圖所示之順序,配 置於暫存器800内。暫存器800含有四個資料元件,每個包 含16位元之一半字元。第44圖亦顯示,當系統操作於大尾 序模式時,相同八位元組之資料B0至B7讀取至暫存器802。
於此範例,一旦資料由記憶體讀取至個別SIMD暫存器 800、802,乃接受一平方(squaring)操作,產生加倍之資料 元件大小。因此,結果乃寫入至兩個目標SIM D暫存器8 0 4、 806。由第44圖可知,分別寫入第一或第二暫存器對804、
806之結果數值,乃根據尾序模式而變化,其中資料已由記 憶體讀取。因此,用以進一步操作平方結果數值之SIMD電 腦程式,可能需要加以改變,以考慮根據尾序模式之不同資 料配置。此不利地需產生兩種不同電腦程式形式,以處理資 料儲存於記憶體中之不同尾序方式。 第4 5圖藉由提供重新排序邏輯8 0 8提出此問題。資料處 理系統包含記憶體存取邏輯 8 1 0,用以由記憶體中一特定記 憶體位址,讀取八位元組之資料Β 0至Β 7,並利用記憶體之 位元組不變量定址特徵。記憶體存取邏輯810之輸出,乃因 此表示,由一特定記憶體位址之相同輸出徑所讀取之位元 組,而與尾序模式無關。因此,於所繪示之範例,其中資料 85 元件為半字元 元组,可兔 其他尾序模式 資料元件 憶體存取邏輯 暫存器812之 新排序載入之 使用之尾序楔 形’資料元件 使其以未改變 以大尾序形式 轉(reverse ) 使得半字元資 内出現。以此 暫存器内之資 料儲存於記憶 元件重新排序 之一信號,以 尾序模式,將 制所應用之重 存於記憶體内 新排序。相反 ’由一特定記憶體位址回復(recovered)之位 羊字元於一尾序模式時之^ 敢兩有效部分,且於 备一半字元之最低有欵部分。 重新排序邏輯 808,乃田μ 土 5用於重新排序,藉由記 8 1 〇由記憶體擷取之資翻_ ;仙 灵科7L件,使得載入SIMd 資料元件,將與以小尾庄犯』 ^ 毛序形式儲存,且以無重 資料,具有一致之形式 Λ 而與記憶體系統内所 式無關。於記憶體系铋出油 承練内使用小尾序模式情 重新排序邏輯808將不曹 垔新排序位元組,且將 方式通過。然而,對於資 Μ针於s己憶體系統内, 儲存情況,資料元件重薪Μ ^ β 新排序邏輯808用以翻 由記憶體讀取之每個丰宝_ ^ 予疋内之位元組順序, 料元件將以小尾序形式,# 於SIMD暫存器812 万式,一個SIMD電腦鉬
. ^程式可對於轉移至SIMD 枓元件,執行正確資料虚^ 頁抖處理操作,而與這些資 體内之尾序模式無關。由 由第45圖將可知, 邏輯808,乃回應表矛 科 及矣 〜己憶體所使用尾序模式 及表示關於資料元件夫, 供八 , 小之一信號。所使用夕 控制是否需重新排序,B* &用之 新排序之本質。將可知 小將控 田資枓以小尾序模 ,且SIMD暫存器為 模式儲 尾序時,接著便無β 地,若SIMD暫存器採 無項重 採用大尾序形式,則當資 86 1345703 料以大尾序形式儲存於記憶體内時,便無須重新排序,但當 資料以小尾序形式儲存於記憶體内時,便需重新排序。
第4 6圖繪示與第4 5圖相似之一範例,除了於此範例, 資料元件為3 2位元資料字元外。可知當這些資料字元以大尾 序形式儲存於記憶體内,資料元件重新排序邏輯8 0 8所利用 之重新排序,乃翻轉由記憶體存取邏輯810所擷取之,四個 字元組資料元件之位元組順序,使得這些乃儲存於SIMD暫 存器 8 1 2,且與以小尾序形式儲存於記憶體,並以無重新排 序方式載入之資料,具有一致形式。 將瞭解於此處整體描述之處理器系統内容中,記憶體存 取邏輯8 1 0與資料元件重新排序元件8 0 8,可形成部分先前 所述之載入儲存單元。當讀取資料至純量暫存器時,資料元 件重新排序邏輯8 0 8亦可用於補償記憶體系統尾序,當純量 暫存器内之資料採用一特定尾序時。
第4 7圖更詳細地繪示資料元件重新排序邏輯8 0 8。將瞭 解此以三層多工器形成,藉由個別控制信號Z、Y與X所控 制。這三層分別用於翻轉資料之相鄰位元組、相鄰半字元與 相鄰字元之位置。控制信號X、Y與Z乃由表示大尾序模式 之一尾序信號,以及分別表示64、3 2或1 6位元資料元件大 小之一大小信號解碼而來,如第4 7圖所繪示。將瞭解許多其 他形式之資料元件重新排序邏輯,將可用於達到相同功能結 果,如第45與46圖所繪示》 87 /uj 用於執行記憶體之位 . 70 -·且不變量定址之印揞縣y_ 令,便利地使用一 德體存取沿 理器之純量暫存$ 其保持於處 件大小之資料處 , 定又受資枓疋 ’以及對於SIMD暫在g囟化 資料元件,進耔榀此次 子奋内所選擇之 進仃操作之資料處理指令。 第48圖緣示一暫存器資料儲存庫900 ,包含暫存 D1列表,每個做為-表格暫存器,一索引;;含暫^存器D〇、 果暫存器D5。可知表… 索引暫存…與-結
表格暫存窃D〇、D1,乃為暫存器 存庫900内連續#妹 貢科儲 4叙暫存器。結果暫存器D7肖索引暫存 乃相對於表格暫存器盘 與彼此而任意配置。對應於此資 斜操作之指令語法乃示於圖示t。
匕第49圖圖表式地繪示表格查詢延伸指令之動作。此指令 乃指定做為表格暫存器區塊之一暫存器列表,例如藉由於列 表指定第一暫存器,及於列表指定暫存器I目(例如一至 四)。指令亦可指定做為索引暫存器D7之暫存器,以及做為 結果暫存器D5之暫存器。表格查詢延伸指令進一步指定, 儲存於表格暫存器D0、D1之資料元件,以及選擇並寫入結 果暫存35 D 5之資料元件大小。於所繪示之範例,表格暫存 器D 0、D1每個含有八個資料元件。因此,索引數值之範圍 由0至15。此預先決定範圍外之索引數值,將不會產生表格 查句,而是結果暫存器D5内之對應位置將仍舊不變❶如所 繪不,第四與第六索引數值以此方式超出範圍。其他索引數 88 1345703 值,乃指向表格暫存器]~)0、ι^ι D 1内之個別資料元件,且這些 資料元件’接著儲存至咭果麵左 ,口果暫存器D5内之對應位置。索引 暫存益D7内之索引數值位晉, 置以及結果暫存器D5内之資料 元件位置,具有一對—之對庇^ ί應性。於結果暫存器中標示 為「U」之數值’表示於表格 宜°句延伸指令動作時,保留儲 存於這些位置之數值。田, _ ’於執行指令前’無論儲存於這
1位置之位元為何,於執行户入A 轨仃彳θ令後,依然儲存於這些位置内。 第50圖繪示來自第 圖之索引數值’其接著乃接受 旁相減操作,從而十六之移位量》乃施加於每個 =數值。此使得先前位於範圍内之索引數值,變為超出範 ^ . 數值’現在移動至範圍内。因此, 备3有目前修改索弓丨數值之幸 延柚a 裳引暫存器D7,於其他表格查詢 延伸指令重新使用時, 内,B 與第六索引數值現在位於範圍 使得表格暫存器D0、〇1 (亦τ认楚主 令所指a U 1 C或可於第二表格查詢延伸指 表格查:之其他不同暫存器)内執行表格查詢,於執行第二 D7内:單1伸指令前’其亦可重新載入。因此,索引暫存器 栽入之 '引數值集’可接受-移位量’且接著連同重新 表格暫存器DO、D1番鉍括m 用表抵 重新使用’而得以具有較大可使 份之功效。 帛 5 1 格查詢指:繪:除表格查詢延伸指令外,可提供進-步之表 範園之 、二各令之差異為,當表格查詢指令遭遇超出 、?丨數值時’結果暫存器D5内,對應於此索引數值 89 之位 些程 器, 索引 且J 器+ 儲; 論 之 據 ( s 構 所 校 形 存 每 實 置’乃以零數值寫入,而非使其… 式化情況為有用的。第51圏之範例繪示三個表格暫存 而非兩個表格暫存器。第_、第三、第四、第六與第七 數值乃超出範圍。第二 '第五與第八索引數值於範固内, 生對應於表格暫存器内資料元件之表格查詢。 如稍早所述’提供載入與儲存指令,以移t SIMD暫存 *案2〇 (見第1圖)與記憶體間之資料。每個此-載入與 7將札定起始位址,辨識記憶體内,存取操作(無 為載入操作或储存操作)需開始之位置。根據具體實施例 載入與儲存指令’接受此載入或儲存指令之資料量,可相 母個扎+變化。於特定具體實施例,藉由辨識資料類型「dt 即每個資料元件之女 &大小),以及辨識所存取之資料元件袭 藉由辨1¾ SIMD暫存器列表,以及選擇性地所存取角 之數目,辨識資料量。 當執行SlMn a™ 處理’通常之情形為,關於所需資料元令 執行之存取操作, 通常為未校直存取(此處亦稱為位元愈 直存取)》換t+ 。之,起始位址將通常為未校直,且於這類我 ’載入儲存單元 敢” 22需分配存取㈣,可能需最大數目之 取,以完成存取操作。 雖然於可能之實施,載入儲存單元^ 個存取皆為未校吉載…% 22可安排為’假認 校直’此意味載入儲存單元 當起始位 位兀組數子一 1=]校直之情況,無法改進存
90 1345703 取操作之效率。
雖然載入儲存單元22將可由起始位址,決定起始位址是 否具有預先決定之校直,載入儲存單元22通常需於起始位 址實際開始計算前,指定用於存取操作之存取數目。於特定 具體實施例,載入儲存單元22具有一管線架構,且用於執 行任何特定存取操作之存取數目,乃於管線解碼階段,由載 入儲存單元所決定。然而,起始位址通常於隨後管線執行階 段計算,例如藉由加入一移位數值至一基礎位址,且因此於 決定多少存取分配至存取操作前,載入儲存單元22無法等 待決定起始位址。
根據一具體實施例,藉由於存取指令内,提供一校直指 定器領域,於此處亦稱為一校直修飾詞,將得以改善此問題。 於一特定具體實施例,校直修飾詞可採用第一數值,其表示 將視為位元組校直,即未校直之起始位址。將瞭解此第一數 值,可藉由校直修飾詞領域之任何預先決定編碼所提供。此 外,校直修飾詞可採用任何一複數第二數值之一,以表示不 同預先決定校直,於一特定具體實施例,起始位址視為符合 由下列表格表示之複數可取得第二數值: 91 1345703 校直 起始位址格式 承 諾 與 可 利 用 性 修飾 詞 @16 .,χχχχχχχΟ 起 始 位 址 視 為 多 個 2位元組" 可 用 於 恰 好 轉 移 2 位 元 組之 指 令 0 @32 ..χχχχχχΟΟ 起 始 位 址 視 為 多 個 4位元組。 可 用 於 恰 好 轉 移 4 位 元 組之 指 令 〇 @64 ..xxxxxOOO 起 始 位 址 視 為 多 個 8位元组。 可 用 於 恰 好 轉 移 8 位 元 組之 指 令 0 @128 ..xxxxOOOO 起 始 位 址 視 為 多 個 16 位 元組 〇 可 用 於 恰 好 轉 移 16 位 元 組之 指 令 0 @256 ..xxxOOOOO 起 始 位 址 視 為 多 個 32 位 元組 〇 可 用 於 恰 好 轉 移 32 位 元 組之 指 令 0 表格1 ο
現在將參照第5 2圖,描述用於一具體實施例中,此校直 修飾詞資訊之方式。如第52圖所示,載入儲存單元22將典 92 1345703 型地透_ 切—預先決定寬度之資料匯流排,連接至記憶體系 统通常記憶體系統將由一些不同層級之記憶體所構成,且 士2# i}>^* ΛΑ " 之第一層級通常為一快取,此為載入儲存單元,透過 資料匯流排進行溝通之記憶體層級。因此,如第52圖所示, 載入儲存單元22安排為透過資料匯流排1 020 ,與記憶體之 層級1快取1010溝通,於此特定範例,資料匯流排視為具有 64位70寬度。於快取遭遇對於層級1快取内容進行存取之情 况田快取遺漏時,層級1快取1010接著透過一或其他進一 步匯",L排1 030,與記憶體系統1 000其他部分溝通。 記憶體系統之不同部分可為分散式(distributed),且於 第5 2圖所繪示之範例,假設層級1快取1 0 1 0乃提供於晶片 P併入第1圖之積體電路2内,且記憶體系統之 其餘部分則提供於晶片外。晶片上與晶片外間之定界,於第 52圖中乃以虛線1〇35表示。然而熟知此項技藝之人士將 瞭解可使用其他組態,且因此例如,所有記憶體系統可提 供於晶片外,或可提供記憶體系統位於晶片上部分,以及記 憶體系統位於晶片外部分間之一些其他定界(de丨imitati〇n)。 載入儲存單元22亦安排為與記憶體管理單元(Memory
Management Unit ,MMU ) 1005溝通,其典型地包含一轉換 後備緩衝器(Translation Lookaside Buffer,丁 LB) 1015。熟 知此項技藝之人士將瞭解,記憶體管理單元乃用於執行某些 存取控制功能,例如虛擬至實體位址之轉換,決定存取許可 93 丄/03 (即》存取是否可恭 發生)荨。為達此目的,記憶體管理單元, 將由記憶體頁矣,,、 格(page tables )所獲得之描述符號 ( p rs)儲存於轉換後備緩衝器1015。對於所對應之 § 每個描述符號乃定義關於此記憶體頁所需之存取 控制資訊。 載儲存單元22安排為透過控制路徑1〇25,與層級j 快取觀及記憶趙管理單元1〇〇5,溝通存取之某些細節。 尤其,載入儲存里+ + 疋22女排為輸出一起始位址,以及欲存取 資料區塊大小之_扣_ 扎不,至層級1快取與記憶體管理單元。 此外’根據一具科發# V丨 具體實施例,載入儲存單元22亦輸出來自校直 指定器之校直杳如 訊。現在將進一步參照第53A至54B圖,描 述載入儲存單r, , a ,及/或層級1快取1〇1()與記憶體管理單 70,使用校直指定器資訊之方式。 第53圖徐; '、一記憶體位址空間,每個水平實線表示記憶 體内之64位+ 校直。若存取操作指定丨28位元長度之資料區 塊 1040,為了 _^ΒΒ q 〇 說明目的,將假設起始位址為0x4,接著載入 儲存單元 "64位元資料匯流排1 020 ’決定個別存取 數目,以分配至存取 .y 二 保下此卜如則述,於得知起始位址 马何之刖,通常便愛 A 史需做成此決疋❶關於第52圓之具體實施 例,當載入儲在I 。 兀22決定所分配之存取數目時,安排為使 用扠直指定器資訊。 於第53a m於- 斤不之範例’起始位址為32位元校直,且 94 1345703 校直扣疋裔以辨識此校直。於 入儲存單元〜 &例,如第53Α圖所示’載 存取, 且因此假設將需三個個別 執仃關於資料區塊1040所需在 未校 坏需存取刼作。此與分配至 存取所需之存取數目相同。 右現在我們考慮第^圖所緣示之相似範例,3 知將再攻左% … 位元之資料區塊1045,但於此範例,起女 ”·' 64位元校直》若校直指定器資訊辨識此為64位元右 入’或實際上辨識資料4128位元校直,接著於此情形索 Μ 子單兀22僅需分配兩個個別存取至存取操作,從而有矣 率地提供顯著改進。然而資料匯流排為128位元寬度, * *校直扎定器指示為丨2 8位元校直而非6 4位元校直 栽入儲存單元22將僅需分配單_存取。 現在考慮第53C圖所示之範例,此處可知需存取—9 兀*大小資料區塊1 〇 5 〇 ,且於此範例假設校直指定器辨雜 。位址為3 2位兀校直。再次,於此範例,即使於需決定為 之時刻’載入儲存單元22將不會實際計算起始位址 儲存單元22仍可假設僅需兩個存取分配至存取操作。第 3D圖缯·不一第四範例’其中將存取一 8〇位元之資料區塊 且其中校直指定器辨識起始位址為16位元校直。再 人載入儲存單元22僅需分配兩個存取至存取操作。若校直 才日疋益指出存取視為未校直存取’接著載入儲存單元將需分 配二個存取至存取操作,且實際上將為第53C圓所繪示之存 95 1345703 取情況。因此,可知校直指定器資訊可為載入儲存單元22所 使用,以於校直指定器表示起始位址之某一預先決定校直情 況,顯著地改進存取性能。
需注意校直指定器,不可視為起始位址(此處亦稱為有 效位址)將具此校直之保證,但可提供載入儲存單元22繼續 何者之假設。若起始位址隨後不遵守校直指定器所指定之校 直,接著於一具體實施例,相關之載入或儲存操作乃安排為 產生一校直錯誤。校直錯誤接著可使用任何其中已知之技術 處理。 .如前述,校直資訊不僅為載入儲存單元2 2所使用,亦透 過路徑 1 0 2 5,傳播至層級 1快取 1 0 1 0與記憶體管理單元
1 0 0 5。現在將參照第5 4 A與5 4 B圖,描述層級1快取,或記 憶體管理單元使用此資訊之方式。如第 54A與54B圖所繪 示,考慮至一 256位元資料區塊1060、1065之存取,於這些 範例,圖示中之水平實線表示記憶體中之1 2 8位元校直。於 第5 4A圖,假設資料區塊為64位元校直,而於第54B圖, 假設資料區塊為1 2 8位元校直。於兩者範例,因資料匯流排 1020寬度僅為64位元,將瞭解載入儲存單元22需分配四個 存取至存取操作。由載入儲存單元觀點,與校直指定器指定 起始位址為64位元校直,或1 2 8位元校直無關。 然而,層級1快取1010内之快取線,每個可儲存超過 2 56位元之資料,且進一步可為128位元校直。於第54A圖 96 1345703 所示之範例,因資料區塊並非128位元校直,快取將需假設, 需兩條快取線以進行存取。然而,於第54B圓之範例,層級 1快取1010可由校直指定器,決定層級1快取内,僅需單一 快取線進行存取,且此可用於增進層級1快取1010内之存取 操作效率。 相同地,需由記憶體管理單元所存取,以擷取適當之描
述符號至轉換後備缓衝器1015之頁表格,通常將需儲存超過 2 5 6位元之資料,且通常為1 2 8位元校直。因此,記憶體管 理單元1 005可使用透過路徑1 025提供之校直資訊,以決定 欲所存取之頁表格數目。於第54A圖之範例,記憶體管理單 元1 〇〇5可能需假設’將需多於一個之頁表格進行存取,於第 5 4B圖之範例’記憶體管理單元可由校直指定器,決定僅需 單一頁表格進行存取’且此資訊可用於改進由記憶體管理單 元1 0 0 5所執行之存取控制功能效率。
因此’可知於上述之載人或儲存指令内,使用校直指定 器’可使硬體最佳化某些方面之存取操作,若於可決定起始 位址前’提出存取週期及/或快取存取數 丹刑·兀其有用。 此架構有用於指定所存取資料各種長度之載人或Μ存指令, 以及載人儲存單元與記憶體系統間,具不同資料匯流排: simd格式執行,其 且接著操作乃平行地 有些資科處理操作,不提供於標準 中多個資料元件乃並排置於暫存器内, 97 1345703
於這些資料元件執行。一些此類操作之範例,乃繪示於第55A 圖至55C圖。第55A圖繪示一交錯配置操作,其中希望交錯 配置第一暫存器1100内之四個資料元件A、B、C、D,以及 第二暫存器1102内之四個資料元件E、F、G、H。於第55A 圖,結果交錯配置資料元件乃示於目標暫存器1104、1106。 這些目標暫存器可為與來源暫存器1100、1102不同之暫存 器,或可與做為來源暫存器之兩暫存器集相同。由第55A圖 可知,根據此交錯配置操作,來自每個來源暫存器之第一資 料元件,乃並排置於目標暫存器内,隨後為來自兩個來源暫 存器之第一資料元件,隨後為來自兩個來源暫存器之第三資 料元件,隨後為來自兩個來源暫存器之第四資料元件。
第55B圖繪示相反之解交錯配置操作,其中需解交錯配 置置於兩個來源暫存器Π 0 8與1 1 1 0之八個資料元件。根據 此操作,第一、第三、第五與第七資料元件乃置於第一目標 暫存器1112,而第二、第四、第六與第八資料元件乃置於第 二目標暫存器1 1 1 4。如第5 5 A圖所示之範例,將可暸解目標 暫存器可與來源暫存器不同,或者可為相同暫存器。若於第 5 5 A與5 5 B圖之範例,假設暫存器為64位元暫存器,接著於 此特定範例,交錯配置或解交錯配置之資料元件為1 6位元寬 度資料元件。然而,將瞭解無須使資料交錯配置或解交錯配 置至16位元寬度,且來源與目標暫存器無須為64位元暫存 器。 98 1345703 第55C圖練示由移項操作所執行之功能。根據Μ. 移項來自第一來源暫存器1116之兩個資料元件A、B,以及 來自第二來源暫存器1118之兩個資料元件C'D,且移項結 果為來自第一來源暫存器1116之第二資料元件與來自第: 來源暫存器111 8之第—咨粗;从六 件交換’使得於第-目標暫存 器12 0内’提供資粗;4 权供貧K牛A、c ’而於第二目 提供資料元件f ^ 1112 但通常目標暫存器實…標暫存器可與來源暫存器不同, 於-範例,每個暫存”上為與來源暫存器相同之暫存器。 位元暫存器,其中:16、1118、"20、1122可視為64 再中資料元件為32位元寬度資祖_ # 資料元件無須生 X #科疋件。然而, 器。’…32位元寬度,且暫存器無須為64位元暫存 此外,雖级、 然於所有上述範例,介凡 _ 容,可知這:鈿』 _ “顯不暫存器之完整内 暫存器不同部八 了獨立地於相關來源 ,, 刀内之資料元件執行,且因 來源/目標暫存器。 囚此圆不僅繪示部分 如上戶斤 “,標準SIMD方法包含將多 置於暫存器内,日姑# 多個資料疋件,並排 …平行操作乃…。 -貝科疋件執行操作。換 ... 乃於資料元件顆粒度執杆。祕 科7C件可以此方 隹然對於所需資 例如傳播所需 *有效率地執行操作, 法以此方式安⑽ ’個暫“,有許多操作,血 *排所需之來源資料元件, .',、 W此死則無法利用 99 1345703 SIMD方法之潛在速度優點。上述交錯配置、解交錯配置與移 項操作,為此類操作之範例,其先前無法利用SIMD方法之 速度優點,但將瞭解亦有許多其他範例,例如某些類型之算 術操作。此一算術操作之一特定範例為,需應用至由實數與 虛數部分所構成複數之算術操作。
根據一具體實施例,藉由提供某些資料處理指令之能 力,不僅得以辨識資料元件大小,且亦進一步辨識做為個別 欄位之徑大小,將可改善此問題,其中徑大小乃為多個元件 大小。平行資料處理操作接著於徑大小,而非資料元件大小 之顆粒度產生,使得關於資料處理操作一特定範例之多於一 個之元件資料,可共存於相同來源暫存器。因此,用於執行 資料處理操作之處理邏輯,可根據一些處理平行徑之徑大小 而定義,且資料處理操作接著可平行地於每個徑執行,資料 處理操作乃應用至每一此類處理平行徑内之選擇資料元件。
藉由此一方式,得以執行SIMD方法之交錯配置操作, 例如參照第5 5 A圖所述之方式。尤其,第5 6 A圖繪示根據一 具體實施例,當執行「ZIP」指令時,所執行之處理。於此特 定範例,ZIP指令為32 |ZIP.8指令。此指令因此辨識資料元 件為8位元寬度,且徑為32位元寬度。對於第56A圖之範 例,假設ZIP指令,指定來源暫存器為64位元暫存器DO 1 1 25 與D1 1130。每個這些暫存器因此含有八個8位元資料元件。 於每個徑内,交錯配置操作乃獨立地與平行地應用,以重新 100 1345703 安排資料元件,如第56A圖下半部所示。於一具體實施例, 假設對於ZIP指令,目標暫存器與來源暫存器相同,且因此 這些重新安排之資料元件,再次儲存於暫存器DO 1125與D1 1130内。由第56A圖可知,於徑1内,每個來源暫存器之前 四個資料元件為交錯配置,且於徑 2,每個來源暫存器之下 四個資料元件為交錯配置。
將可容易瞭解,藉由改變徑大小,或資料元件大小,可 執行不同形式之交錯配置。例如,若徑大小辨識為64位元, 即,結果僅為單一徑,接著可知目標暫存器D 0,將含有每個 暫存器之前四個資料元件之交錯配置結果,而目標暫存器 D 1,將含有每個暫存器之下四個資料元件之交錯配置結果。 將瞭解可提供一對應之UNZIP指令,以執行對應之解交錯配 置操作,UNZIP指令再次可指定徑大小與資料元件大小。
通常,移項操作視為與交錯配置操作,或解交錯配置操 作相當不同之操作,且因此典型地將視為需提供一個別指 令,以執行移項操作。然而,可知當提供得以個別定義一徑 大小,以及一資料元件大小之一交錯配置或一解交錯配置指 令時,接著,當指定兩個來源暫存器,且徑大小設定為資料 元件大小之兩倍時,相同指令實際上可用於執行一移項操 作。此乃繪示於第56B圖,其中交錯配置指令ZIP,乃設定 為辨識8位元大小之資料元件,以及1 6位元之徑大小(即, 資料元件大小之兩倍)。假設選擇相同之6 4位元來源暫存器 101 1345703 DO 1125與D1 1130,如同第56A圖之範例,此定義四個處理 平行徑,如第56B圖所示。由第56B圖下半部可知,交錯配 置過程實際上,使得每個徑内產生一移項結果,每個徑内之 第二來源暫存器之第一資料元件,乃與每個徑内第一來源暫 存器之第二資料元件交換。
因此,根據上述具體實施例,可使用相同ZIP指令,以 執行一交錯配置或一移項操作,根據徑大小與資料元件大小 如何定義。需進一步注意亦可使用UNZIP指令,以完全相同 方式,執行移項,且因此16 IUNZIP.8指令將執行與16 |ΖΙΡ· 8指令完全相同之移項操作。
第57Α至57C圖繪示此類ZIP指令實施之一特定範例, 其中一影像内之四乘四圖素陣列1 1 3 5,將相對於線1 1 3 6移 項(見第 5 7 A圖)。每個圖素典型地將包含紅色、綠色與藍 色元素,以RGB格式表示。為說明緣故,假設用於定義每個 圖素之資料長度為1 6位元,接著可知,陣列1 1 3 5中之四個 圖素之每一水平線之資料,可置於個別來源暫存器A、B、C、 D。
第57B圖繪示當執行下列兩個指令時,產生之各種移項: 32 |ZIP. 16 A, B 32 |ZIP. 16 C, D 每個ZIP指令因此定義徑寬度為3 2位元,且資料元件寬 度為16位元,且因此於每個徑,第二暫存器内之第一資料元 102 1345703 件,乃與第一暫存器内之第二資料元件交換,如第5 7B圖所 繪之四條對角線箭頭所示。因此,於四個二乘二區塊1137、 1141 ' 1143、與1145之每一個内,產生個別移項。
第57C圖接著繪示由於執行下列兩個指令,產生之移項: 64 |ZIP.32 A, C 64 IZIP.32 B, D
根據這些指令,徑寬度設定為64位元,即,整個來源暫 存器之寬度,且資料元件之寬度選擇為32位元。執行第一 ZIP指令,因此使得暫存器A 1147内之32位元寬度第二資 料元件,與暫存器C 1151内之32位元寬度第一資料元件交 換。相同地,第二ZIP指令,使得暫存器B 1 149内之32位 元寬度第二資料元件,與暫存器D 1153内之32位元第一資 料元件交換。如第5 7C圖之對角線箭頭所示,此因此使得左 上方之二乘二圖素區塊,與右下方之二乘二圖素區塊交換。 熟知此項技藝之人士將瞭解,此四個ZIP指令序列,因此將 整個四乘四之圖素陣列1 1 3 5,相對於對角線1 1 3 6移項。第 5 8圖繪示使用交錯配置指令之一特定範例。於此範例,考慮 由實數與虛數部分所構成之複數。於一些情形,可能需於一 複數序列之實數部分,執行某些計算,且一個別之操作需於 這些複數之虛數部分執行。結果,實數部分安排於一特定暫 存器D0 1155,而虛數部分置於個別暫存器D1 1160。於某一 時刻,可能希望重新結合每個複數之實數與虛數部分,使得 103 1345703 其於暫存器内彼此相鄰。如第58圖所示,此可透過使用641 ZIP 16指令達成,其設定徑寬度為整個來源暫存器之寬度,且設 定資料元件寬度為16位元,即每個實數與虛數部分之寬度。 如第58圖下半部所示,執行ZIP指令之結果,為每個複數a、 b、c、d之每個實數與虛數部分,於暫存器空間内重新結合, 目標暫存器D0 1155含有複數a與b之實數與虛數部分,且 目標暫存器D1 1160含有複數c與d之實數與虛數部分。
不僅資料重新安排指令,例如交錯配置與解交錯配置指 令,可利用此能力,以指定與資料元件大小獨立之徑大小。 例如,第59A與59B圖繪示兩指令之一序列,可用於執行兩 複數之相乘。尤其,希望相乘複數A與複數B,以產生一結 果複數D,如下列方程式所示:
D r e = Are * Bre "Ajm *B,· D i m =Are *Bim + Aim * B
第59A圖顯示回應下列形式之第一相乘指令,所執行之 操作: 32丨MUL.16 Dd,Dn,Dm[0] 來源暫存器為64位元暫存器,且相乘指令指定32位元 之徑寬度,以及1 6位元之資料元件大小。相乘指令安排於每 個徑内,以將來源暫存器Dm 11 65内此徑之第一資料元件, 與第二來源暫存器D η 11 7 0内此徑之每一資料元件相乘(如 104 1345703 第59A圖所示),結果數值乃儲存於目標暫存器Dd 1175内之 一對應位置。於每一徑,目標暫存器内之第一資料元件,視 為表示部分複數结果之實數部分,且第二資料元件視為表示 部分複數結果之虛數部分。 執行第5 9 A圖繪示之指令後,接著執行下列指令: 32|MASX.16 Dd, Dn, Dm[l]
如第 5 9 B圖所繪示,此指令為「相乘、相加、相減與交 換「multiply add subtract with exchange」」指令。根據此指 令,來源暫存器Dm每個徑内之第二資料元件,與第二來源 暫存器Dn對應徑内之每一資料元件相乘,如第5 9B圖所繪 示。接著,相乘之結果,乃與已儲存於目標暫存器 Dd 1175 内之對應資料元件數值,相加或相減,結果接著置回目標暫 存器Ddll75内。將瞭解經由比較第59A與59B圖之操作, 以及稍早辨識之方程式,以產生結果複數D之實數與虛數部 分,藉由連續利用此二指令,對於兩組複數可平行執行計算, 從而得以實現SIMD方法之速度優點。 由上述範例,將瞭解藉由提供具有指定除資料元件大小 外,以及徑大小能力之指令,藉由實行SIMD而可能受益之 操作數目將增加,且因此,對於以SIMD方式實施之操作, 此提供較大改進之彈性。 本發明提供於向量執行SIMD處理之能力,其中來源與目 標資料元件寬度乃不同。於此環境之一特別有用之操作,為 105 1345703 相加或相減,接著返回至高半(high half) SIMD操作。第 60圖顯示根據本發明之一相加返回高半操作之範例eSlMD 解碼器16内之一指令解碼器(見第}圖),解碼指令 VADH.I16.I32 Dd,Qn,Qm ’並執行第60圖所繪示,以及以下 所提出之相加返回高半。 於第60圖,位於SIMD暫存器檔案2〇 (見第1圖;)内之 兩個來源暫存器Qn與Qm,含有32位元資料元件a與b之 向量。這些乃一同相加’以形成16位元資料元件Dd之一向 量’亦位於暫存器檔案20内,由資料總和之高半所形成:
Qn = [a3 a2 al a0]
Qm = [b3 b2 bl b] 輸出
Dd = [(a3+b3)>>16, (a2 + b2) >>16, (al + bl) >>16, (aO + bO) >>16].
第6 1圖圖表式地顯示,與第6 0圖所示之一相似操作, 但於此情形’所解碼之指令為VRADH.I1 6.132 Dd,Qn,Qm,且 所執行之操作為具循環之一相加返回高操作。此以與第6〇圖 所緣示之操作非常相似之方式執行,但循環高半。於此範例, 此藉由於相加後,且於採用高半前,加入一資料數值,其於 資料數值之低半(lowerhalf)之最高有效位元位置為一,且 106 1345703 於其他任何處為零而達成。 於第61圖中,中間數值為清晰目的,乃以虛線表示。 可支援之進一步指令(未繪示),為具飽和之相加或相減 返回高。於此情形,於採取高半前’相加或相減將於適當位 置飽和。 表格1 1顯示為本發明所支援之一些指令範例,大小<a> 以位元返回資料類型之大小,且循環<td>返回循環常數1 << (大小 <dt> - 1 )。 符號 資料類型 操作元格式 說明 VADH • 18.116 .116.132 .132.164 Dd, Qn, Qm 相加返回高半 Vd[I (Vn[ i ]+Vm[ i ] )»size<td> VRADH .18.116 Dd, Qn, Qm 具循環之相加返回高半 .116.132 Vd[i(Vn[i]H-Vm[i]+ round<td>) »size<td> .132.164 VSBH • 18.116 Dd, Qn, Qm 相減返回高半 .116.132 Vd[i(Vn[i]-Vm[ i ] ) »size<td> .132.164 VRSBH .18.116 Dd, Qn, Q m 具循環之相減返回高半 .116.132 Vd [ i(Vn[i]-Vm[ i ] +round<td>) »size<td> .132.164 107 1345703 表格1 1 本發明可於不同類型資料執行,若資料之高半可合理執 行。本發明尤其適合於浮點數字執行。
上述技術具有許多應用,且例如可用於加速SIMD快速 傅立葉轉換(Fast Fourier Transform,FFT)實施。SIMD 尤 其有用於執行需於多個資料執行相同操作之快速傅立葉轉 換操作。因此,使用SIMD處理,允許平行處理多個資料。 對於快速傅立葉轉換執行之計算,通常關於多個複數之相 乘。此包含資料數值之相乘,且接著相加或相減此乘積。於 SIMD處理,這些計算乃平行執行以加快處理速度。 以下乃說明需執行總和分類(sort )之一簡單範例。 (a +ic) * (b + id) = e +if
因此,實數部分e等於:a*b-c*d且 虛數部分f等於:a*d + c*b 第62圖顯示以決定實數部分e之計算。可知對於含有 16位元資料元件之a向量,乃與含有相同大小資料元件之向 量b相乘,以及c與d。這些乘積產生兩個具有32位元資料 元件之向量。為產生e,其中之一向量需與另一個相減,但 108 1345703 ,需 指令 最後結果’僅需與初始數值具有相同正確性即可。因此 要具有16位元資料元件之結果向量1操作可回應單/指 VSBH.16.32 Dd,Qn,Qm 執行 _ 闻干所不。此指令,相減 返回高半,因此於本發明尤其有 此外,其具有允許於較 大資料見又,執行算術操作,且窄化信& 僅於算術操作(相滅) 後產生之優點。相較於埶杆相油儿办 執订相減别窄化,此通常產生較疋漆 之結果。 以允許於一些指令’ 編碼,需限制最接近
ARM提供具有指令編瑪之指令集, 指定一最接近值。清楚可知,若以指令 值大小。 適合用於以指令編碼之最接 处值大小,於平行處理資科 元件之SIM D處理之依用夸石丨pp如 便用又到限制。為解決此問題,乃提供 具有產生常數之指令集,其且右 再,、有又限之相關最接近值大小,
但具有擴展此最接近值之能力。因此,例%,—位元组大小 之最接近值,可擴展至產生64位元常數或最接近值。以此方 式’最接近值可用於SIMD處理中’含有多個來源資料元件 之64位元來源暫存器之邏輯操作。 第63圖顯示一最接近值abcdefgh,於指令内連同控制數 值一同編碼,其示於表格左半欄。二位元最接近值可擴展至 填入一 64位元暫存器’實際執行之擴展,乃取決於與其相關 之指令與控制部分。於所示之範例,8位元最接近值 abcdefgh,於64位元資料數值内之不同位置重複,最接近值 109 1345703 所放置之位置,乃取決於控制數值。此外,零及/或一可用於 瑱入未置入數值之未使用空間。一及/或零之選擇,亦由控制 數值決定。因此,於此範例,由具有8位元最接近值之指令, 以及與其相關之4位元控制數值,可產生用於SIMD處理之 可能常數之廣大範圍。 於一具體實施例(表格最後一列),而非於某些位置重複 最接近值,乃擴展最接近值之每一位元,以產生新的64位元 最接近值或常數 φ 由一些情況可知,每一徑之常數相同,且其他不同常數 出現於其中一些徑。於一些具體實施例(未顯示),亦提供反 轉(inverting)這些常數之可能性,且此亦增加可產生之常 數數目。
以下乃提供可用於第63圖中,所示之常數產生指令格式 之範例。於此指令,<value>&資料部分或最接近值,且<mode> 為控制部分,提供<value>部分於所產生之常數内如何擴展之 指示(於第63圖之表格以不同線顯示)。 VMOV Dd, #<value>, <mode> 其中 < v a 1 u e >為一位元組 <mode>為其_ 一數值擴展功能。 110 1345703 這 資料部 63圖所 式達成 行使用 第 資料部 輯範例 1220 , 個一或 第 路),, 處在於 1220 可 可知指 產生控 及純量 控制部 產生用 資料儲 資料處 1224 ), 些適"之^令’通常具有一相關資料數值,其具有一 分<value>,包么 含最接近值及一控制部分<m〇de>。如第 •示,控制部分主_ 衣示最接近值如何擴展。此可以不同方 ,但於一些昱热 、題實施例,控制部分表示哪一常數將執 常數邏輯產生擴展。 64圖圖表式地 頌示根據本發明’用以由與指令相關之 分1210與控告丨如 部分1200’產生一常數之常數產生邏 。於所示範例, 控制部分1200控制一控制產生邏輯 其3有邏輯閘1 230 ’以輸出部分資料數值1210,或-零至所產生之常數!24〇内之每一位元。 顯一第1圖所不相似之一資料處理器(積體電 、中相同標號表示相同元件…5圓與第丨圖不同之 :其明球顯示-常數產生邏肖122〇。常數產生邏輯 :見為與解碼/控制部分14、16相鄰,或為其一部份。 令由指令線路12’傳送至解碼/控制邏輯14、16。此 :處理器之smD處理邏輯18,載入儲存單元22,以 :理部分…、Μ。操作之控制信號。若於解碼/ 刀U、16接收具常數產 ^ 0 7 常數產生邏輯用以 於SIMD處理之常數。 T直接傳送至SIMD暫存器 12〇(虛線1222 ),或若常數產生指令包含一 S細 於部π產生之常數傳送至SIMD處理邏輯(線 、此,對於產生之常數執行進-步操#,以產生一新 111 1345703 資料數值。 第66A與66B圖圖表式地繪示,第65圖所示之兩不同 路徑》第66 A圖乃顯示,指令產生直接傳送至暫存器儲存之 常數情況,即虛線1222。第66B圖顯示產生常數指令包含一 資料處理部分。於此情況,於產生之常數,以及進一步之來 源操作元 1 25 0,執行資料處理操作(OP ),以回應此指令, 產生一最終資料數值1260,此對應於第65圖之線1224。
除第63圖所示之常數與其反轉外,額外資料處理操作, 例如OR、AND、測試、相加、或相減,可於產生之常數執行, 以產生較廣大範圍之資料數值。此對應於第13B圖以及第65 圖之路徑1224。表格12提供可用於產生一些額外資料數值 之位元方式AND與OR範例。 符號 資料類型 操作元格式 說明
VAND 無 Dd,#<value>,<mode> 具產生常數之位元方式AND
Vd:=Vd &〈generated constant〉
VORR 無 Dd, #<value>,<mode> 具產生常數之位元方式OR
Vd := Vd|<generated constant〉 於產生之常數,進一步執行資料處理操作之能力,可具 有各種用途。例如,第67圖顯示本發明之具體實施例,如何 112 1345703 用於產生一位元遮罩,以由一向量之一些資料元件,操取某 一或某些位元。於所示之範例,擷取來自一來源向量之每_ 資料元件之四個位元。起初,藉由重複’擴展最接近值8, 且接著為一邏輯AND指令,以將產生之常數與來源向量進行 AND,以由每一資料元件棟取所需之位元。這些操作乃回應 指令執行。 VAND Dd,#Ob00001000, 〇bll〇〇
其中<mode>數值1100表示產生之一常數,含有一擴展 資料部分(見第63圖)》 雖然此處描述一特定具體實施例’將瞭解本發明未限於 此,且於本發明之範圍内,可對其進行許多修改與添加。例 如’於未背離本發明範圍内,可對於下列附屬項申請專利範 圍特徵,與獨立項申請專利範圍之特徵進行各種組合。 【圖式簡單說明】
以上將僅為例示用,進一步說明本發明,並參照所附圖 示中所繪示之較佳具體實施例,其中: 第1圖圖表式地繪示,支援傳統純量資料處理與SIMD 資料處理之一積體電路; 第2圖圖表式地“,用於SIMD暫存器資料儲存庫之 一讀取與寫入埠安排; 第3圖@表式地繪*,_ SIMD讀取與寫人操作範例, 其中目標暫存器之寬度為來源暫存器之兩倍; 113 ^4^703 § 處 存 疊 大 量 s 理 資 作 圖 第4圖顯示對於不同資料處理操作,來源暫存器 標暫存SS大小間之不同類型關係: 第5圖圖表式地繪示,可用於定義根據本發明之 理指令之一語法; 第6圖圖表式地繪示,視為64位元暫存器與⑵ 器之SIMD暫存器資料儲存庫; 第7圖圖表4地繪示,64位元與128位元暫存器 (混疊); 第8圖圖表式地繪示’儲存於simd暫存器内, 小之複數資料元件; 第9圖圖表式地繪示,向量暫存器内所涉 數值; 第Μ圖圖表式地繪示一資料處理指令,其中處理: 與資料元件大小維持固定: _第11八與UB圖圖表式地繪示一資料處理指令, 徑數目維持固定’且資料元件大小改變; 第12圖繪示SIMD暫存器資料儲存庫以及純量 料儲存庫間之資料轉移; 14 15圖圖表式地繪示各種暫存器轉移指, * 第〖6圖為一流程圖示,繪示可有效地利用第μ 所示之暫存器轉移指令類型之一範例情形; 小與 資料 元暫 之重 不同 之純 之數 中處 '存器 -之操 與15
114 1345703 第17圖圖表式地繪示,根據本發明一具體實施例,資料 元件如何由一連續記憶體區塊載入至一些特定暫存器; 第18圖圖表式地繪示,根據本發明之具體實施例,可存 在於記憶體内之不同結構之一些範例; 第19A至19C圖乃繪示,根據本發明一具體實施例之單 一儲存指令之一特定範例操作;
第20A至20C圖乃繪示,根據本發明一具體實施例之單 一載入指令之一特定範例操作; 第21A至21C圖乃繪示,根據本發明一具體實施例之單 一載入指令之另一特定範例操作; 第22A至22C圖乃繪示,根據本發明一具體實施例之單 一載入指令之再另一特定範例操作; 第23圖為一方塊圖示,乃繪示於第1圖之重新排序邏輯 内,所提供邏輯之進一步細節;
第24至26圖繪示根據本發明具體實施例,對於四種不 同序列之單一存取指令,資料通過重新排序邏輯之流向; 第27圖乃繪示已知之折疊操作; 第2 8圖乃繪示一具體實施例之折疊操作; 第29圖乃繪示另一具體實施例之折疊操作; 第30a至30d圖乃繪示各種折疊指令之操作; 第31圖圖表式地繪示,提供於第1圖之SIMD處理邏輯 内,安排為執行折疊操作之一邏輯; 115 1345703 第32圖繪示一向量乘以純量指令之操作; 第33圖繪示於第1圖之SIMD暫存器内,純量操作元之 安排; 第34圖圖表式地繪示,提供於第1圖之SIMD處理邏輯 内,安排為執行向量乘以純量操作之邏輯; 第35圖顯示根據習知技藝,右移位與上堆積之方法;
第36圖圖表式地顯示,根據本發明一具體實施例之右移 位與窄化操作; 第37圖圖表式地顯示,根據本發明之左移位與窄化; 第3 8圖圖表式地顯示,根據本發明一具體實施例之相加 與左移位; 第3 9圖圖表式地顯示,以不同數量移位資料元件; 第40圖圖表式地顯示一常見多工器; 第 4 1圖圖表式地顯示一具體實施例,其中來源數值a 或b之選擇乃根據位元方式達成;
第42圖圖表式地顯示另一具體實施例,其中來源數值a 或b之選擇乃根據資料元件達成; 第43圖圖表式地顯示,對應於由本發明所提供之三個多 工指令,三個多工器安排之範例; 第44圖圖表式地繪示一 SIMD暫存器,乃根據尾序模 式,以不同配置儲存多個資料元件; 第45圖圖表式地繪示根據第一範例,記憶體存取邏輯與 116 1345703 資料元件重新排序邏輯之操作; 第46圖圖表式地繪示根據第二範例,記憶體存取邏輯與 資料元件重新排序邏輯之操作; 第47圖圖表式地進一步詳細繪示,第45與46圖之資料 元件重新排序邏輯之一具體實施例範例; 第48圖圖表式地繪示一暫存器資料儲存庫,包含兩個暫 存器,乃做為表格暫存器,結果暫存器,與索引暫存器;
第49圖圖表式地繪示表格查詢延伸指令之動作; 第50圖圖表式地繪示,索引暫存器内之索引數值,於進 一步表格查詢延伸指令所重新使用前,於索引暫存器執行之 處理; 第51圖圖表式地繪示表格查詢指令之操作,其中零數值 乃寫入結果暫存器中,對應於超出範圍索引數值之位置; 第52圖圖表式地繪示根據一具體實施例,第1圖之載入 儲存單元,如何與記憶體系統與記憶體管理單元耦接;
第53A至53D圖圖表式地繪示根據一具體實施例,存取 資料區塊之各種範例; 第54A至54B圖圖表式地繪示根據一具體實施例,存取 資料區塊之進一步範例; 第5 5 A至5 5 C圖圖表式地分別繪示一交錯配置操作,一 解交錯配置操作,以及一移項操作; 第56A與56B圖圖表式地繪示根據一具體實施例,如何 117 1345703 執行交錯配置與移項操作; 第57A至57C圖繪示根據一具體實施例之指令序列,如 何用於移項影像圖素之陣列; 第58圖繪示一具體實施例之指令,如何用於交錯配置複 數之實數與虛數部分; 第59A與59B圖繪示根據一具體實施例之兩指令序列, 如何用於平行執行兩個複數之相乘;
第60圖圖表式地顯示一相加返回高半操作,以及其相關 指令; 第61圖圖表式地顯示具循環之一相加返回高半操作,以 及其相關指令; 第6 2圖圖表式地顯示一相減返回高半操作,以及其相關 指令, 第63圖顯示由一指令產生之一可能常數表格,具有一資 料部分abcdefgh,以及與其相關之一控制部分; 第64圖顯示一常數產生邏輯; φ 第65圖顯示具有常數產生邏輯之一資料處理器; 第66 A與66B圖圖表式地顯示一資料處理器,以產生之 常數回應兩類型指令;及 第67圖顯示產生根據本發明之位元遮罩。 【元件代表符號簡單說明】 2 資料處理系統(積體電路) 118 1345703 4 純量暫存器資料儲存庫 6 乘法器 8 移位器 10 加法器 12 指令線路 14 純量解妈器 16 SIMD解瑪器 18 SIMD處理邏輯 20 讀D暫存器資料儲存庫 22 載入儲存單元 23 ' 23* 先入先出 24 > 808 重新排序邏輯 26 SIMD暫存器 28 暫存器轉移邏輯 200 '310 記憶體 210 ' 250 ' 255 > 260 '312 結構 215 構件 220 暫存器D0 225 暫存器D1 230 暫存器D2 270 ' 280 、290、300才旨定暫存器 275 ' 285 、295 '305 數字 314 、 342 資料元件 330 ' 335 '710、72〇 暫存器 800 ' 802 、804、806、812、1120、1122 暫存器 340 轉換邏輯 320 > 325 徑 350 ' 355 、420 多工器 360、365輸入暫存器 370 交錯式控制暫存器 375 交錯式多工器 380 暫存器快取 385 輸出多工器 400 折疊操作邏輯單元 410 算術單元 415 、 425 、 435 、 445 、 455 、 431 、 432 、 433 、 434
119 1345703 450 選擇與分配邏輯 460 、 470 、 480 、 490 ' 500 、 700 、 701 、 702 、 703 多工器 5 10 純量選擇邏輯 520 向量乘以純量操作邏輯 530 操 作 單 元 730 810 記 憶 體 存 取 邏 輯 900 暫 存 器 資 料 儲 存庫 1000 1005 記 憶 體 管 理 單 元 1010 1015 轉 換 後 備 緩 衝 器 1020 1025 控 制 路 徑 1030 1 035 ' 1222 虛 線 控制暫存器 記憶體系統 層級1快取 資料匯流排 匯流排
1040 、 1045 、 1〇5〇 ' 1〇55 、 1060 、 1065 1100 第一暫存器 1102 資料區塊 第一暫存器 1104、 1108、 1112 1106 1110 第一 目標 來源 目標暫 暫存器 暫存器 存器 1114 1116 第—來源暫存器ιιι8 1125 ' 1 130 64 位元暫存器 第二目標暫存器 第二來源暫存器
113 5 圖素陣列 1137 、 1141 、 1143 、 1145 1147 暫存器A 115 1 暫存器C 1155 暫存器D0 來源暫存器Dm 1136 、 1224 區塊 1149 1153 1165 線 暫存器B 暫存器D 暫存器D1 1160 1345703 1170 第二來源暫存器Du 1175 目標暫存器Dd 1200 控制部分 1210 資料部分 1220 控制產生邏輯 1230 邏輯閘 1240 常數 1250 來源操作元 1260 最終資料數值 1270 常數產生邏輯
121

Claims (1)

1345703 loo. ~ 年月日修正本 十、申請專利範圍: 1. 一種資料處理設備,該資料處理設備包含: 一暫存器資料儲存座,苴 女 两仔犀,其具有可刼作為保留複數資 料元件之複數暫存器,保留在每一個暫存器中的資料元件 之數量係取決於該班•複數資料-此 —设致資枓兀•件的一資料類型; 一處理器可操作為對佔據該些暫存器之至少一
暫存器的不同平行處理徑的該些複數資料元件平行執行 一資料處理操作; -存取邏輯,其可操作為於該些複數暫存器中的指 定暫存器與記憶m連續區塊間,移動該些複數資料元 + I存取指令’其中該些複數資料元件以具 有-結構形式之-結構陣列保留,該結構形式具有複數構 件; 該早一存取指令台冬咨冰·丄#s Λ,|次 匕含貢枓類型資訊,該資料類型資 訊辨識與所移動之該歧趨赵音社-灿hBa —报数貢枓兀件相關之該資料類型,
且該單一存取指令辨識 两%通結構形式中之該些複數構件之 數目;及 該存取邏輯,其可極你 丹』操作為當移動該些複數資料元件 時重新女排該些複數資料元件使得該些指定暫存器之 每一者將資料元件保留在组成該些複數構件中之—構件的 該些複數資料元件之中,因拉认― 同時於該記憶體内,以該結構陣 列保留該些複數資料元侔,姑+ A β 4 千該存取邏輯根據該資料類型執 122 1345703 行該重新安排之操作。 2.如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令辨識該些指定暫存器,該些指定暫存器之 數目為該些構件數目之一倍數。 3. 如申請專利範圍第1項所述之資料處理設備,其中 所移動之該資料元件之每一者為相同資料類型。 Φ 4. 如申請專利範圍第1項所述之資料處理設備,其中 該些指定暫存器彼此間具有一固定關係。 5. 如申請專利範圍第4項所述之資料處理設備,其中 根據該固定關係,該些指定暫存器由η個中間暫存器所分 隔,其中η為2m-l,且m為大於或等於零之一整數。
6. 如申請專利範圍第4項所述之資料處理設備,其中 該些指定暫存器為該暫存器資料儲存庫内一系列之複數相 鄰暫存器。 7.如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令為一單一載入指令,該存取邏輯係可操作 123 1345703 為自該記憶體的連續區塊,載入該些複數資料元件至該些 指定暫存器,以回應該單一載入指令,且於儲存該些資料 元件於該些指定暫存器前,藉由解交錯配置 (de-interleaving)複數不同構件之資料元件,重新安排該 些資料元件,使得複數不同構件之該些資料元件係儲存於 該些指定暫存器之不同暫存器中。
8.如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令為一單一儲存指令,該存取邏輯係可操作 為儲存來自該些指定暫存器之該些複數資料元件至該記憶 體的連續區塊,以回應該單一儲存指令,且於儲存該些資 料元件於該記憶體的連續區塊前,藉由交錯配置複數不同 構件之該些資料元件,重新安排該些資料元件,使得該些 資料元件以該結構陣列儲存於該記憶體的連續區塊中。
9.如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令係辨識所存取之該些結構數目》 10. 如_請專利範圍第9項所述之資料處理設備,其 中該單一存取指令係為一單一載入指令,該存取邏輯係可 操作為自該記憶體的連續區塊,載入該些複數資料元件至 該些指定暫存器,以回應該單一載入指令,且於儲存該些 124 1345703 資料元件於該些指定暫存器前,藉由解交錯配置複數不同 構件之資料元件,重新安排該些資料元件,使得複數不同 構件之該些資料元件儲存於該些指定暫存器之不同暫存器 中,其中若該些結構之數目,不足以使得該些指定暫存器 填入複數資料元件,則該存取邏輯可操作為使得該些指定 暫存器之任何未填滿部分,以一或複數預先決定數值填入。
11. 如申請專利範圍第1項所述之資料處理設備,其 中該單一存取指令係辨識用於辨識所移動之該些資料元件 之一,定址模式。 12. 如申請專利範圍第1 1項所述之資料處理設備, 其中該定址模式辨識該記憶體的連續區塊之一起始位址。 13. 如申請專利範圍第1項所述之資料處理設備,其 中該些指定暫存器為相同尺寸。 φ 14. 如申請專利範圍第1項所述之資料處理設備,其 中該單一存取指令係辨識欲施加至該些元件之一轉換,且 該存取邏輯操作為當該些資料元件移動時,施加該轉換至 該些資料元件。 125 1345703 15. 一種操作一資料處理設備之方法,該資料處理設 備包含一暫存器資料儲存庫,其具有可操作為保留複數資 料元件之複數暫存器,保留在每一個暫存器中的資料元件 數量係取決於該些複數資料元件的一資料類型,及一處理 器,其係可操作為可對佔據該些複數暫存器内之至少一暫 存器的不同平行處理徑的該些複數資料元件,平行執行一 資料處理操作,該方法包含以下步驟:
(a) 於該些複數暫存器中的指定暫存器與記憶體的連續 區塊間,移動該些複數資料元件,以回應一單一存取指令, 其中該些複數資料元件以具有一結構形式之一結構陣列保 留,該結構形式具有複數構件; 該單一存取指令包含資料類型資訊,該資料類型資訊辨 識與所移動之該些複數資料元件相關之該資料類型,且該 單一存取指令辨識該結構形式中之該些構件數目;
> « (b) 當移動該些複數資料元件時,重新安排該些複數資 料元件,使得該些指定暫存器之每一者將資料元件保留在 組成該些複數構件中之一構件的該些複數資料元件之中, 同時於該記憶體内,以該結構陣列保留該些複數資料元 件,該重新安排步驟係根據該資料類型而執行。 16. 如申請專利範圍第15項所述之方法,其中該單 一存取指令係辨識該些指定暫存器,該些指定暫存器之數 126 1345703 目為該些構件數目之一倍數。 17. 如申請專利範圍第15項所述之方法,其中所移 動之該等資料元件之每一者具有相同資料類型。 18. 如申請專利範圍第15項所述之方法,其中該些 指定暫存器彼此間具有一固定關係。
19. 如申請專利範圍第18項所述之方法,其中根據 該固定關係,該些指定暫存器由η個中間暫存器所分隔, 其中η為2m-l,且m為大於或等於零之一整數。 20. 如申請專利範圍第18項所述之方法,其中該些 指定暫存器為該暫存器資料儲存庫内一系列之複數相鄰暫 存器。
21. 如申請專利範圍第15項所述之方法,其中該單 一存取指令為一單一載入指令,且其中: 該步驟(a)包含自該記憶體的連續區塊,載入該些 複數資料元件至該些指定暫存器;及 該步驟(b)包含於儲存該些資料元件於該些指定 暫存器前,藉由解交錯配置複數不同構件之該些資料元 127 1345703 件,重新安排該些資料元件,使得複數不同構件之複數資 料元件係儲存於該些指定暫存器之不同暫存器中。 22. 如申請專利範圍第15項所述之方法,其中該單 一存取指令為一單一儲存指令;且其中 該步驟(a)包含由該些指定暫存器儲存該些複數 資料元件至該記憶體的連續區塊;及
該步驟(b)包含於儲存該些資料元件於該記憶體 的連續區塊前,藉由交錯配置複數不同構件之該些資料元 件,.重新安排該些資料元件,使得該些資料元件以該結構 陣列,儲存於該記憶體的連續區塊中。 23. 如申請專利範圍第15項所述之方法,其中該單 一存取指令係辨識所存取之該些結構數目。
24. 如申請專利範圍第23項所述之方法,其中該單 一存取指令係為一單一載入指令;且其中 該步驟(a)包含由該記憶體的連續區塊,載入該些 複數資料元件至該些指定暫存器;及 該步驟(b)包含於儲存該些資料元件於該些指定 暫存器前,藉由解交錯配置複數不同構件之該些資料元 件,重新安排該些資料元件,使得複數不同構件之複數資 128 1345703 料元件係儲存於該些指定暫存器之不同暫存器中; 其中若該些結構之數目不足以使得該些指定暫存 器填入複數資料元件,該方法另包含下列步驟 以一或複數預先決定數值填入該些指定暫存器之 任何未填滿部分"
25. 如申請專利範圍第15項所述之方法,其中該單 一存取指令係辨識用於辨識所移動之該些資料元件之一定 址模式。 26. 如申請專利範圍第 25項所述之方法,其中該定 址模式辨識該記憶體的連續區塊之一起始位址。 27. 如申請專利範圍第15項所述之方法,其中該些 指定暫存器具有相同尺寸。
28. 如申請專利範圍第15項所述之方法,其中該單 一存取指令係辨識欲施加至該些元件之一轉換,且該存取 邏輯操作為當該些資料元件移動時,施加該轉換至該些資 料元件。 29. 一種包含一電腦程式之電腦程式產品,該電腦程 129 1345703 式含有至少一單一存取指令,其當執行該單一存取指令 時,使得一資料處理設備根據申請專利範圍第15項之方法 操作。
130 1345703 七、指定代表圖: (一) 、本案指定代表圖為:第17圖。 (二) 、本代表圖之元件代表符號簡單說明: 200 記憶體 210 結構 215 構件 220 暫存器D0 225 暫存器D1 230 暫存器D2 八、本案若有化學式時,請揭示最能顯示發明 特徵的化學式:
TW093124106A 2003-12-09 2004-08-11 A data processing apparatus and method for moving data between registers and memory TWI345703B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0328503A GB2409059B (en) 2003-12-09 2003-12-09 A data processing apparatus and method for moving data between registers and memory

Publications (2)

Publication Number Publication Date
TW200527203A TW200527203A (en) 2005-08-16
TWI345703B true TWI345703B (en) 2011-07-21

Family

ID=30129886

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093124106A TWI345703B (en) 2003-12-09 2004-08-11 A data processing apparatus and method for moving data between registers and memory

Country Status (11)

Country Link
US (1) US7219215B2 (zh)
EP (1) EP1692613B1 (zh)
JP (1) JP4689622B2 (zh)
KR (1) KR100991984B1 (zh)
CN (1) CN1890630B (zh)
GB (1) GB2409059B (zh)
IL (1) IL173622A (zh)
MY (1) MY138193A (zh)
RU (1) RU2006120158A (zh)
TW (1) TWI345703B (zh)
WO (1) WO2005057406A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI595413B (zh) * 2011-11-25 2017-08-11 英特爾公司 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯(二)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US20070255903A1 (en) * 2006-05-01 2007-11-01 Meir Tsadik Device, system and method of accessing a memory
US7594094B2 (en) * 2006-05-19 2009-09-22 International Business Machines Corporation Move data facility with optional specifications
US7949701B2 (en) 2006-08-02 2011-05-24 Qualcomm Incorporated Method and system to perform shifting and rounding operations within a microprocessor
US8190624B2 (en) * 2007-11-29 2012-05-29 Microsoft Corporation Data parallel production and consumption
WO2009073787A1 (en) * 2007-12-05 2009-06-11 Sandbridge Technologies, Inc. Method and instruction set including register shifts and rotates for data processing
NO329837B1 (no) * 2008-07-09 2011-01-03 Tandberg Telecom As Fremgangsmate for prosessor-effektivt deblokkingsfiltrering
US8484276B2 (en) * 2009-03-18 2013-07-09 International Business Machines Corporation Processing array data on SIMD multi-core processor architectures
UA94521C2 (ru) * 2010-02-08 2011-05-10 Виктор Владимирович Гребеников Привод устройства регулирования напряжения силового трансформатора под нагрузкой
KR20120077164A (ko) 2010-12-30 2012-07-10 삼성전자주식회사 Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법
JP5760532B2 (ja) * 2011-03-14 2015-08-12 株式会社リコー プロセッサ装置及びその演算方法
US20130305020A1 (en) * 2011-04-01 2013-11-14 Robert C. Valentine Vector friendly instruction format and execution thereof
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
CN102200964B (zh) * 2011-06-17 2013-05-15 孙瑞琛 基于并行处理的fft装置及其方法
US9823928B2 (en) 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
WO2013095477A1 (en) 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for detecting and recovering from data fetch errors
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
WO2013095630A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved extract instructions background
CN111831335A (zh) 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
CN107220029B (zh) 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
US9658850B2 (en) 2011-12-23 2017-05-23 Intel Corporation Apparatus and method of improved permute instructions
WO2013095642A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
CN102622318B (zh) * 2012-02-27 2014-09-10 中国科学院声学研究所 一种存储器控制电路及其控制的向量数据寻址方法
US9348601B2 (en) 2012-12-26 2016-05-24 Intel Corporation Coalescing adjacent gather/scatter operations
US20140244987A1 (en) * 2013-02-22 2014-08-28 Mips Technologies, Inc. Precision Exception Signaling for Multiple Data Architecture
WO2014203034A1 (en) * 2013-06-18 2014-12-24 Freescale Semiconductor, Inc. Signal processing device and method of performing a pack-insert operation
US9424034B2 (en) 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US9747104B2 (en) 2014-05-12 2017-08-29 Qualcomm Incorporated Utilizing pipeline registers as intermediate storage
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US20160139919A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates
GB2540940B (en) * 2015-07-31 2018-01-03 Advanced Risc Mach Ltd An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
US9875214B2 (en) * 2015-07-31 2018-01-23 Arm Limited Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
GB2552153B (en) * 2016-07-08 2019-07-24 Advanced Risc Mach Ltd An apparatus and method for performing a rearrangement operation
GB2552154B (en) * 2016-07-08 2019-03-06 Advanced Risc Mach Ltd Vector register access
US10353601B2 (en) * 2016-11-28 2019-07-16 Arm Limited Data movement engine
US10216479B2 (en) * 2016-12-06 2019-02-26 Arm Limited Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
JP7148526B2 (ja) * 2017-02-23 2022-10-05 アーム・リミテッド データ処理装置におけるベクトルによる要素演算
GB2564696B (en) * 2017-07-20 2020-02-05 Advanced Risc Mach Ltd Register-based complex number processing
CN109614362A (zh) * 2019-03-07 2019-04-12 深兰人工智能芯片研究院(江苏)有限公司 一种数据交换方法及电子设备
CN111459856B (zh) * 2020-03-20 2022-02-18 中国科学院计算技术研究所 一种数据传输装置及传输方法
CN112199159B (zh) * 2020-10-16 2022-03-25 常熟理工学院 对操作数栈和变量表的读写方法、装置、设备及存储介质
US20230267043A1 (en) * 2022-02-23 2023-08-24 Micron Technology, Inc. Parity-based error management for a processing system
CN114816566B (zh) * 2022-04-08 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 一种指令搬移方法、系统、设备以及介质
TW202344987A (zh) * 2022-05-13 2023-11-16 美商賽發馥股份有限公司 具窄資料路徑向量收集
CN115373628B (zh) * 2022-10-27 2023-02-03 北京象帝先计算技术有限公司 先进先出存储器、系统、装置、设备及数据读取方法
CN117271437B (zh) * 2023-11-21 2024-02-23 英特尔(中国)研究中心有限公司 一种处理器

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5615535B2 (zh) * 1974-12-03 1981-04-10
JPS59184944A (ja) * 1983-04-06 1984-10-20 Hitachi Ltd 丸め演算方式
US4876660A (en) 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
JPH0778735B2 (ja) 1988-12-05 1995-08-23 松下電器産業株式会社 キャッシュ装置と命令読出し装置
CA2045773A1 (en) * 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
JPH05233281A (ja) 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
US5408670A (en) 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5481743A (en) 1993-09-30 1996-01-02 Apple Computer, Inc. Minimal instruction set computer architecture and multiple instruction issue method
US5881302A (en) 1994-05-31 1999-03-09 Nec Corporation Vector processing unit with reconfigurable data buffer
US6009508A (en) 1994-06-21 1999-12-28 Sgs-Thomson Microelectronics Limited System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis
GB9412434D0 (en) 1994-06-21 1994-08-10 Inmos Ltd Computer instruction compression
GB9412487D0 (en) 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions
US5887183A (en) * 1995-01-04 1999-03-23 International Business Machines Corporation Method and system in a data processing system for loading and storing vectors in a plurality of modes
US5761103A (en) 1995-03-08 1998-06-02 Texas Instruments Incorporated Left and right justification of single precision mantissa in a double precision rounding unit
GB9509987D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
GB9509989D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
GB9509983D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Replication of data
GB9509988D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
GB9513515D0 (en) 1995-07-03 1995-09-06 Sgs Thomson Microelectronics Expansion of data
GB9514684D0 (en) 1995-07-18 1995-09-13 Sgs Thomson Microelectronics An arithmetic unit
GB9514695D0 (en) 1995-07-18 1995-09-13 Sgs Thomson Microelectronics Combining data values
JP3526976B2 (ja) 1995-08-03 2004-05-17 株式会社日立製作所 プロセッサおよびデータ処理装置
US6295599B1 (en) 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5907865A (en) 1995-08-28 1999-05-25 Motorola, Inc. Method and data processing system for dynamically accessing both big-endian and little-endian storage schemes
WO1997009671A1 (en) 1995-09-01 1997-03-13 Philips Electronics North America Corporation Method and apparatus for custom operations of a processor
KR0177985B1 (ko) * 1995-11-17 1999-05-15 김광호 프로세서의 벡터 데이터 조정 장치
US6088783A (en) * 1996-02-16 2000-07-11 Morton; Steven G DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5937178A (en) 1996-02-13 1999-08-10 National Semiconductor Corporation Register file for registers with multiple addressable sizes using read-modify-write for register file update
US5808875A (en) 1996-03-29 1998-09-15 Intel Corporation Integrated circuit solder-rack interconnect module
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5838984A (en) 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
TW364976B (en) * 1996-09-23 1999-07-21 Arm Corp Input operand control in data processing systems
US5996066A (en) 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6173366B1 (en) 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US5893145A (en) 1996-12-02 1999-04-06 Compaq Computer Corp. System and method for routing operands within partitions of a source register to partitions within a destination register
US5898896A (en) 1997-04-10 1999-04-27 International Business Machines Corporation Method and apparatus for data ordering of I/O transfers in Bi-modal Endian PowerPC systems
US5973705A (en) 1997-04-24 1999-10-26 International Business Machines Corporation Geometry pipeline implemented on a SIMD machine
US6047304A (en) 1997-07-29 2000-04-04 Nortel Networks Corporation Method and apparatus for performing lane arithmetic to perform network processing
GB2330226B (en) 1997-08-30 2000-12-27 Lg Electronics Inc Digital signal processor
GB2329810B (en) 1997-09-29 2002-02-27 Science Res Foundation Generation and use of compressed image data
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6085213A (en) 1997-10-23 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and summing the products
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
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US6144980A (en) 1998-01-28 2000-11-07 Advanced Micro Devices, Inc. Method and apparatus for performing multiple types of multiplication including signed and unsigned multiplication
US6269384B1 (en) 1998-03-27 2001-07-31 Advanced Micro Devices, Inc. Method and apparatus for rounding and normalizing results within a multiplier
US6223277B1 (en) 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US6223320B1 (en) 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US6334176B1 (en) 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
JP2000020486A (ja) * 1998-06-29 2000-01-21 Ricoh Co Ltd Simd型演算器
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6292888B1 (en) 1999-01-27 2001-09-18 Clearwater Networks, Inc. Register transfer unit for electronic processor
GB2352065B (en) 1999-07-14 2004-03-03 Element 14 Ltd A memory access system
US6408345B1 (en) 1999-07-15 2002-06-18 Texas Instruments Incorporated Superscalar memory transfer controller in multilevel memory organization
US6629115B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6546480B1 (en) 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6748521B1 (en) 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
WO2001067235A2 (en) * 2000-03-08 2001-09-13 Sun Microsystems, Inc. Processing architecture having sub-word shuffling and opcode modification
JP2002073325A (ja) * 2000-08-25 2002-03-12 Sanyo Electric Co Ltd データ処理装置及び方法
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
GB2419006B (en) * 2002-04-22 2006-06-07 Micron Technology Inc Providing a register file memory with local addressing in a SIMD parallel processor
GB2402759B (en) * 2003-06-12 2005-12-21 Advanced Risc Mach Ltd Data processing apparatus and method for transferring data values between a register file and a memory
US7315932B2 (en) * 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI595413B (zh) * 2011-11-25 2017-08-11 英特爾公司 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯(二)

Also Published As

Publication number Publication date
IL173622A0 (en) 2006-07-05
JP4689622B2 (ja) 2011-05-25
TW200527203A (en) 2005-08-16
WO2005057406A1 (en) 2005-06-23
GB0328503D0 (en) 2004-01-14
GB2409059A (en) 2005-06-15
CN1890630B (zh) 2010-10-13
CN1890630A (zh) 2007-01-03
US20050125641A1 (en) 2005-06-09
JP2007514227A (ja) 2007-05-31
EP1692613A1 (en) 2006-08-23
KR100991984B1 (ko) 2010-11-04
MY138193A (en) 2009-05-29
US7219215B2 (en) 2007-05-15
EP1692613B1 (en) 2018-03-21
KR20060135642A (ko) 2006-12-29
RU2006120158A (ru) 2007-12-27
IL173622A (en) 2010-11-30
GB2409059B (en) 2006-09-27

Similar Documents

Publication Publication Date Title
TWI345703B (en) A data processing apparatus and method for moving data between registers and memory
TWI315034B (en) A data processing apparatus and method for moving data between registers and memory
TWI322958B (en) Aliasing data processing registers
US9557994B2 (en) Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US7689811B2 (en) Method and apparatus for constant generation in SIMD processing
US7761693B2 (en) Data processing apparatus and method for performing arithmetic operations in SIMD data processing
US7145480B2 (en) Data processing apparatus and method for performing in parallel a data processing operation on data elements
US20050198473A1 (en) Multiplexing operations in SIMD processing
US20050125647A1 (en) Endianess compensation within a SIMD data processing system
US20050125636A1 (en) Vector by scalar operations
US6958718B2 (en) Table lookup operation within a data processing system
US7210023B2 (en) Data processing apparatus and method for moving data between registers and memory in response to an access instruction having an alignment specifier identifying an alignment to be associated with a start address
US20050125631A1 (en) Data element size control within parallel lanes of processing
US20050125635A1 (en) Moving data between registers of different register data stores
US20050125638A1 (en) Data shift operations