TWI315034B - 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
TWI315034B
TWI315034B TW093124104A TW93124104A TWI315034B TW I315034 B TWI315034 B TW I315034B TW 093124104 A TW093124104 A TW 093124104A TW 93124104 A TW93124104 A TW 93124104A TW I315034 B TWI315034 B TW I315034B
Authority
TW
Taiwan
Prior art keywords
data
data elements
register
registers
instruction
Prior art date
Application number
TW093124104A
Other languages
English (en)
Other versions
TW200532452A (en
Inventor
Simon Andrew Ford
Dominic Hugo Symes
Andrew Christopher Rose
David Raymond Lutz
Christopher Neal Hinds
Original Assignee
Arm Limite
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 Arm Limite filed Critical Arm Limite
Publication of TW200532452A publication Critical patent/TW200532452A/zh
Application granted granted Critical
Publication of TWI315034B publication Critical patent/TWI315034B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead

Description

1315034 玖、發明說明: 【發明所屬之技術領域】 概言之,本發明係關於一種於暫存器與記憶體間移動資 料之資料處理設備及方法。 【先前技術】 當需於一些個別資料元件,執行一特定資料處理操作 時,加速此類操作性能之一已知方法,為利用單一指令多重 資料(Single Instruction Multiple Data,SIMD)方法。根 據SIMD方法,多個資料元件乃並排置於暫存器内,且接著 平行於這些資料元件執行操作。 然而,僅當資料元件可以適當順序安排於暫存器内,且 無顯著重疊(overhead)時,才可完全實現SIMD方法之實 際性能優點。傳統上,於執行SIMD操作前,需將相關資料 元件由記憶體載入至暫存器,且通常SIMD操作所需之資料 元件,並非連續地位於記憶體内之位址空間。例如,記憶體 内之資料可能表示圖素數值(即RGB數值)之紅色、綠色 與藍色構件(components),且可能希望,對於未載入記憶 體連續區塊之某些圖素之紅色、綠色與藍色構件,執行一特 定SIMD操作。 因此,此需要資料由記憶體擷取至某些暫存器,且接著 重新安排資料,使得紅色、綠色與藍色資料元件佔據不同之 暫存器。將需多個存取,以擷取所需資料,且接著通常需重 3 1315034 新安排資料,以確保資料於暫存器内正確排序,以允許執行 SIMD操作。 一種存取所需資料元件之方式,乃是對於每個資料元 件,發佈一個別指令,此資料元件接著置於一指定目標暫存 器内。例如,考慮上述圖素數值之紅色資料元件,此將使得 每個紅色資料元件,佔據一個別暫存器。接著,可執行一重 新安排操作,以收集個別紅色資料元件至一或多個暫存器, 隨後可於這些資料元件執行SIMD處理。若應用SIMD處理 至這些元件,對於綠色與藍色資料元件,亦需一相似過程。 將瞭解此方法牽涉對於記憶體進行大量存取,且亦需一顯著 數量之可使用暫存器,以於其重新安排前,接收資料元件。 此外,除了因多重存取,對於性能所造成之不利衝擊外,亦 具有另一性能問題,乃因使資料排序成為可接受SIMD處理 前,需花費時間對資料進行重新安排,且此將不利地衝擊, 可透過使用SIMD操作所能實現之潛在性能優點。 若架構允許,對於上述已知技術之一可能改進,乃是同 時擷取一圖素之紅色、綠色與藍色資料元件,並將這三個資 料元件置於一特定暫存器。雖然此可減少所需之存取數目, 於可進行SIMD操作前,其仍須執行重新安排操作,以移動 不同構件之資料元件至不同暫存器。此外,仍須一顯著數量 之暫存器,以於其為了 SIMD處理準備而進行重新安排前, 儲存所擷取之資料元件。 4 1315034 於向量處理之不同技術領域,已知提供一載入指令,藉 由指定一起始位址與一步距(stride ),可由記憶體非連續位 置,收集個別資料元件。此例如,可使由一特定位址開始之 每第三個資料元件,載入至暫存器。亦可提供相似儲存指令。 然而,此方法通常牽涉增加所需之載入/儲存硬體之複 雜度,以實施此類步距功能,其於向量處理系統仍視為值 得,但於多數其他資料處理系統為不希望的。 此外,此方法之限制為,收集至暫存器,以作為隨後 SIM D處理之資料元件,將需由一特定步距所分隔,且實際 上通常不為此情況。例如,資料元件可透過一連結列表 (linked list )而產生關聯。而記憶體中一資料元件與下一 資料元件之分隔,乃會因資料元件而不同。 此外,考慮資料乃表示圖素之紅色、綠色與藍色構件之 稍早範例,接著,若需要所有三個構件,對於每個構件,將 需個別步距指令。因此,雖然增加載入/儲存單元之複雜度, 以支援步距功能,可使紅色構件收集至一特定暫存器,藍色 構件收集至另一暫存器,且綠色構件收集至再另一暫存器 (於限制之情況,所需資料元件乃由一固定步距所分隔), 此將需對於每個構件,發佈個別指令。 因此,將希望提供一改進之技術,以於指定暫存器與記 憶體間移動資料,以支援有效率之SIMD處理操作。 【發明内容】 5 1315034 根據本發明之第一目的,提供一種資料處理設備,含有 一暫存器資料儲存庫,具有複數暫存器,操作為保留資料元 件;一處理器,操作為對於至少一此暫存器中,佔據不同平 行處理徑之多個資料元件,平行執行一資料處理操作;一存 取邏輯,操作為回應一單一存取指令,以於指定暫存器中所 選擇之一徑,以及具有結構形式之一記憶體内之結構間,移 動複數資料元件,結構形式乃具有複數構件;此單一存取指 令,乃辨識結構形式内之構件數目;以及此存取邏輯,操作 為當其移動時,安排複數資料元件,使得不同構件之資料元 件,保留於不同指定暫存器内之選擇徑,同時於記憶體中, 資料元件以結構保留。 根據本發明,資料處理設備具有一暫存器資料儲存 庫,具複數暫存器,操作為儲存資料元件,及一處理器, 操作為對於至少一暫存器内,佔據不同平行處理徑之多個 資料元件,平行執行一資料處理操作。因此,例如,若特 定暫存器保留八個個別資料元件,每個獨立地接受資料處 理操作(即,於八個資料元件上執行一 SIMD操作),接著 可視為具有八個平行處理徑。 根據本發明,存取邏輯操作為回應一單一存取指令’ 以於指定暫存器内選擇之一徑,以及具有結構形式之記憶 體内之結構間,移動複數資料元件,結構形式具有複數構 件。因此,考慮稍早以紅色、綠色與藍色資料元件表示圖 1315034 素資料之結構範例,可知若希望於紅色、綠色與藍色資料 元件執行不同操作時,結構形式具有三個構件。於另一範 例,若記憶體内之資料表示具有一實數部分與一虛數部分 之複數,接著結構形式可具有兩個構件,一個表示實數構 件,且一個表示虛數構件,假設希望於這些構件執行不同 操作。 單一存取指令安排為辨識結構形式内之構件數目,且 存取邏輯操作為當其移動時,安排複數資料元件,使得不 同構件之資料元件,乃儲存於不同指定暫存器之選擇徑 内,同時於記憶體内,資料元件乃以結構儲存。 因此,單一存取指令使得一特定指定結構内之資料元 件,於同時間移動,且因此額外地,當其移動時,適當地安 排,使得不同構件之資料元件可置於不同暫存器内。單一存 取指令為載入指令形式時,此意味形成特定結構構件之所有 資料元件,可於一操作中載入,且安排為使得其置於選擇作 為接收資料元件之暫存器一特定徑内。因此,於稍早之具有 紅色、綠色與藍色資料元件之圖素範例,一載入指令可用於 載入一圖素之紅色、綠色與藍色資料元件,並安排這些資料 元件,使得紅色資料元件進入一暫存器,綠色資料元件進入 另一暫存器,且藍色資料元件進入再另一暫存器’於這些暫 存器之一選擇徑内。 此因此提供一特別有效率之技術,以由記憶體載入一 7 1315034 結構,並將組成之資料元件,以可為隨後s IM D處理所使用 之形式,置於暫存器内。 相同地,單一存取指令亦可採用儲存指令形式,其安 排為執行一類似過程,以由指定暫存器之一選擇徑,擷取 一特定結構之資料元件,且接著安排這些資料元件,使得 這些資料元件以正確結構形式,儲存回記憶體。當儲存回 記憶體時,於其接受SIM D處理後,此因此得以顯著增加欲 實現之性能。 將瞭解選擇徑可以各種方式指定。例如,於一具體實 施例,可辨識一預先決定徑,使得每次執行單一存取指令 時,存取乃於此預先決定徑產生。此將允許相同指令於一 迴圈執行多次,但可能需要一些資料重新安排,例如確保 任何剛載入之資料,不為新載入資料所覆蓋,或於儲存情 況,確保不同資料於每次迭代(i t e r a t i ο η )儲存回記憶體。 然而,於一具體實施例,單一存取指令指定選擇徑, 此對於任何特定存取指令,允許關於徑選擇之較大彈性。 於一具體實施例,存取邏輯回應一連串此單一存取信 號,以於指定暫存器之多個選擇徑,以及記憶體内對應之 多個結構間,移動資料元件。因此,藉由單一存取指令之 適當迭代,多個結構之資料元件,可載入至指定暫存器之 選擇徑内,隨後 SIMD操作可施加至這些資料元件。相同 地,藉由執行另一連串單一存取指令,指定暫存器不同徑 8 1315034 内之資料元件,可进你 、代地寫回記憶體内所龙_ 址,同時根據結構形式儲存。 求之記憶體位 結構包含複數構侔, . 午且所指疋之暫存芎赵Β 決於構件數目。於—〜 〇 ’傳統上取 特疋具體實施例,結構包含—槿株a 才曰疋暫存器包含— 3構件,且 伟益。雖然於此具體實 取指令後,僅載入或 ,,於每個存 及儲存—資料元件, 暫存器内之位置,仍具右士 、貝枓疋件於指定 需之資料元件之彳a , # 因用以保留存取所 對於此存取指令之任何迭代,可想* i 、。因此,即使於結構包含一個構件之Γ … ί 於暫存器内放置之彈陡 &歹_,就資料元件 實現顯著優點。 S ♦技藝技術,可 將瞭解與存取相關之指定暫存器 例如,可使用s 』以各種方式辨識。 了使用某些預設暫存器。然而,於一 一存取指令乃 、、體實施例,單 目之倍數。茲 器之數目為構件數 取邏輯可禮体η 数目為構件數目之倍數,存 件,且進_牛可…旦僅錯存一個構件之資料元 ^ 了谷易地決定哪一構件分派至哪一暫存 ^構^具有三個構件,且指令乃辨識 器,接著清楚地可知,一個構件可八#曰疋暫存 似傅什可分派至每一暫存 將瞭解資科元件可具有不同形 ° 處理設備内m 彳且貫際上於相同資料 例,單一…t Π Φ式之資科-件。於此類具體實施 存取右令較佳地包含資料 > 叶頰i貝s代,以辨識與所移 9 1315034 動之資料元件相關之資料類型。資料類型資訊可辨識用於定 義資料類型之任何相關資訊。例如,資料類型資訊可辨識所 移動資料元件之大小。於其他具體實施例,其亦可辨識其他 型態,例如資料是否為有號(s i g n e d )或無號等。 於一些具體實施例,所移動之資料元件可為不同資料類 型。例如,一構件之資料元件,相對於另一構件之資料元件, 可為不同資料類型。於一特定範例,一個構件之資料元件, 與另一構件之資料元件,可為不同大小。然而,於一特定具 體實施例,每個所移動之資料元件為相同資料類型,且因 此,資料類型資訊僅需辨識關於單一資料類型之資訊。因 此,此促進單一存取指令内,有效編碼資料類型資訊。 將瞭解可以各種方式辨識指定暫存器。然而,於一具體 實施例,指定暫存器彼此間可具一固定關係。藉由加入此一 限制於指定暫存器之辨識,此促進單一存取指令内指定暫存 器之有效率編碼。 固定關係可具有各種形式。然而,於一具體實施例,根 據固定關係,指定暫存器由η個中間暫存器所分隔,其中η 為2m-l,且其中m為大於或等於零之整數。當暫存器資料 儲存庫内之暫存器,可以各種方式混疊(aliased ),此於本 發明之一具體實施例尤其有利。例如,暫存器資料儲存庫可 視為包含一些6 4位元暫存器,其每個可個別地辨識,或可 視為含有一半數目之128位元暫存器。此外’暫存器之此方 10 1315034 式可動態地改變。因此,可能希望載入特定構件之資料 至第一 64位元暫存器,且接著載入相同構件之進一步 元件至一相鄰64位元暫存器。隨後,於稍後之SIMD操 此兩個暫存器可視為一單一 128位元暫存器。藉由以上 式,定義指定暫存器間之固定關係,可支援此類功能。 於一非常特定範例,當由記憶體載入RGB資料至 器時,可使用一連串單一存取指令,以載入紅色構件之 元件至第一暫存器,綠色構件之資料元件載入至第三 器,及藍色構件之資料元件載入至第五暫存器。接著, 用一連串單一存取指令,以載入紅色構件之進一步資料 至第二暫存器,綠色構件之進一步資料元件至第四暫存 以及藍色構件之進一步資料元件至第六暫存器。隨後, 色構件之資料元件上執行之SIM D操作,可指定一來源 器為128位元暫存器(實際上包含64位元暫存器1與 雖然可以上述方式定義固定關係,以支援上述之ϊ乂 於一具體實施例,指定暫存器乃為暫存器資料儲存庫内 連串相鄰暫存器。此提供單一存取指令内之一特別有效 碼0 將暸解單一存取指令可具有各種形式。然而,於一 實施例,單一存取指令為一單一載入指令,此存取邏輯 為回應此單一載入指令,以由記憶體内此結構’載入複 料元件至此指定暫存器之選擇徑,且於將資料元件儲存 元件 資料 作, 述方 暫存 資料 暫存 可使 元件 器, 於紅 暫存 2 ) ° 能, 之一 率編 具體 操作 數資 於此 11 1315034 指定暫存器選擇徑前,安排此資料元件,使得不同構件之資 料元件,儲存於指定暫存器之不同暫存器。 根據此具體實施例,記憶體存取可以有效率方式管理, 因一結構之資料元件,乃於相同記憶體存取間進行存取,且 接著安排個別資料元件,使得一構件之資料元件,相對於另 一構件之資料元件,乃儲存於不同暫存器。此避免於可執行 SIM D操作前,需執行進一步安排指令,以重新排序資料, 且因此得以更完整實現SIMD操作之性能優點。 根據本發明一具體實施例,單一存取指令可為單一儲存 指令,此存取邏輯操作為回應此單一儲存指令,以儲存來自 此指定暫存器之選擇徑之複數資料元件,至記憶體内之此結 構,且於將資料元件儲存於此結構前,安排此資料元件,使 得資料元件以結構形式儲存。 本發明乃提供一有效率之機制,以由記憶體載入資料元 件至暫存器,以允許無延遲地執行S IMD操作,將瞭解由性 能觀點,提供一相同有效率技術,一旦處理器不再需要資料 元件,以將其儲存回記憶體,亦為有利的。根據本發明此具 體實施例,存取邏輯回應單一儲存指令,以安排資料元件, 使得資料元件,接著以結構形式儲存於記憶體内。再次’可 產生對於記憶體之一有效率存取,因一結構之資料元件,乃 透過單一記憶體存取儲存。 於一特定具體實施例,當單一存取指令為一單一載入指 12 1315034 令時,存取邏輯操作為使得指定暫存器之未填滿部分,由一 或多個預先決定數值所填滿。將瞭解預先決定數值可具有不 同形式。於一特定具體實施例,邏輯零(丨ogica丨zeros)乃 用於填滿指定暫存器之其餘未填滿部分。 將瞭解記憶體之定址方式可具有不同形式。然而,於一 具體實施例,單一存取指令乃辨識用於辨識所移動資料元件 之一定址模式。於一特定具體實施例,定址模式辨識記憶體 内結構之一起始位址。傳統上,起始位址未直接於指令内編 碼,而是於指令内辨識一暫存器,且此暫存器安排為保留起 始位址。 將瞭解指定暫存器可為任何適當大小。例如,若不同構 件之資料元件為不同大小,接著指定暫存器為不同大小亦為 適當地。然而,於一具體實施例,指定暫存器為相同大小。 於本發明一具體實施例,單一存取指令可辨識施加於資 料元件之一轉換(transformation ),且存取邏輯操作為當其 移動時,施加此轉換至資料元件。轉換可具有各種形式。然 而,例如,轉換可指定當其由記憶體載入時,且於儲存於暫 存器前,資料元件為有號延伸(sign-extended)。因此’於 一特定範例,若資料元件為有號8位元資料元件’接著單一 存取指令可辨識這些資料元件,需為有號延伸至16位元之 一轉換,且接著以有號1 6位元數值,儲存於暫存器。於指 令内指定此一轉換之一方式,乃是指定所存取資料元件之資 13 1315034 料類型,以及所需之結果資料類型。藉由利用此一方式,可 達成一有效率之機制,使得資料元件由記憶體載入至暫存器 時,或由暫存器儲存回記憶體時,可進行轉換。 根據本發明之第二目的,乃提供一種操作一資料處理設 備之方法,此資料處理設備包含一暫存器資料儲存庫,具有 複數暫存器,操作為保留資料元件,以及一處理器,操作為 對於至少一此暫存器内佔據不同平行處理徑之多個資料元 件,平行執行一資料處理操作,本方法包含步驟:(a )回應 一單一存取指令,以於指定暫存器内所選擇之一徑,以及具 有結構形式之記憶體内之一結構間,移動複數資料元件,結 構形式具有複數構件;單一存取指令乃辨識結構形式内之構 件數目,且本方法進一步包含步驟(b )當其移動時,安排 複數資料元件,使得不同構件之資料元件,於不同指定暫存 器内之選擇徑保留,同時記憶體内資料元件乃以結構保留。 根據本發明之第三目的,乃提供一種電腦程式產品,包 含一電腦程式,含有至少一單一存取指令,當執行時,使得 一資料處理設備根據本發明第二目的之方法操作。 【實施方式】 第1圖圖表式地繪示一資料處理系統(積體電路)2, 包含純量資料處理功能,以及SIM D之資料處理功能。純量 資料處理部分可視為一標準ARM處理器核心’包含一純量 暫存器資料儲存庫4、一乘法器6、一移位器8、一加法器 14 1315034 1 0,一指令線路1 2與一純量解碼器1 4,以及為了清晰緣故 而未繪示之許多其他電路元件。於操作時,此一純量處理器 核心乃於純量暫存器資料儲存庫4内,儲存固定長度之3 2 位元資料數值,並且使用乘法器6、移位器8與加法器1 0, 在沿指令線路1 2通過之資料處理指令控制下,操作這些數 值,並提供至純量解碼器1 4。純量解碼器1 4產生控制信號, 以常見方式控制純量處理元件之操作。 如第1圖所繪示,積體電路2包含各種專用之SIMD處 理元件,包含一 SIMD暫存器資料儲存庫20、專用之SIMD 處理邏輯18與重新排序(reordering)邏輯24。一載入健存 單元22乃與純量部分共享,且可與純量處理器内常見之載 入儲存單元相同,或為其修改變化形式。 指令線路1 2延伸具有額外線路平台(s t a g e s ),其透過 一專用S IM D解碼器1 6,用以控制S IM D處理操作。(將可 瞭解於其他具體實施例,S IM D線路可與其他純量線路平行 提供)。SIMD解碼器16產生SIMD控制信號,其控制SIMD 處理元件之操作,例如讀取SIMD暫存器,寫入SIMD暫存 器,以及SIMD處理邏輯之組態,以便執行希望之資料處理 操作。SIMD線路平台於純量平台之後,使得處理器之SIMD 部分,有效地尋找與純量部分不同之執行點。此可能導致需 要一些交互鎖定(interlocking),將於下討論。 重新排序邏輯24用以重新排序,由耦接至積體電路2 15 1315034 之一記憶體(未顯示)擷取 CT^n ^ 貝枓兀*件,使得其成為較適合 SIM D處理操作所需之順序。 此重新排序邏輯24,其操作與 優點將於下進一步討論。 、 招^ „ 储存栽入單元22與重新排序邏 輯24間,亦提供載入與儲存先 尤出(FIFOs) 2 3 23 〇 純量暫存器資料儲存庫4, ^ "此範例可視為劃分為固定 數目之固定長度暫存器,例如常 ^ 贯見之1632位元ARM暫存 器。相對地,SIMD暫存器資料 甘 儲存庫20,乃提供一儲存區 塊,其可以彈性方式定址/存取, 取決於與SIMD之資料虚 理指令相關之參數。更_& (貧抖處 μ 體地’ 之資料處理指令,指 疋來源與目標暫存器數目、 —兀件大小,以及與資料處理 及暫存器資料财庙 。參數藉由SJMD解碼器16,以 暫存“枓儲存庫2。之讀取,寫入部分一… 不同部分之映射’以及儲存 °工制 m ^ Urn m η 臀存15所存取之,SIMD暫存 器責科儲存庫20中之對應資料 SIMD τ 。因此,具不同大小之 SIMD暫存器,不同大 ^ 一 p,姑— +4疋件等,可有效地混疊(即, 這些暫存器可視為重疊, “即, 依所禹,透過不同暫存器扣 器(SPe仙⑴)、暫存器大小與 ⑽存4疋 此範例具體實施例,SIMD 疋件大小組合存取。於 馬盗16,以及靖宜 視為提供暫存器存取邏輯^ 及讀取/寫入埠可 第2圖圖表式地繪示, + * &七、做為SIMD暫存g§眷社灿 存庫20之讀取與寫入蟀安排 暫存器貝枓健 ,c γΛΑΤΛ ;此範例’二十二個暫在 可由SIMD之資料處理指令内 皙存态 之暫存器指定範圍(5位元) 16 1315034 所指. 所支: 於此. 熟知 256 { 援指 工器 存庫 引致 式提 器數 乘以 (以 存庫 一同 二 Q 存器 源D 含有 例,: 1 6位 。N個讀取㈣SIMD暫存器資料儲存庫2()連結。 之最小顆粒度(granularityU 64位元暫存器數值。 例’直接支援之暫存器大小為64位元與128位元。 此項技藝之人士將可瞭解,此安排可直接放大至支援 t元以及較大之暫存器大小,或間接地藉由組合使用支 令之較小大小暫存器。第2圖圖表式地繪示m個解多 (de-multipleXers),用以寫入埠至SIMD暫存器資料儲 20。將可瞭解,實際上’此類解多工器乃以可適當導 能信號,至SIMD暫存器f料儲存庫内之儲存元件列形 供,以及連同多工器發送所需之輸入至其目的之動作。 第3圖繪示一特定範例’其中兩個64位元smD暫存 值(以兩個D表不),每個含有多個資料元件,彼此相 產生多個輸出資料元件,一同儲存於一 128位元暫存器 Q表示)。個別讀取埠乃安排為由SIMD暫存器資料儲 20,讀取來源SIMD暫存器數值〇1與〇2。兩個寫入璋 做為分別允許128位元結果之第一 Q [63:〇]部分,舆第 [127:64]部分寫回SIMD暫存器儲存庫2〇。將瞭解d暫 與Q暫存器内之資料元件大小可變動。例如,於每個來 暫存器,可包含四個16位元資料元件,目標Q暫存器 一組相乘結果之相對應四個3 2位元資料元件。於此範 I可瞭解,當資料元件大小根據所執行之相乘操作,由 元增加墓3 2位元時,處理平行徑之數目(四個)如何 17 1315034 維持固定。 第4圖繪示來源暫存器大小與目標暫存器大小間,可支 援之各種不同類盤關係。於最上方之範例,處理平行徑之數 目維持固定,且資料元件大小維持固定。於第二與第四範 例,處理平行徑之數目維持固定,但資料元件大小於來源與 目標間改變。於第三範例,兩個來源元件具不同資料元件大 小。本系統之SIM D處理結構與技術,支援不同類型之資料 處理指令,將於下進一步描述。最後三個範例為具單一輸入 變數之單一操作。第五範例維持相同資料元件大小。第六範 例將資料元件大小加倍,且第七範例將資料元件大小減半。 第5圖圖表式地繪示SIMD資料處理指令之語法。語法 第一部份指定相關之SIMD操作子(operator ),於此情形為 乘法操作。隨後為表示輸出資料元件大小,以及輸出資料元 件其他特徵之領域(fields )。於此範例,輸出資料元件長度 為16位元,且為有號整數(signed integers)。下一領域表 示輸入資料元件大小與特徵,於此情況為有號8位元整數。 下一領域表示目標暫存器大小與暫存器指定器。於此範例, 具有暫存器指定器12之128位元四字元SIMD暫存器,用 以做為目標SIMD暫存器。兩個來源SIMD暫存器每個為雙 字元64位元暫存器,暫存器指定器分別為「1」與「4」。以 下將進一步描述語法之資訊。 定義一組資料類型,以表示不同資料格式。此於表格〇 18 1315034 中描述。多數指令使用至少一種資料類型修飾詞 (qualifier ),以決定正確操作。然而,操作不需支援所有 資料類型。資料類型乃以下標方式應用至領域,表示資料元 件大小與特徵。 資料類型修飾詞 解釋 .< s i z e > < s i z e > 位 元 之 任 何元 件 .I < s i z e > < s i z e > 位 元 之 有 號或 無 號整數 .F < s i z e > < s i z e > 位 元 之 浮 點數 字 .P<size> 大於{〇,l }程度 ,小 於* <size>之多 項式 .S <size> < s i z e > 位 元 之 有 號整 數 .U < s i z e > < s i z e >之無 號 整 數
表格0
第6圖繪示S IMD暫存器資料儲存庫2 0,如何視為分割 為三十二個64位元暫存器,或十六個128位元暫存器。這 些暫存器映射至相同實體SIMD暫存器資料儲存庫20,且因 此相互混疊。於此範例,暫存器D 0内之資料元件亦可以暫 存器Q0内之資料元件存取。 第7圖圖表式地進一步繪示64位元與128位元暫存器 19 1315034 間之重疊。如圖所示,12“立元暫存器Q(n)對應於兩個㈠ 位元暫存器D(2n + i)與D(2n)。 第8圖圖表式地緣示資料元件範例,其可以不同大小儲 存於SIMD暫存器内。於第8圖 1刀 所繪不之1 2 8 位元SIMD暫存器含有四個32位元資料元件,或八個16位 元資料元件。資料元件可有號或無號整數,浮點數字或其他 所需且適合執行平行處理之數字格式。 第8圖下部分繪示__ M位元smD暫存器,其可含有 兩個有號32位元整數’或四個無號16位元整數。可具有許 多其他可能’且將為此項技藝之人士所熟知。
曰第9圖圖表式地缘示,如何參照8则暫存器内之個別 純莖數值。所繪示之SIMD ^ 节仔益26含有四個有號整數數 值。若此SIMD暫存器視為暫存 仔益化則不同個別有號整數 數值可表不為Dn[WDn[0]eSIMD暫存器内個別資料元件 之此類參照乃用於,例如,去拙 > 站士 例如,*執仃暫存器轉移指令, :二暫存器之-資料元件,並將其移動至純量暫存器 子庫4内之一暫存器,或由純量暫存器資料錯存庫 —暫存器移出。 之 暫存:二IT如何執行_資料處理指令,使得來源 '、π暫存器間之處理徑數目維持固定,且資料_ 大小維持固定。於此範例’來源SIMD暫存器為D :
位元且含有四個丨6位元資料元件),具有四個處理平^徑M 20 1315034 目標SIMD 位元資料元 相對於 寬度為來源 定,但資料; 例如相乘、 乃緣示,目 半之範例。: 改變來 徑數目,可 資料處理才桑 新排序,或 等,此為一 第12 S IM D暫存5 由純量解碼 制信號,回 存器轉移邏 存器,以及 特定位置間 一資料數值 圖所缯示。 暫存器亦為64位元D暫存器,含有四個結果16 件數值。 第10圖,第;ΠΑ圖乃繪示,目# SIMD暫存器 SIMD暫存器兩倍之範例。處理徑數目維持固 己件大小加倍。此類型狀態適合用於操作, 相加、相減與移位(尤其為左移位)。第nB圖 標SIMD暫存器寬度為來源SIMD暫存器寬度— 也類型指令適用於相加與移位(尤其為右移位)。 源與目標間資料元件大小之能力,同時維持處理 允許建立SIMD資料處理指令序列,而不因執行 作產生之資料元件大小改變,而需使資料元件重 加倍指令。就處理速度、程式碼密度、功率消耗 顯著優點。 圖圖表式地繪示,純量暫存器資料儲存庫4與 纟資料儲存4 2〇,藉由暫存器轉移邏輯28叙接。 器Μ或SIMD解碼器兩者或其中之一接收之控 應指令線路12内之暫存器轉移指令,以控制暫 緝28’於純量暫存器資料儲存庫4内之特定暫 SIMD暫存器資料儲存冑2〇内,特定暫存器之 移動資料。由純量暫存器移動至SIMD暫存器之 ’可複製i S_暫存器内所有位置,如第13 比類具有複製之暫存器轉移指令,#常適合於 21 1315034 SIMD暫存器内,快速使得所有處理徑具有數值,例 數值’其需藉* SIMD處理邏_ 18,應用至SIMD暫 之不同其他操作元。 第14圖繪示不同類型之暫存器轉移指令。於此 一 32位元純量數值A,移動至s_暫存器内一特 (徑)。其他徑維持其原始數值。純量數值於整個純 态未複製。目I純量暫存器内之位置,可藉由暫存器 令内之-適當範圍數值改變。此類操作允# 51廳暫 之個別貝料7L件,具有來自純量暫存器資料儲存庫之 值。 第15圖繪示暫存器轉移指令之進一步類型 例,來自SIMD暫存器内之一 16位元資料元件,乃由 暫存器内之一特定變動位置取得,並複製至其中一 器。因純量暫存器為一 32位元暫存器,於此範例 件接著有號延伸(sign extended)。資料元件亦可, (zero extended),取決於特定演算法或系統之需求 第16圖為一流程圖示,圖表式地繪示處理類1 例,其中可有利地利用第14與15圖之暫存器轉移 步驟30,於多條徑平行執行一些SIMD處理,每個^ 身之資料元件。於某一時刻,此處理需執行一資料: 不為SIMD處理邏輯18所支援,或僅能無效率地 此情況,希望得以分別移動個別資料元件通過純』 如純量 存器内 範例, 定位置 量暫存 轉移指 存器内 資料數 於此範 b SIMD 量暫存 資料元 零延伸 > 之一範 令。於 有其自 作,其 援"於 處理系 22 1315034 、·'先’以允§午執行此一複雜眘刺_握从 ^ '貢料私作。步驟3 2選擇欲移動之 第—資料元件。步驟3 4接荖執仵 ^ 按者轨仃—暫存器轉移指令,如第 1 5圖所繪示。步驟3 6於丰统純 ^ 糸..元屯I σρ分之個別資料元件,執 行希望之複雜處理。當此箱雜處?田〜 备此禝雜處理完成時,步驟38執行一 暫存器轉移指令’如第14圖所千 _ 4圖所不’以使得現在修改之資料 元件返回至其原始位置。击級4n a & 步驟40決定是否到達最後資料元 件’且若非如此,於返回處理5牛峨, 慝理至步驟34前,步驟42選擇下 一資料元件。若所有需勃杆適雜j品. 而钒仃複雜知作之資料元件,已移動通 過純量系統,接受希望之處理’並移動返回至smD系統, 接著處理由步驟40繼續至步驟44,於此繼續平行_〇處 理。 指定SIMD暫存器,以存取暫存器f料儲存庫 < 胃_ < 理指令’包含-或多個暫存器領域,編碼暫存器欲存取之暫 存器數目。所使用之5位元暫存器指定器,乃設計為與 向量浮點(Vector Floating Point ,VFP )單元所佶田 心用的相 同’亦即’指定暫存器之指令位元為: *對於目標暫存器: D = bit[22]
Rd = bits[15:12] 對於第一來源暫存器指定器: 23 1315034 N = bit[7]
Rn = bits[19: 16] *對於第二來源暫存器指定器: m - b i t [ 5 ]
Rm = bits [3 : 0] 此外,這些位元之使用選擇,為使得Di暫存器與字元 量得以一致地編碼,藉由向量浮點分別指定倍精度 (double-precision)與單精度(single_precisi〇n)暫存器之 方式’且對於Qi暫存器與半字元量,使用相同方式。以下 將描述如何使用(D,Rd) ; (N,Rn)與(M,Rm)亦以相似方式使 用:
Qd: Qi 暫存器數目為(D,Rd[3],Rd[2],Rd[l])
對應之 Di暫存器數目為(D,Rd[3],Rd[2],Rd[l],0)與 (D,Rd[3],Rd[2],Rd[ 1 ],1)
Rd[0]需為零
Dd: Di 暫存器數目為(D,Rd[3],Rd[2],Rd[l],Rd[0]) 字元量: 24 1315034
Di 暫存器數目為(0,Rd[3],Rd[2],Rd[l],Rd[0]) word[D]根據小尾序(little-endian),由暫存器選擇 半字元量:
Di 暫存器數目為(〇,〇,Rd[2],Rd[l],Rd[0]) halfw〇rd[(D,Rd[3])]根據小尾序,由暫存器選擇 位元組量:
Di 暫存器數目為(0,0,0,Rd[l],Rd[0]) byte[(D,Rd[3],Rd[2])]根據小尾序,由暫存器選擇 因此,位元D、Rd[3]、Rd[2]、尺町^與Rd[〇]視為可 射至一 5位元相鄰領域,其可藉由一些位元位置數目循 (rotatable ),取決於暫存器數目之暫存器大小。實際上 暫存器編碼位元並非以個別操作映射或循環,而是提供至 存窃存取邏輯,以形成一列位址與一行位址,以存取暫存 資料儲存庫,且提供根據暫存器大小之一可移動遮 (mask),以選擇位元之正確部分,做為列與部分行位址 根據本發明之具體實施例,乃提供載入與儲存指令, 於SIMD暫存器檔帛2〇 (見第】圖)與記憶體間移動” 載入指令可用於由記憶體載入資料元件至指定暫存器,而 存指令用於由指定暫存器儲存資料元件至記憶體。這些載 映 環 9 暫 器 罩 Ο 以 〇 儲 入 25 1315034 與儲存指令乃設計為,支援使用SIM D處理邏輯1 8之演算 法所需之資料移動。根據本發明之載入與儲存指令,指定其 載入與儲存之資料元件大小,且此資訊用於提供暫存器内之 一致排序,而與記憶體系統之尾序(e n d i a η n e s s )無關。
本發明具體實施例之載入與儲存指令,允許來自記憶體 連續區塊之一些資料元件,載入或儲存至SIMD暫存器檔案 2 0。根據一具體實施例,可於任何位元校直(a 1 i g n m e n t )執 行存取,且載入或儲存最高至32位元組。 本發明具體實施例之載入與儲存指令,視為由記憶體存 取資料,其中資料元件乃以結構方式安排,每個結構具有一 些構件(c 〇 m ρ ο n e n t s )。根據一具體實施例,記憶體中之結 構可含有一至四個構件,其中一個構件,可具有SIMD處理 邏輯1 8可辨識之任何資料類型大小,於較佳具體實施例, 這些資料類型大小為8、16、32或64位元。用於本發明具 體實施例之一些常見結構格式範例,乃示於下列表格:
26 1315034 格式 說明 (a) 單一構件 (X,y) 二維位置座標 (real, imm) 複數 O,y,z) 三維向量 (r, g,b) 圖素 (x, y, z, w) 四維向量 存 件 此 以 資 之 示 入 器 範 個 石馬 對於任何特定載入或儲存指令,記憶體中之每個結構 取對象將具有相同結構格式,且因此將包含相同數目之 。載入與儲存指令安排為辨識結構格式中之構件數目, 資訊為重新排序邏輯2 4所使用,當執行載入操作時, 提供資料元件之解交錯配置,且當執行儲存操作時,提 料元件之交錯配置,允許資料於暫存器内安排,使得結 不同資料元件,出現於不同暫存器。此概念乃圖表式地 於第17圖,其中載入指令用於由記憶體之連續區塊, 一些資料元件至三個指定暫存器。於此範例,指定之暫 為三個64位元暫存器D0 220、D 1 22 5與D2 23 0。於 例,結構格式為三維向量格式,且因此於記憶體2 0 0中 結構2 1 0具有三個構件2 1 5。 如第1圖所示,載入指令由指令線路12發送至純量 器1 4,使得適當之記憶體存取控制信號’傳送至載入 構 且 用 供 構 繪 載 存 此 每 解 儲 27 1315034 存單元(L〇adSt㈣Unit ’ LSU) 22。載入儲存單元接著由 記憶體之一連續〔塊存取所需之四個結構A [ 0 ]、A [丨]、A [ 2 ] 與A[3]。因此’載入儲存單元22可以其正常方式操作。隨 後,資料透過重新排序邏輯24發送,其安排為解交錯配置 每個結構之三個構件,使得屬於X構件之資料元件發送至暫 存器DO 220, Y構件之資料元件發送至暫存器m 225,且z 構件之元件發送至暫存器D2230。
由一結構陣列載入,以及將資訊分離至個別暫存器,作 為部分載入操作之能力’可允許資料立即進行有效率之 SIMD處理。 當來自指U仔器之儲存資料’返回至記憶體之" 塊,重新排序邏輯2 4亦安排為執行一相似處理,於此情 重新排序邏輯24執行一交錯配置操作,以重新產生資球 存於記憶體前之結構格式。
如第1圈所示,於這些指令抵達指令線路12之^ 平台前,載入指令由指令線路發送至純量解碼器14。在 得載入資料裏S細暫存器樓案2。之過程盡可能地: 生,且其優黠為隨後之SIMD處理指令,於 __ 、六'開始執行] 通常將不需等待資料栽入,從而顯著地減少 〜v戰入操作$ 遲。然而’儲存指令需通過指令線路,直 J务發送至si 解碼器16 ’由此處,適當之控制信號可用於控制來自SI 暫存器播案2。之資料存取’以及在資料透過載入储存^ 28 1315034 内之適當重新排 2 2儲存回記憶體前,控制重新排序邏輯2 4 序。然而’可執行儲存指令之某此部分, 一 1 77 冋時於指令線路 1 2之A R Μ部分,例如檢查位址,記悴贈左& U篮存取許可等,以確 保指令不會造成資料失敗。 本發明具體實施例之載入與儲存指令, J現為下列早一 語法。語法可以下列方式表示: V(LDIST)<st>.<dt> {@<a>} <reglist> 5 1 η >) <addr> 其中 <st>結構格式 記憶體之資料元件’視為具有<st>構件之_結構陣列。 當其於記憶體與SIMD暫存器儲存庫間移動時,&資訊用於 交錯配置與解交錯配置資料元件,以產生有效率之處 <dt>資料類型 此決定載入之資料元件之大小 <a>校直指定器(^擇性) <reglist> SIMD暫存器列表 此決定將寫入或讀取之SIMD暫存 于态狀態。對於載入 此為SIMD暫存器檔案將受 戰八 扣7抑響之明確部分。暫存器 表視為具有大小<dt>之資料元件集合, ° Μ分為相等長许 <st>向量。 夜 29 1315034 注意暫存器列表内之位元組數目,不需與所存取記 之位元組數目相同。參照〈心選項與第2〇A至2〇c圖。 <n>結構數目(選擇性) 此定義載入或儲存之結構數目。此允許暫存器列表 分載入記憶體資料’且其餘部分歸零。當其未提供時, 用預设值’表示暫存器列表與記憶體存取大小相同。 __default <n> ;= elements<dt>(<reglist>) / <st> <addr>用於存取之定址模式 根據本發明之具體實施例,定址模式可採用各種形 尤其可使用下列所述之三種形式: ;// <addr> [Rn] ;// address := Rn [Rn]! ;// address := Rn, Rn := Rn + transfer. (其47「轉移大小」為記憶體所存取之數量) [Rn], Rm ;// address := Rn, Rn := Rn + Rm 上述之語法,允許載入或儲存單一結構或多個結構 及邏輯零(l〇gical zeros )寫入至,未被來自記憶體之 所填入之暫存器其餘部分,且藉由使用含有純量指定器 如D 0 [ 1 ])之暫存器列表,插入至暫存器。將可瞭解, 發明之具體實施例,所提供之實際載入與儲存指令,通 為上述語法所有可能組合之子集。 憶體 —1 - 僅部 其利 式, size ,以 資料 (例 於本 常將 30 1315034 關於結構格式,第1 8圖繪示三種可能結構格式之範 例,以及其對應之「s t」數值。由第18圖可知,第一結構 25 0僅具單一構件,且因此「st」數值為一。於第二範例, 結構2 5 5具有兩個構件,例如表示一複數之實數部分X與虛 數部分y,且因此「s t」數值為二。最後,於第三範例,結 構260具有三個構件,代表R、G與B資料元素,且因此「st」 數值為三。 為幫助說明當使用本發明具體實施例之載入與儲存指 令時,可獲得之功能,第1 9至22圖繪示載入與儲存指令之 特定範例。考慮第19A至19C圖,第19A圖繪示由儲存指 令所指定之reglist狀態 VST 2.16 {DO, Dl, D2, D3}, [rl] 此指令用於由指定暫存器檔案,儲存多個結構至記憶體 之一連續區塊。如圖所示,第19A圖辨識reglist含有四個 指定暫存器 D0 270、D 1 280、D2 290 與 D3 300。如第 19B 圖所示,這些暫存器可視為劃分為具有「dt」大小(即16 位元)資料元件之「st」向量(即2)。於暫存器D0,這些 資料元件以數字275表示,於D1以數字285,於D2以數字 295,且於D3以數字305表示。如第19C圖所示,重新排 序邏輯2 4安排為由這兩個向量交錯配置資料元件,使得結 構3 1 2之每一資料元件3 1 4,以所需結構格式,儲存於記憶 體 3 10。 31 1315034 第2 0 A至2 0 C圖為一相似圖示組,說明由指令 之操作 VLD2.16 {DO, Dl), #1, [rl] 第20A圖繪示reglist狀態之集合,辨識暫存器 與D1 280。第20B圖接著繪示這些暫存器如何劃分i 小(即16位元)資料元件之s t向量。 相對於與第1 9.A至1 9 C圖之範例,此指令指定-參數,辨識所存取之結構數目,於此範例η為丨。因 於此載入指令,η X st (即1 X 2 )資料元件需由記惰 於有效位址開始讀取,且接著以循環(r o u n d - r 〇 b i η ) 分配至向量,由第一向量之最低指數元件開始。此過 示於第20C圖,且使得第一構件3 14之資料元件X。 存器D 0之最低16位元,而第二構件之資料元件y。 存器D 1之最低1 6位元。根據此具體實施例,未寫入 器狀態任何部分,一旦載入所有資料元件,乃設定為 注意對於同等儲存指令,η X st資料元件乃以相反於 式儲存。 第2 1A至2 1 C圖繪示另一特定範例,其中延伸 語法,以允許指定兩種資料類型,亦即所存取之資料 資料類型,以及載入至暫存器,或儲存至記憶體之結 元件之資料類型。因此,第2 1 A至2 1 C圖繪示由指 行之操作 所執行 D0 270 k dt大 -Γ η」 此,對 體中, 分酉己, 程乃繪 寫入暫 寫入暫 之暫存 零。需 載入方 指令之 元件之 果資料 令所執 32 1315034 VLD 2.32.S16 {DO, Dl, D2, D3}, [rl] D0 : » St 器 且 邏 部 的 之 之 上 憶 結 内 以 料 如第2 1 A圖所示’收集r e g 1 i s t狀態,辨識暫存器 270、D1 280、D2 290 與 D3 300。接著,如第 21B 圖所 # 此暫存器狀態劃分為dt大小(即32位元)資料元件之 向量(即2 ),因此,此指令指定當資料元件儲存於暫存 内時,其長度將為3 2位元。 指令亦指定,記憶體中之資料元件長度為1 6位元, 因此一旦資料元件由記憶體3 1 0存取,其將通過一些轉換 輯 340 (其選擇性地可併入成為重新排序邏輯24之一 份),其接著用於延伸每個 16位元資料元件,以形成新 3 2位元資料元件3 42。解交錯配置這些資料元件,使得第 構件之資料元件,乃儲存於暫存器D 0與D 1,而第二構件 資料元件,乃儲存於暫存器D2與D3。 第2 2 A至2 2 C圖繪示進一步範例,且尤其繪示指令 操作。 VLD2.16 {D0[2], Dl[2]}, [rl] 雖然此指令可與先前指令共用相同語法,此指令概念 為不同類型指令,其並非由以結構陣列儲存資料元件之記 體一連續區塊,載入資料元件,此載入指令僅載入單一 構。此外,載入之單一結構資料元件,可置於指定暫存器 任何選擇之處理徑。因此,當考慮6 4位元寬度暫存器, 及1 6位元資料元件,具有四種可能之處理徑,可放置資 33 1315034 元件。於較佳具體實施例,對於特定指令所選擇之徑,於 regli st資料内,藉由辨識特定徑指示。 考慮第2 2 A圖,可知當收集r e g 1 i s t狀態時,此辨識暫 存器DO之徑2 320,以及暫存器D1之徑2 325。如第22B 圖所示,接著這些乃劃分為d t大小(即1 6位元)資料元件 之st向量(即2 )。隨後,如第22C圖所示,一旦由記憶體 3 1 0存取結構3 1 2,重新排序邏輯24安排為導引資料元件 x〇至D0暫存器33 0之徑2,同時導引資料元件y。至D1暫 存器3 3 5之徑2。於此範例,將暸解徑可辨識之範圍由0至
對於有興趣之讀者,下列表格辨識可提供於一特定具體 實施例中,各種類型之載入與儲存指令: 符號 資料類型 操作元格式 說明 VLD1 .8 .16 .32 .64 VLD1 .8 <list>, <addr> 載入多個元件 <list> := {〇η} |{ Dn, Dn+1 } |{ Dn, Dn+i , Dn+2 } I { Dnj Dn+1 5 Dn+2, Dn+3 } <list>, #UIMM, <addr> 載入多個元件與零
34 1315034 16 UIMM_lreg = (l)..(a-l) .32 <list> := UIMM_2reg = (a+l)..(b-l) {〇n} 其中 |{ Dn,Dn+i } a = (64/size<dt>) b = (128/size<dt>) VLD1 .8 Dd[x], <addr> 載入單一元件
• 16 •32 VSTl .8 <list>, <addr> 儲存多個元件 .16 .32 <list> := .64 |{Dn} |{ Dn, Dn+t } |{ Dn, Dn+i , Dn+2 } | { Dn, Dn+i 5 Dn+2, Dn+3 } VSTl .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>) VSTl .8 Dd[x], <addr> 儲存單一元件
35 .32 .16 1315034 VSTl 範例 VLD1.16 DO, [Rl] VLD1.8 {D0,D1},[R2]! VLD1.8 Q2, #10, [R2], R7 VLD1.16 D20[3], [R8], RI VST1.32 {D8, D9, DIO, Dll}, [RO] VST1.32 Q7, #3, [RIO] VSTl.8 D30[0], [RO], R14 表格 2 符號 資料類型 操作元格式 說明 VLD2 .8 <list>, <addr> 載入多個2元件結構 .16 .32 <list> :=
{ Dn,Dn+i } 丨{ Dn,Dn+2 } |{ Dn,Dn+i,Dn+2,Dn+3 } VLD2 .8 <list>5 #1, <addr> 載入多個2元件結構與零 36 .16 1315034 .32 <list> := { Dn,Dn+i } I { Dn,Dn+2 } VLD2 .8 <list>,<addr> 載入單一 2元件結構 .16 其中 •32 <list> := 列出無法取得之{Dn[x], Dn+2[x] } {Dn[x], Dn+i[x] } 當 dt = 8 |{Dn[x],Dn+2[x]} VST2 .8 <list>, <addr> 儲存多個2元件結構 .16 .32 <list> := { Dn, Dn+I } 1 { 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+i[x] } 37 1315034 |{Dn[x],Dn+2[x]} 範例 VLD2.16 {DO, D1},[RI] VLD2.32 {D2, D3,D4, D5), [R3]! VLD2.8 {DO, Dl),#l, [R1],R7 VLD2.16 {D2[1],D4[1]1,[R6] VST2.8 {D20, D21), [R0] VST2.32 {D20[0], D21[0]}, [R5],R6
表格3 符號 資料類型 操作元格式 說明 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+i,Dn+2 } | { Dn,Dn+2,Dn+4 }
38 1315034 VLD3 .8 <list>, <addr> 載入單一 3元件結構 .16 其中 .32 <list> := 列出無法取得之{Dn[x], Dn+2[x], Dn+4[x]} 當 dt = 8 {Dn[x], Dn+i[x], Dn+2[x]} |{Dn[x], Dn+2[x], Dn+4[x]} VST3 .8 <list>, <addr> 儲存多個3元件結構 • 16 •32 <list> := {Dn[x], Dn+i[x], Dn+2[x]} {Dn[x], Dn+2[x], Dn+4[x]} VST3 .8 <list>, <addr> 儲存單一 3元件結構 .16 其中 •32 <list> := 列出無法取得之{Dn[x], Dn+2[X],Dn+4[X]} 當 dt = 8 {Dn[x], Dn+l[x], Dn+2[x]} |{Dn[x], Dn+2[x], Dn+4[x]} 範例 VLD3.8 {DO, D1,D2}, [Rl]! VLD3.16 {D2, D3,D4},#1, [R3],R4 39 1315034 VLD3.16 {D2[l], D3[l], D4[l]}, [R3], R4 VST3.32 {D20, D22, D24}, [R7] VST3.8 {D0[0], D1[0], D2[0]}, [RIO], R14 表格 4 符號 資料類 型操作元格式 說明 1 VLD4 .8 <list>, <addr> 載入多個4元件結構 • 16 .32 <list> := { Dns Dn+l , Dn+2 ? 〇n+3 j | { Dn, Dn+2 » Dn+4 s Dn+6 } VLD4 .8 <list>,#1,<addr> 載入單一 4元件結構與零 • 16 4 •32 <list> := { 〇n? Dn+i , Dn+2 5 〇n+3」 丨{ Dn,Dn+2,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 40 1315034 {Dn[x], Dn+i[x], Dn+2[X],Dn+3[X]} {Dn[x], Dn+2[x], Dn+4[x], Dn+6[x]} VST4 .8 <list>,<addr> 儲存多個4元件結構 1 .16 • •32 <list> := { Dn,Dn+i,Dn+2,Dn+3 } • | { Dn, Dn+2 j 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+i[x], Dn+2[x], Dn+3[x]} Μ {Dn[x], Dn+2[x], 1 Dn+4[X], Dn+6[X]} 範例 VLD4.8 {D0,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] 41 1315034 VST4.8 {D2〇[5],D21[5], D22[5], D23[5]},[R1], R4 表格5 於—具體實施例’第1圖之重新排序邏輯24使用第23 圖所 於其 單元 或於 之資 邏輯 355 之輸 器可 過交 3 80 器, 快取 藉由 器, 工器 續'示之形式。第23圖之邏輯包含兩個多工器35〇、355 輸入’其於載入指令時,乃安排為接收來自與載入儲存 22連結之載入先入先出23之資料,如第1圖所繪示, 儲存指令時’安排為接收來自SIMD暫存器儲存庫20 料。此外’於一些情況,載入指令可能使得第23圖之 ’接收來自SIMD暫存器儲存庫2〇之資料。多工器35〇、 陰制為於不同輸入間選擇,並發送所選擇之輸入至連接 入暫存器360、365。於一具體實施例,每個輸入暫存 儲存64位元資料。儲存於輸入暫存器之資料,接著透 錯式(crossbar)多工器 ’交錯式控制暫存器370 以導引由輸入暫存器接收 内所希望之位元組位置。 指令解碼器取得。 375’讀取至暫存器快取(以仏… 提供驅動信號至交錯式多工 之個别資料位元組,至暫存器 控制暫存器370内之數值,乃 沢取冗〇可視為包含四低 、具體實施例,每個暫存器長度為64位元 當資料儲存於暫存器快* 385,讀取至與載入儲存單- 者可透過輔 储存早70 22連接之儲存資祠 42 1315034 先出23 (於儲存指令時),或至SIMD暫 載入指令時)。 位元組交錯式多工器375,可以位 輸入暫存盗’且以位元組顆粒度寫入至暫存 器3 8 5以6 4位疋顆粒度由暫存器快取讀 與其他SIMD處理邏輯18相較,重新4 為自主的’但於程式順$,乃與積體電路内 相同方式給予指令。於-具體實施例,其具 讀取埠’ U及控制自身之兩個寫入埠。為偵 重新排序邏輯24可安排為與一些交互鎖定 輯(未1Μ示)’使用計分板溝通。 相對於其他S 1M D指彳,以& ^ < 暫存器檔t 20之儲存指令,但相對於來自 案之其他儲存指令,仍為依照順序的。搁s 存維持於佇列(queue ),且當儲存資料準備 新排序邏輯24,讀取並進入與載入儲存單元 先入先出 23’ 。 於一具體實施例’記憶體與SIM D暫存 所有資料處理’乃透過重新排序邏輯24發 一具體實施例’對於決定不需重新排序之情 排序邏輯24附近之旁路(bypass)。 暫存器快取3 80稱為「快取」,乃因於 子器檔案2 0 (於 元組顆粒度讀取 器快取,寫入多 SL 〇 :序邏輯24主要 其他功能單元以 兩個暫存器檔案 測與避免危險, (interlock)邏 執行來自S I M D SIMD暫存器檔 t (Pending)儲 好時’其透過重 :* 2 2連接之儲存 器檔案20間之 送。然而,於另 況,可提供重新 某些情況下,於 43 1315034 ’其快取暫存器數值。暫存 新排序邏輯24輸出之格式。 序邏輯24之操作,當執行 之指令時,以實施所需之重 其寫入SIMD暫存器檔案20前 器快取乃將資料維持為資料由重 第24A至24C圖纷示重新相 心心州叫叫叫類型 新排序。 第^圖所示),64&_ 人,按者於第―週期(如 疋之掏取資料,乃透過多工器350載 入至輸入暫存器36〇, ^ 下64位元乃透過多工器3 5 5, 載入至輸入暫存器3 6 5。於第24A至24c圖所繪示之範例, 假設結構格式表示具有構件x、y、z之三維向量。於下—週 期’如第24B圖所示,輸入暫存器内之…立元資料元件, 乃透過重新排序資料之位元組交錯式多工器375,讀取至暫 存器快取380,使得關於χ構件之任何資料元件,置於第— 暫存器’關力y構件之任何資料元件’置於第二暫存器,且 ^ z構件之任何資料元件’置於暫存器快取之第三暫存 器。亦於此週期令,來自載入先入先出23之下一 64位元資 料’透過多工器350載入至輸入暫存器360。 於下一週期,如第24C圖所示,來自輸入暫存器36〇之 資料元件,透過位元組交錯式多工器,發送至暫存器快取, X y、Z構件乃解交錯配置,如先前所述。如第24C圖所示, 此使得暫存器快取中,於第一暫存器含有四個χ構件,於第 二暫存器含有四個y構件,且於第三暫存器含有四個ζ構 44 1315034 件 兩- 範 執 D1 徑 徑 暫 僅 週 過 器 過 置 存 暫 過 於 結 由 。暫存器快取之内容’接著可透過寫入多工器…,每次 値暫存器,輸出至載入指令所指定之暫存器。 第25 A-25D ®繪示,通過重新排序邏輯之資料流向第二 當執行指令VLD3.16{D〇⑴,⑴⑴,〇2[⑴,⑴]時^ ί丁所需之重新排序。根據此指令’資料將裁入暫存器训、 與D 2之一特定徑,即這此暫存 节仔盎内之兩個16位元寬度 ’以及四個1 ό位元寬度徑。在資料 你貝村可儲存於暫存器特定 前’需擷取暫存器目前内容,使得當隨後寫入暫存器時, 存器之内容以整體方式寫人。此特徵避免需提供任何寫入 至SIMD暫存器檔案20内之部份暫存器。因此,於第一 期,如第25A圖所示,暫存器D〇與⑴之目前内容,透 多工器35〇、355’由SIMD暫存器樓案,讀取至輪入暫存 360、365。於下一週期,如第25B圖所示,這些内容透 父錯式多工器375’讀取至暫存器快取38〇, d〇之内容放 於暫存器快取之第一暫存器,且D…容放置於第二暫 器。於相同週期’透過多工器35〇, & simd暫存器擷取 存器D2之内容,並儲存於輪入暫存器36〇。 於下一週期,如第25C圖所示,暫存器D2之内容’透 交錯式多工器375,讀取至暫存器快*則,使得其儲存 暫存β供取之第一暫存器。於相同週#,載入對象之資料 構其通常已由載入儲存單元所搁取,透過多工器⑽, 載入先入先出 23讀取 取至輸入暫存器360。於第25C圖所 45 1315034 纷示之範例, 料,具有椹 人將°己憶體中之結構視為表示三維向量資 、巧谭件χ 厂Ζ構件透/ 7 ' Ζ。於下—週期’如第加圖所示,χ、 使得資料_ ° 乂錯式多工盗375 ’讀取至資料元件之第二徑, 前内容,::Χΰ覆蓋暫存器快取内,暫存器D°之第二徑先 件y〇覆蓋暫存器快取內, 徑之資料元件,… 暫存器D1第二 器D2第二徑之資料元件。 “於暫存
將可,解於此時,SIMD暫存器樓案内之暫存器D〇、m 與D2中貫際内容並未改變H儲存於暫存器快取之資 料見在可透過寫人多^ 385,胃D0H D 2,以$蓋先前内容。結果,單—載人指令可用於由記憶體 載入特定結構之構件,且接著交錯配置此結構之個別構件, 至不同暫存器之選定徑位置。 第25E至25H圖乃繪示,通過重新排序邏輯之資料流向 第三範例,使得執行互補之儲存指令,以載入先前討論之指 令時’參考第24A至25D圖,執行所需之重新排序。因此, 第25E至25H圖繪示當執行指令VST 3.16 {D〇[l],Dl[l], D2[l]},[rl]時’執行所需重新排序之步驟。因此,根據此指 令’資料將由暫存器D0、D1與D2之第二16位元寬度儲存 回記憶體。如第25E圖所示,於第一週期,暫存器do與D1 之目前内容,透過多工器35〇、3 5 5,由SIMD暫存器檔案讀 取至輸入暫存器360、365。於下一週期,如第25F圖所示, 46 1315034 於第二徑之資料元件,即,x0與y〇數值,透過交錯式多工 器375,讀取至暫存器快取380之第一暫存器。於相同週期, 暫存器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 (見第26A圖)。於下一週期,其透過交錯式多工器375’ 讀取至暫存器快取3 8 0,使得X、y與z構件置於暫存器快取 47 1315034 之不同暫存器。第一指令内之「#1」,表示每個資料元件, 需置於每個暫存器之最低有效(least significant)資料徑, 且其餘徑需以邏輯0數值填入,此乃示於第26B圖。亦於此 週期,由第二載入指令所辨識之資料元件,乃擷取至輸入暫 存器360。於下一週期(見第26C圖),儲存於輸入暫存器 360之資料元件,透過交錯式多工器375,移動至暫存器快 取380,於此其儲存於第二徑。亦於此週期,第三載入指令 之資料元件,置於輸入暫存器360内。 於下一週期,輸入暫存器360之内容,透過交錯式多工 器3 7 5,發送至暫存器快取之第三徑,同時第四載入指令對 象之資料元件,擷取至輸入暫存器360。此示於第26D圖。 最後,如第2 6 E圖所示,於下一週期,這些資料元件透 過交錯式多工器375,發送至暫存器快取380,於此其儲存 於第四徑。之後,暫存器快取之每個暫存器中,64位元寬度 部分資料,可輸出至SIMD暫存器檔案之指定暫存器。 需注意與第25 A至25D圖之方式相較,使用關於第26A 至26E圖所繪示之第一 VLD指令,從而一旦資料元件置於 一特定徑時,其餘徑乃以〇數值填入’於進行任何更新前, 避免需由SIMD暫存器檔案,擷取任何暫存器D0至D2中之 目前内容。重新檢視第2 6 A至2 6 E圖’可知於此範例之暫存 器快取3 8 0,做為一「寫入通過快取(write through cache )」, 因其快取載入指令序列之資料元件,且當完成每個指令時’ 48 1315034 寫入資料至SIMD暫存n秘在Λ匕 存1^檔案之相關暫存器。然@,當執扞 序列中之每個相鄰指令睥 時通常不需讀取暫存器檔案。 於資料處理,通常茲土狄 ^ *要藉由於所有元件間,使用交換 (C〇_Utative)與組合、 _ 」锢作子「〇 P」,減少 所謂的元件向量至單—元件。此 將以折疊(folding)操作描 述。折疊操作之典型範例為總和一 董之70件,或找尋向量 内元件之最大值。 於平行處理架構,一種已知用於執行此一折疊操作之方 φ 法’乃於第27圖描述。欲折疊之資料元件[〇]至[3]乃位於暫 存器rl。將瞭解平行處理架構之優點為,其可於多個資料元 件,同時執行相同操作。可參考所謂處理平行徑,以更清楚 瞭解此概心。於此範例,每個處理平行徑含有資料元件[〇] 至[3]其中之一。 首先於步驟A,發出第一指令,使得資料元件循環兩 個位置,於暫存器r2 %成循環之資料元件。此步驟將不同 資料元件置於每個處理徑,使得步顿B可使用s【難操作。φ 隨後於步驟B,發出第二指令,於每個徑之資料元件 執行SiMD操作。於此範例,這些多個平行操作產生之資料一 元件’乃儲存於暫存器r3。因此,可知暫存器^現在含有· 暫存器Γΐ彳資料元件之組合(即’暫存器r3含有:[〇] op [2]; [1] 〇P [3]; [2] 0p [〇];及[3] 〇p [⑴。 接著,發出第三指令,使得儲存於暫存器r3之結果, 49 1315034 於步驟C由一處理平行徑所循環,並儲存於暫存器r4。再 次,儲存於暫存器r3之資料元件相對於暫存器r4之循環, 使得不同資料元件位於相同處理平行徑。 最後,於步驟D,發出第四指令,而進一步於每個徑所 儲存之資料元件,執行SIMD操作,且結果乃儲存於暫存器 r5 ° 因此,可知僅藉由使用四個指令,可組合暫存器之所有 資料元件,且結果乃儲存於暫存器r5之每個攔位(entry ) (即,於暫存器r5之每個欄位包含:[0] op [1] op [2] op [3 ])。產生之資料元件,可由暫存器r 5四個攔位任何其中之 一,依所需讀取。 第2 8圖繪示一具體實施例之折疊指令原理。與常見之 處理平行徑安排不同(其於第2 7圖描述),每個處理平行徑 於整個徑具有一固定寬度,其與一個資料元件寬度相等,於 此具體實施例,處理平行徑之安排不同。於此新安排,每個 處理平行徑於其輸入之寬度,與至少兩個來源資料元件之寬 度相等,且其輸出通常等於一個所產生資料元件之寬度。已 知以此方式安排處理平行徑,較習知技藝之安排,具有顯著 優點,因單一暫存器内之資料元件組(例如資料元件對)’ 可為平行處理操作之對象。由下述亦可知’此免除習知技藝 安排需執行之資料操作操作(即’循環操作)’因無須安排 資料元件於進一步暫存器之正確欄位位置,以使多個操作得 50 1315034 以平行產生。 因此,來源資料元件d [ 0 ]至d [ 3 ]乃於暫存器之個別攔 位提供。相鄰來源資料元件d [ 0 ]與d [ 1 ]可視為一對來源資 料元件。來源資料元件d[2]與d [3]亦可視為一對來源資料 元件。因此,於此範例,具有兩對來源資料元件。 於步驟(A ),於暫存器内之每對來源資料元件,乃執行 一操作,以產生一結果資料元件,且於每個相鄰來源資料元 件對產生相同操作。 因此,將瞭解來源資料元件對,以及對應之結果資料元 件,皆位於平行處理之相同徑。可知於步驟(A )後,結果 資料元件之數目,為來源資料元件數目之一半。資料元件d [ 2 ] op d[3]與d[0] op d[l]亦可視為一來源資料元件對。 於步驟(B ),於一來源資料元件對,執行進一步之一相 同操作,以產生一結果資料元件d[0] op d[l] op d[2] op d [ 3 ]。可知於步驟(B )後,結果資料元件之數目,亦為來 源資料元件數目之一半。如上所述,操作為交換與組合操 作,故產生相同結果資料元件,與來源資料元件組合之正確 順序無關。 因此,可知於每個操作結果後,來源資料元件之數目可 變為一半,且可於這些來源資料元件執行相同操作,以產生 所需結果。因此,可知僅於兩個操作,便可產生所需之結果 資料元件,而第2 7圖之習知技藝安排需執行至少四個操作。 51 1315034 將可瞭解此改進,乃透過於一來源暫存器内之資料元件群, 執行平行處理操作,而得以有效率地達成。雖然為清晰緣 故,僅繪示兩對來源資料元件,將瞭解任何數目之來源資料 元件對可為操作之對象。此外,雖然為清晰緣故,僅繪示來 源資料元件對之操作,將瞭解任何數目之來源資料元件對 (例如三個、四個或更多)可為操作之對象。 實際上,為效率緣故,折疊操作乃安排為,於最少數目 之資料元件執行平行操作,由暫存器資料檔案2 0内,所支 援之最小暫存器大小所決定。第29圖繪示一實施方式,其 產生與來源資料元件數目相同之結果資料元件。 來源資料元件d[0]至 d[3]提供於暫存器Dn。為產生相 同數目之結果資料元件,來源資料元件d [ 0 ]至 d [ 3 ]亦提供 於暫存器Dm。將瞭解暫存器Dn與Dm可為相同暫存器,SIMD 處理邏輯1 8由暫存器D n讀取每個來源資料元件兩次,以產 生相同之結果資料元件。 於步驟(A )發出一個SIMD指令,每對來源資料元件 具有一操作於其上執行,並產生一對應之結果資料元件。 於步驟(B ),發出另一 SIMD指令,使得每對來源資料 元件具有一操作於其上執行,以產生一對應之結果資料元 件。 因此,可知已結合所有來源資料元件,以產生結果資料 元件。 52 1315034 第3 0 a至3 0d圖繪示各種折疊指令之操作,其採用與說 明書中其他部分所敘述之相同語法。將瞭解於表示具有兩個 來源暫存器之情形,此二者可為相同暫存器。此外,將可瞭 解每個來源暫存器,可指定作為目標暫存器,以減少所利用 之暫存器空間數量。
第3 0a圖繪示一 SIMD折疊指令操作,藉此,來自相同 暫存器之來源資料元件對,以「η」位元表示,於其上執行 一操作,以產生結果資料元件,以 2η位元表示。提升 (Promoting )結果資料元件至具有 2n位元,可減少溢位 (overflow )發生之可能性。當提升結果資料元件時,其通 常為有號延伸,或以0’ s填充(padded )。下列範例總結支 援此類操作之折疊指令: 符號 資料類型 操作元格式 說明 VSUM .S16.S8 Dd, Dm (加入並提升相鄰
元件對) • S32.S16 Qd, Qrn .S64.S32 .U16.U8 .U32.U16 .U64.U32 53 1315034 於第30a圖所示之特定範例(VSUM.S32.S16 Dd, Dm), 含有四個1 6位元資料元件之一 64位元暫存器Dm,乃折疊 並儲存於,含有兩個3 2位元結果資料元件之一 6 4位元暫存 器D d。 第3 0b圖繪示一 SIMD折疊指令操作,藉此,來自不同 暫存器之來源資料元件對,以「η」位元表示,於其上執行 一操作^ 1以產生結 果資料元件, 亦以「η」位元表示。下列 範例總結支援此一 操作之最大與最小指令。 • 符號 資料類型 操作元格式 說明 VSUM 18 Dd, Dn, Dm (加入相鄰元件對) .116 .132 .F32 符號 資料類型 操作元格式 說明 • VFMX S8 Dd, Dn, Dm (利用相鄰元件對最大值) •S16 .S32 •U8 .U16 •U32 54 1315034 •F32 符號 資料類型 操作元格式 說明 VFMN •S8 Dd, Dn, Dm (利用相鄰元件對最小值) .S16 •t .S32 •U8 .U16 •U32 .F32 於第30B圖所示之特定範例(VSUM.I16 Dd, Dn,Dm), 兩個64位元暫存器Dm、Dn,每個含有四個16位元資料元 件,乃折疊並儲存於,含有四個1 6位元結果資料元件之一 64位元暫存器Dd。
第3 0 c圖繪示一 SIM D折疊指令之操作,藉此,來自相 同暫存器之來源資料元件對,以「η」位元表示,於其上執 行一操作,以產生結果資料元件,亦以「η」位元表示。於 第3 0 c圖所示之特定範例,含有八個1 6位元資料元件之一 128位元暫存器Qm,乃折疊並儲存於,含有四個16位元結 果資料元件之一 64位元暫存器Dd。 第3 0d圖繪示與第30b圖相似之一 SIMD折疊指令操 55 1315034 作,但其中 D m = Dn,而於目標暫存器複製結果資料數值。 來自相同暫存器之來源資料元件,以「η」位元表示,於其 上執行一操作,以產生結果資料元件,亦以「η」位元表示, 每個乃於暫存器之另一欄位中複製。於第30d圖所示之特定 範例,含有四個1 6位元資料元件之一 6 4位元暫存器D m, 乃折疊並儲存於,含有兩組兩個1 6位元結果資料元件之一 64位元暫存器Dd。
第3 1圖圖表式地繪示SIM D折疊邏輯範例,其可支援 折疊指令,且其提供作為SIMD處理邏輯1 8之一部分。為 清晰緣故,所示之邏輯用以支援其選擇每個相鄰資料元件對 最大值之指令。然而,將瞭解邏輯可容易地設計為提供其他 操作之支援,將於下詳述。 邏輯由暫存器 Dm,接收來源資料元件((Dm [0]至 Dm [3],選擇性地一同接收,來自暫存器Dn之來源資料元件 (Dn[0]至Dn[3])。或者,邏輯接收來自暫存器Qm之來源 資料元件(Qm[0]至Qm[7])。每一相鄰來源資料元件對, 乃提供至連接之一折疊操作邏輯單元4 0 0。每個折疊操作邏 輯單元4 0 0具有一算術單元4 1 0,其對於來源資料元件彼此 間進行相減,並透過路徑4 1 5,提供何者較大之指示至多工 器420。根據透過路徑415之指示,多工器由操作邏輯單元 400輸出較大之來源資料元件數值。因此,可知每個折疊操 作邏輯單元4 0 0,安排為分別透過個別路徑4 2 5、4 3 5、4 4 5、 56 1315034 455’輸出連接相 鄰資料元件對之最大值 選擇與分配 431至434,提供 暫存器資料檔案 々。現在將描述 邏輯450接收結果資料元件,並透過路徑 所要求之這些結果資料元件,以儲存於simd 2〇内之暫存器Dd攔位内,以支援上述指 選擇與分配邏輯450之操作。 圖所繪示之指令,來源資料元件D m [ 〇 ]至 m[3]乃提供至下方兩個折疊操作邏輯單元400。折疊操作 邏輯单疋彻透過路徑425與43 5輸出資料元件。路徑431 與32將以有號延伸,或零延伸格式提供Dm[0] op Dm[l], 同時路徑433與434’將以有號延伸或零延伸格式提供心[2] 〇P Dm[3]。此藉由SIMD解碼器16回應折疊指令,產生使 多工器470選擇其B輸入’多工器46〇選擇有號延伸或零延 伸多工器490選擇其E輸入,且多工器48〇選擇其d輸入 之信號而達成。 為支援第30b圖所繪示之指令,來源資料元件Dm [〇]至 Dm[3] ’乃提供至下方兩個折疊操作邏輯單元4〇〇,同時來 源資料元件Dn[0]至Dn[3] ’乃提供至上方兩個折疊操作邏 輯單元400。折疊操作邏輯單元4〇〇透過路徑425、435、445 與455輸出資料元件。路徑431將提供Dm[0] op Dm[l],路 徑432將提供Dm[2] op Dm[3],路徑433將提供Dn[0] op Dn[l],且路徑434將提供Dn[2]〇pDn[3]。此藉由SIMD解 碼器16回應折疊指令’產生使多工器470選擇其A輸入, 57 1315034 多工益480選擇其C輪入 且少工|| 490選擇其E輸入之信 號而達成。 為支援第30c圖所繪矛 卞之心7,來源資料元件q m [ 〇 ]至
Qm[7],乃提供至折疊操作 TF邏輯单疋400。折疊操作邏輯單 元400透過路徑425、435、也 44 5與455輸出資料元件。路徑 43 1 將提供 Qm[〇] 0p 〇mni ,. Y L P 路牷 432 將提供 Qm[2] 〇p
Qm[3] ’路控43 3將提供Qm[4] 〇p Qm[5],且路徑⑽將提 供Qm[6] op Qm[7]。此藉由SIMD解碼器:6回應折疊指令, 產生使多工器470選擇其A輸入,多工器48〇選擇其c輸入, 且多工器49〇選擇其E輸入之信號而達成。 為支援第30d圖所繪示之指令,來源資料元件Dm[〇]至
Dm[3] ’乃提供至下方兩個折疊操作邏輯單元4〇〇。折疊操 作邏輯單元400透過路徑425與435輸出資料元件。路徑431 將提供Dm[0] op Dm⑴,路徑432將提供Dm[2] 〇p Dm[3], 路徑433將提供Dm[0] op Dm⑴,且路徑434將提供心⑴ 〇P Dm[3]。此藉由SIMD解碼器16回應折疊指令,產生使 多工器470選擇其A輸入,多工器48〇選擇其D輸入,且 多工器490選擇其F輸入之信號而達成β或者,將瞭解來源 資料元件’亦可提供至上方兩個折疊操作邏輯單元4〇〇,且 可執行如第30b圖所繪示之操作,其將減少選擇與分配邏輯 4 5 0之複雜度。 因此,可知此邏輯使得結果資料元件於單一操作中,直 58 1315034 接由兩個相鄰來源資料元件產生。 如上所述,折疊操作邏輯單元4 0 0,可安排為於來源資 料元件執行任何數目之操作。例如,可容易地提供另一邏 輯,以選擇性地使多工器4 2 0透過路徑4 2 5,提供最小量之 來源資料元件。或者,計算單元4 1 0可安排為選擇相加、相 減、比較或相乘來源資料元件,並輸出結果資料元件。因此, 將瞭解本具體實施例之方式,使用此安排,於可執行之折疊 操作範圍,有利地提供較多彈性。 此外,將瞭解雖然第3 1圖所描述之邏輯支援1 6位元操 作,可提供相似邏輯以支援3 2或8位元操作,或任何其他 大小。 第3 2圖繪示向量乘以純量之SIM D指令操作。S IM D指 令採用說明書其他部分所述之相同語法。將瞭解,如前所 述,當表示具有兩個來源暫存器時,此二者可為相同暫存 器。此外,每個來源暫存器可指定為目標暫存器,以減少所 利用之暫存器空間數量,並得以有效率的重新循環資料元 件。 暫存器Dm儲存一些資料元件Dm[0]至Dm[3]。每個這 些資料元件,乃表示一可選擇純量操作元。向量乘以純量 SIMD指令,乃指定其中一資料元件做為純量操作元,並使 用此純量操作元,於另一暫存器D n之所有資料元件’平行 執行一操作,其結果乃儲存於一對應暫存器Dd之欄位。將 59 1315034 瞭解儲存於暫存器Dm、Dn與Dd之資料元件,皆可具不同大 小。尤其,結果資料元件可相對於來源資料元件提升。提升 可包含零填充或有號延伸,以將一種資料類型轉換成另一類 型。此具有保證不會發生溢位之額外優點。
可選擇SIMD操作之一純量操作元,對於含有資料元件 矩陣之情況尤其有效率。不同純量操作元,可寫入至 SIM D 暫存器檔案2 0,且接著可立即選擇做為不同向量乘以純量操 作,無須重新寫入資料元件,或四處移動資料元件。下列範 例相乘指令支援此一操作: 乘以純量 符號 資料類型 操作元格式 說明 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) 符號 資料類型 操作元格式 說明 60 1315034 (Vd[i] = Vd[i] + (Vn[i] * Vm[x]))
VMLA .116 Dd, Dn, Dm[x] .132 Qd, Qn, Dm[x] .F32 •S32.S16 Qd, Dn, Dm[x] .S64.S32 .U32.U16 .U64.U32 純量相乘相減(Multiply Subtract by Scalar ) 符號 資料類型 操作元格式 VMLS .116 Dd, Dn, Dm[x] .132 Qd, Qn, Dm[x] .F32 .S32.S16 Qd, Dn, Dm[x] .S64.S32 •U32.U16 .U64.U32 說明 (Vd[i] = Vd[i] _(Vn[i] * Vm[x]))
Vd、Vn與Vm描述由所選擇暫存器格式,以及所選擇 資料類型所建構之元件向量。此向量内之元件選擇作為陣列 符號。例如,Vd[0]選擇向量Vd中最下方之元件。 一註標(iterator) i乃用於允許向量定義;語法乃對於 61 1315034 所有i值均成立,其中i小於向量内之元件數目。此指令定 義提供「資料類型」與「操作元格式」行;藉由從每一行取 出一個而建構有效指令。
第33圖繪示純量操作元H0至H3 1,於SIMD暫存器檔 案2 0内之安排。如說明書別處所述,用於指令領域,以指 定SIMD暫存器檔案20内,資料元件位置之較佳位元數目 為5位元。此得以指定3 2個之可能位置。可瞭解,將純量 操作元映射於SIMD暫存器檔案20之一種可能方式,乃是 將每個操作元置於個暫存器D 0至D 1之第一攔位。然而, SIMD暫存器檔案2 0反而安排為,映射或混疊所選擇之純量 操作元,至SIMD暫存器檔案20之第一 32個邏輯欄位。以 此方式映射純量操作元,乃提供顯著優點。首先,藉由定位 於鄰近攔位之純量操作元,使得用於儲存純量操作元之D暫 存器數目最小化,而可使用於儲存其他資料元件之D暫存器 數目最大化。藉由具有儲存於鄰近攔位之純量操作元,而得 以存取一向量内之所有純量操作元,當執行矩陣或過渡 (f i 11 e r )操作時,此將為有利地。例如,一矩陣乘以向量之 相乘,對於每個由向量選擇之純量,需執行一向量乘以純量 之操作。此外,以此方式,由至少一些暫存器中,儲存可選 擇純量操作元,所有純量操作元可由這些暫存器中選擇。 第3 4圖圖表式地繪示,安排為執行一向量乘以純量操 作之邏輯之一具體實施例。 62 1315034 來源資料元件(Dm [0]至Dm[3])由暫存器Dm提供。 每個來源資料元件,乃提供至純量選擇邏輯5 1 0,其包含一 些多工器5 00。每個來源資料元件,乃提供至每個多工器5 00 之一個輸入(即每個多工器接收來源資料元件 Dm [0]至 D m [ 3 ]。因此,可知每個多工器可輸出任一來源資料元件D m [0]至Dm [3]。於此具體實施例,每個多工器安排為輸出相同 來源資料元件。因此,純量選擇邏輯5 1 0可安排為選擇與輸 出一純量操作元。此藉由SIMD解碼器1 6,回應向量乘以純 量操作,產生之信號而達成,使得多工器輸出其中一來源資 料元件Dm [0]至Dm[3],作為選擇之純量操作元。 向量乘以純量操作邏輯 5 2 0,乃接收選擇之純量操作 元,且亦接收由暫存器Dn所提供之來源資料元件Dn [0]至 D n [ 3 ]。每個來源資料元件,乃提供至向量乘以純量操作邏 輯5 20,其包含一些操作單元5 3 0。每個來源資料元件,乃 提供至其中一操作單元5 3 0 (即,每個操作單元接收其中一 來源資料元件 Dm [0]至 Dm[3],以及所選擇之純量操作 元)。向量乘以純量操作邏輯5 2 0於兩個資料元件執行一操 作,並輸出一結果資料元件,以儲存於SIMD暫存器資料檔 案2 0内暫存器之個別攔位,以支援上述指令。此藉由SIM D 解碼器1 6,回應向量乘以純量指令,產生之信號達成’使得 操作單元5 3 0於所接收之資料元件,執行所需操作。 因此,可知此邏輯,使得來源暫存器之其中一資料元 63 1315034 件,選擇作為純量操作元,並使用相同純量操作元,於來自 另一暫存器之所有來源資料元件,執行向量乘以純量操作。 第3 5圖顯示於SIM D處理中,處理移位與窄化操作之 一種已知方式。可知需三個個別指令(SHR、SHR與 PACK LO )以執行此操作。於第3 5、3 6與3 8圖,為清晰緣故,中 間值以虛線表示。 第3 6圖顯示根據本發明之右移與窄化操作。本具體實 施例之架構,尤其適合用於處理移位與窄化操作,且可回應 單一指令執行。指令乃以SIMD解碼器1 6内之一指令解碼 器解碼(見第1圖)。於此範例,於暫存器Q η内,位於SIM D 暫存器檔案2 0之資料,乃右移位5位元,且接著其餘資料 循環,且接著右邊16位元,轉移至亦於SIMD暫存器檔案 2 0内之目標暫存器Dd。硬體亦可選擇性地支援循環及/或資 料之飽和(saturation),根據指令而定。通常右移位指令不 需飽和,當處理整數右移位時,通常產生一較小數字。然而, 當右移位與窄化飽和可能為適當時。 飽和乃是可藉由選擇最靠近之可允許數值,用於限制資 料元件於某一範圍之一過程。例如,若兩個無號8位元整數’ 使用8位元暫存器相乘,結果可能溢位。於此情形,所能提 供之最正確之結果為二位元1 1 11 1 1 1 1,且因此,數字將飽和 以給予此一數值。當移位與窄化時,一相似問題可能產生’ 從而使得窄化之數字無法填入較窄空間。於此情形,於使用 64 驟時所摒棄之任何位元不為零 數值。於有號數字情形,問題 高有效位元與所摒棄之任一位 大可允許正數字,或最大可允 件輸入類型與輸出不同時,例 、飽和與無號數值輸出。得以 為非常有用地。例如,於圖素 而,於處理此一數值時,可能 出隨後處理之一無號數值,然 能產生問題,除非提供得以飽 理時,由於些許不正確,亮度 號數值,輸出此負有號數值將 值前,得以將任何負數字飽和 之工具。 格式範例,乃於下方之表格6 向量指令,具有V於前方,接 接近值(immediates)移位情 或L表示。指令接著包含兩種 料元件於目標暫存器之大小, 大小。下一資訊包含目標暫存 著可給予一最接近值,此數值 1315034 無號數字情況下,當於移位步 時,數字將飽和於最大可允許 將更形複雜。於此情形,當最 元不同時,數字不需飽和於最 許負數字。 飽和亦可能發生於資料元 如一有號數值可能移位或窄化 輸出不同資料元件類型之能力 處理,亮度為一無號數值,然 以有號數值處理較適當。需輸 而僅由有號切換為無號數值可 和數值之能力。例如,若於處 值下降至一負數字,僅以一無 無意義。因此,於輸出無號數 至零之能力,乃為一非常有用 對於不同移位指令之可能 與7提供。可知指令指定其為 著以 S Η指定一移位,且於最 形,右邊或左邊方向接著以R 類型,如同表格0,第一為資 且第二為元件於來源暫存器之 器與來源暫存器之名稱,且接 65 1315034 表示於此資料中移位之位元數,且於前方具有#。 般指令格式之修飾詞,Q用以表示操作使用飽和整 且R用以表示操作執行循環。關於指令格式之更多 於前面敘述中提供,例如,於表格0。 表格7顯示移位有號變數之指令。此指令與最 左移位相同,但並非提供具有指令之一最接近值, 提供表示有號變數向量,所儲存之一暫存器位址 形,一負數字表示向右移位。當移位之位元數字儲 時,對於每個資料元件,可儲存不同之有號變數, 個別藉由不同數量移位。此過程乃於第3 9圖詳細| 表格6 由最接近值移位 最接近值移位,乃使用於指令内編碼之一最接 將來源向量之所有元件移位相同量。窄化方式允許 低,其可包含飽和,而延伸方式(Long versions) 何固定點提兩。
提供以累積方式移位,以支援有效率之比例(! 以及許多 D S P演算法中之累積。右移位指令亦提 擇。循環實際上乃藉由加入一半至欲循環之數字 此,當以η位右移位時,乃於移位前加入2n_1至 此,於下列表格,若1 round(n) =2n-1’或若nSO 可使用一 數計算, 細節,乃 接近值之 乃以指令 。於此情 存於向量 使得其可 具示。 近值,以 使數值降 允許以任 icaling ), 供循環選 執行。因 此值。因 ,round(n) 66 1315034
=〇 〇 乃 包裝( 符號 VSHR 包含位元方式(B i t w i s e )擷取指令,以允許有效率地 packing)資料。
資料類型 操作元格式 _S 8 Dd, Dn, #UIMM •S16 Dd,Dn,#UIMM •S32 •S64 .U8 .U16 •U32 •U64 •S8.sl6 Dd, Qn, #UIMM 說明 由最接近值右移 Vd[i]:=Vn[i]»UIMM .S16 .S32 .S32 .S64 •U8.U16 •U16.U32 .U32.U64
由最接近值與窄化右移 Vd [i]:= Vn[i]»UIMM
VRSHR .S 8 Dd,Dn,#UIMM 以循環最接近值右移 67 1315034 • S16
Qd, Qn, #UIMM Vd[i]:= (Vn [i] +round (UIMM))
•S32 »UIMM .S64 •U8 .U16 •U32 .U64
VQSHR .S8.S16 Dd, Qn,#UIMM 以最接近值右移 •S16.S32 並以循環窄化 •S32.S64 Vd[i]:=(Vn[i] + round •U8.U16 .U16.U32 .U32.U64 (UIMM))» UIMM .S8.S16 Dd, Qn, #UIMM 以最接近值飽
和右移與窄化 .S16.S32 Vd[i]:=sat<td> (Vn[i]»UIMM) •S32.S64 •U8.U16 •U16.U32 •U32.U64 .U8.S16 68 1315034 •U16.S32 .U32.S64 VQRSHR .S8.S16 Dd, Qn, #UIMM 以最接近值飽和右移 .S16.S32 且以循環窄化 〜 •S32.S64 Vd[i] := sat<td> ((Vn[i] ^ ,U8 . U16 •U16.U32 •U32.U64 .U8.S16 •U16.S32 •U32. S64 + round (UIMM))» UIMM) • VSRA ,S8 Dd, Dn, #UIMM 由最接近值右移 .S16 Qd, Qn, #UIMM 並累積 .S32 .S64 ,U8 .U16 •U32 •U64 Vd[i] := Vd(i) + (Vn(i) » UIMM) ’ VQSRA .S8 Dd,Dn, #UIMM 以最接近值飽和右移與累積 69 1315034
•SI6 Qd, Qn, #UIMM •S32 Vd(i) := sat<td>(Vd(i) •S64 + (Vn[i] » UIMM)) •U8 •U16 •U32 .U64 VRSRA •S8 Dd, Dn, #UIMM 由最接近值右移 .S16 Qd, Qn, #UIMM 並以循環累積 .S32 Vd(i) := Vd[i] + ((Vn[i] + .S64 round(UIMM)) » UIMM) •U8 .U16 •U32 •U64 VQRSRA .S8 Dd, Dn, #UIMM 由最接近值飽和右移 .S16 Qd, Qn, #UIMM 並以循環累積 .S32 Vd(i) = sat<td>( .S64 Vd(i) + ((Vn[i] + •U8 round(UIMM)) » UIMM)) •U16
70 1315034 •U32 •U64 VSHL .18 Dd, Dn, #UIMM 由最接近值左移
•116 Qd, Qn, #UIMM Vd[i] .= Vn(i) « UIMM .132 •164
.S16.S8 •S32.S16 •S64.S32 .U16.U8 •U32.U16 .U64.U32
Qd, Dn, #UIMM 由最接近值延伸左移
Vd(i) := Yn[i] « UIMM
VQSHL S8 Dd, Dn, #UIMM 由最接近值飽和左移
•SI6 Qd, Qn, #UIMM .S32 Vd[i] sat<td> (Vn[i] « UIMM) .S64 •U8 .U16 .U32 71 1315034 .U64 .U8.S8 •U16.S16 •U32.S32 .U64.S64 表格7 由有號變數移位 於此部分之移位,乃於元件之一向量執行移位,其藉由 第二向量内指定之有號移位量控制。支援有號移位量,乃允 許支援以指數(exponent)值移位,其可為負值;一負控制 值將執行右移位。向量移位允許每個元件以不同量移位,但 可用於以相同量移位所有徑,藉由在執行移位前,複製移位 控制操作元至向量之所有徑而達成。有號移位控制值,乃是 與欲移位之操作元之最小操作元元件,大小相同之一元件。 然而,移位器變數僅使用每徑底部8位元解釋,以決定移位 量。亦可具有循環與飽和選項。 符號 資料類型 操作元 說明 VSHL S8 Dd, Dn, Dm 由有號變數左移 .S 16 Qd, Qn, Qm Vd [ i ] := Vn [i] <<
Vm[i] 72 1315034 • S32 _S64 ,U8 .U 1 6 .U32 .U64 VQSHL ,S8 .S 16 .S32 .S64 ,U8 .U 1 6 .U32 .U64
Dd, Dn, Dm 由有號變數飽和左移 Qd, Qn, Qm
Vd(i) := sat<td> (Vn[i] « Vm[i])
VRSHL .S8 Dd, Dn, Dm 由有號變數循環左移 .S 1 6 Qd, Qn, Qm Vd[i] := (Vn[i] + round .S32 (-Vm(i))) << VM(i) • S64 • U8 .U16 73 1315034 .U32 .U64 VQRSHL .S8 Dd,Dn, Dm 由有號變數飽和循環左移 .S16 Qd, Qn, Qm .S32 Vd(i) := sat<td>((Vn[i] 七 .S64 round(-Vm[i]))« Vm[i]) ,U8 .U16 .U32 .U64 可知硬體 ,乃支援可指 定來源資料元件, 以 及 結 大小之指 令,且有時亦 可指定欲移位資料 之 位 置 得其成為 一具有強大適 用性與功效之工具 〇 圖所示之: 右移位與窄化 操作,乃具有一些 可 能 應 於固定點 數字之計算, 當需某些精確度時 5 可 將 支字置於朝向32位元數 .值之中心,以減少 資 料 溢 危險,同 時執行計算。 於需要計算16位 元 數 字 因此,如 第36圖所示 之移位與窄化操作 將 為 適
因此, 果資料元件 數目。此使 第36 用。例如關 一 1 6位元| 位或不足之 之末端,且 當的。本發 可能性,尤
明使用不同大小之來源與目標暫存器’所產生之 其與此處有效,且允許不同大小之資料於s 1M D 74 1315034 處理時,仍舊位於特定徑。 第3 6圖所繪示之移位與窄化操作之另一使用,可用以 處理彩色圖素資料。SIMD處理尤其適合影像資料,因影像 資料包含許多圖素,皆須於其上執行相同操作。因此不同圖 素資料,可位於一暫存器不同徑,且單一指令可於所有資料 執行相同操作。通常,影像資料可為紅色、綠色與藍色資料。 於其上執行有意義操作前,需將其加以分離。第3 7圖顯示 於一 1 6位元資料元件呈現之紅色、綠色與藍色資料之一典 型範例。於所示之範例,藍色資料可藉由左移位3位元與窄 化操作擷取。左移位3個位置,乃將藍色資料送至資料元件 之中間右側,以虛線暫存器圖表式地顯示(表示一中間值), 三個零填入由資料左移所造成之資料值右側之三個空白位 置。窄化操作使得藍色資料與三個零,轉移至結果8位元資 料元件。 除移位與窄化外,本發明亦可用於相加與移位,此過程 乃示於第3 8圖。於此情形,執行相加後為一左移位。此操 作可用於,例如,轉移32位元數值至64位元數值’ 32位元 數值乃置於64位元數值内之一適當位置。於所示之範例’ 兩個3 2位元數值,藉由將最高有效位元置於徑,且將零加 入至最低有效位元,轉移至64位元數值。 第3 9圖繪示使用數值向量之可能性’表示每個資料元 件需移位之位數,數值為有號整數,負數表示左移位。暫存 75 1315034 器保持每一資料元件使用之一數值,且每一資料元件,藉由 位於其徑之數值所指定之數量移位。此類操作之指令乃於先 前之表格7提出。 第4 0圖圖表式地顯示一簡單多工操作。於此多工操作, 多工器700根據控制位元c之數值,選擇數值a或數值b於 D之輸出。c乃用於選擇a與b間之輸出。c通常根據一判 斷之結果,例如a > b。本發明架構之具體實施例提供於SIM D 處理時,執行多工之能力。SIMD處理不適合執行分支 (branch )操作,且因此多工無法使用標準方式執行,若接 著產生一指令,而非一遮罩,遮罩將用於表示選擇兩個來源 暫存器a與b哪一部份。 此遮罩由控制數值所構成,用以表示兩個來源暫存器a 與b何部分被選擇。於一些具體實施例,於a某些位置之一, 可表示選擇b之某些部分,而於此位置之零,將表示選擇a 之對應部分。此遮罩乃儲存於一般用途暫存器,從而減少需 要使用特殊用途暫存器。 遮罩之產生,乃根據所執行之多工操作,且回應此操作 而產生。例如於上述之情況,將執行a與b之比較。此可以 一部份接著一部份達成,例如比較SIMD處理中之對應資料 元件。根據b大於a,或b等於或小於a ’比較b與a之對 應資料元件,且將一數值寫入部分一般用途暫存器,用於儲 存這些控制數值。此可藉由平行對於所有資料元件’比較是 76 1315034
否大於 集中。 做為本 表 比 可 資料平 與最小 code) 符號 VCEQ 指令V C G T。此指令乃提供於系統具體實施例之指令 下面之表格8’顯示一些比較指令之廣大範圍,提供 架構之具體實施例。 格8 較與選擇 執行變數之比較與測試,以產生遮罩,其可用於提供 面(plane)選擇與遮罩。其亦提供指令以選擇最大值 值,包含折疊方式,其可用於向量化瑪(vectorised 之末端,以尋找向量内之最大值與最小值。 資料類型 操作元格式 說明 .18 Dd, Dn, Dm 比較相等 • 116 Qd, Qn, Qm Vd [i] : =(Vn [i] == Vm [i])? • 132 —:零 .F32
VCGE .S8 Dd, Dn, Dm 比較大於或相等 S 1 6 Q d,Qn,Q m Vd [i] : =(Vn [i]>= Vm [i]) ? S32 一:零 U8 U16 77 1315034 .U32 • F32 VCGT .S8 .S 1 6 .S32 .U8 .U 1 6 .U32 .F32
Dd, Dn, Dm 比較大於
Qd, Qn, Qm Vd[i] := (Vn[i] > Vm[i]) ? —: 零 VCAGE .F32 Dd, Dn, Dm 比較絕對大於或相等
Qd, Qn, Qm Vd[i] := (|Vn[i]| >= |Vm[i] |) ? 一:零 VCAGT .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 78 1315034 VCGEZ . S 8 Dd,Dm 比較大於或相等於零 .S 1 6 .S32 .F32 Qd, Qm Vd(i] : = (Vm[i] >= 0) ? 一:零 VCGTZ ,S8 Dd, Dm 比較大於零 .S16 Qd, Qm Vd(i] := (Vm[i] > 0) ? .S32 :一:零 .F32 YCLEZ .F32 Dd, Dm 比較小於或等於零 Qd, Qm Vd[i] := (Vm[i] <= 0) ? 一:零 注意:整數 a <= 0==!(&>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 ? 一:零 79 1315034 VMAX .S8 Dd, D η, Dm 最大ί .S 1 6 Qd, Qn, Qm Vd[i] .S32 Vn(i] .U8 .U 1 6 .U32 .F32 VMIN .S8 Dd, Dn, Dm 最小i .S 1 6 Qd, Qn, Qm Vd[i] :=(Vn(i] > = Vm[i]) ? :Vm(i] Vm[i]) ? .S32 .U8 .U 1 6 .U32 .F32
Vm[i] := (Vn(i] > = :Vn(i] 一旦產生遮罩,可使用單一指令, 内之一般用途暫存器,即控制暫存器C 此,資料處理器由C所控制,以執行選才 第4 1圖圖表式地繪示系統之一具 來源數值a或b,乃以位元方式達成。 以利用包含於此遮罩 ,以選擇a或b。因 [a或b之多工操作。 體實施例,其中選擇 於此情形,控制暫存 80 1315034 器730藉由比較暫存器a 710與b 720内之資料元件,填 資料。因此,資料元件a0,其寬度為8位元,乃與具相同 小之資料元件b 0進行比較。於此情形,a小於或等於b, 因此八個零乃插入至控制暫存器7 3 0對應部分。若a大於 八個一乃插入至控制暫存器7 3 0對應部分。於所有資料元 執行一相似比較,且產生對應控制位元。產生控制向量之 較操作,乃對應於指令VCGT.SS c,a,b。接著可非常簡單 以位元接著位元方式,執行選擇,藉由在儲存於來源暫存 之位元,以及儲存於控制暫存器之對應位元間,執行一簡 邏輯操作,每個結果位元乃寫入至一目標暫存器,於此範 其為暫存器7 3 0,即,結果覆蓋控制數值。此種以位元方 選擇之優點為與資料類型及寬度無關,且若適當的話,可 較不同大小之資料元件。 第42圖顯示另一具體實施例,其中控制非以位元方 達成,而以資料元件方式達成。於所示之具體實施例,若 制暫存器C730内之資料元件,大於或等於零,接著,來 暫存器b720中之一對應資料元件,寫入至目標暫存器( 此情形為暫存器7 2 0 )。如果,如同於此範例,C為一有號 數,接著當選擇a或b時,僅需考慮C之最有效位元。 於其他具體實施例,C之其他部分可用於決定,選擇 自暫存器a 710,或來自資料暫存器b 720之資料元件。 類特性之範例包含,C為奇數或偶數,其中再次地,僅需 入 大 且 b, 件 比 地 器 單 例 式 比 式 控 源 於 整 來 此 考 81 1315034 慮控制數值之一位元,於此情形最小有效位元,或若c等於 零,不等於零或大於零。 通常ARM指令,且實際上許多其他RISC指令,任何指 令僅提供三個操作元。多工操作一般需四個操作元,以指定 兩個來源暫存器a與b,一個控制暫存器C與一目標暫存器 D。本系統之具體實施例乃是利用,通常於多工操作後,不 再需要至少兩組來源資料其中之一,或控制資料之特點。因 此,目標暫存器選擇做為兩個來源暫存器其中之一,或是控 制暫存器。此僅於控制暫存器為一般用途暫存器,而非特殊 暫存器時有效。於本系統之具體實施例,於指令集提供三種 不同指令,一個指令指定寫回至一來源暫存器,另一指令寫 回至其他來源暫存器,且第三指令寫入至控制暫存器。每個 指令僅需三個操作元,指定兩個來源暫存器與一控制暫存 器。這三個指令乃於下面之表格9中指出。 表格9 邏輯與位元方式選擇 符號 資料類型 操作元格式 說明 VBIT 無 Dd,Dn,Dm 若「真」,位元方式插入
Qd, Qn, Qm Vd := (Vm) ? Vn : Vd 82 1315034 VBIF 無 Dd, Dn, Dm 若「假」位元方式插入
Qd, Qn, Qm Vd := (Vm) ? Vd ; Vn VBSL 無 Dd,Dn,Dm 位元方式選擇
Qd, Qn, Qm Vd := (Vd) ? Vn : Vm 第4 3圖圖表式地繪示多工器安排之三個範例,乃對應 於系統提供之三個多工指令。第4 3 a圖顯示多工器7 0 1連接 以執行指令位元方式選擇VB S L。於此範例,相較於第4 1與 4 2圖所繪示之範例,當C為「假」(0 )時,選擇A,且當C 為「真」(1 )時,選擇B。於所繪示之具體實施例,目標暫 存器與控制暫存器相同,使得結果數值覆蓋控制數值。若需 相反選擇,即,當C為「真」時,選擇A,且當C為「假」 時,選擇B,可僅藉由交換操作元A與B,使用相同電路。 第43b圖顯示對應於若「真」,指令BIT位元方式插入 之多工器 7 0 2,且使得來源暫存器 A做為來源與目標暫存 器,且以結果資料覆蓋。於此範例,當C為「真」時,B寫 入至A,同時若C為「假」時,於暫存器A之數值維持不變。 於此具體實施例,若需相反選擇,即,當C為「假」而非「真」 時,希望寫入B至目標暫存器,此時無法僅藉由切換暫存 器,因設備不具有如同多工器7 〇 1之對稱性。 第43c圖顯示多工器703,設定為對應於第43b圖之相 83 1315034 反選擇’即若「假」時,指令BIF以位元方式插入。於此範 例’當C為「假」時,於暫存器A之數值,寫入至暫存器B, 同時當C為「真」時,於暫存器B之數值維持不變。如同第 4 3 b圖,於此系統不具對稱性。 第4 4圖圖表式地繪示,儲存於記憶體内資料B 0至B 7 之位元組序列。這些位元組乃根據位元組不變量(i n v a r i a n t ) 定址方式儲存,從而相同位元組之資料,將回應一特定記憶 體位址之讀取而返回,而與目前尾序模式無關。記憶體亦支 援未校直之定址,從而半字元,字元,或較長多位元組資料 元件,可由記憶體之任一記憶體位元組位址讀取。 當系統於小尾序模式,由記體體讀取八位元組之資料 B 0至B 7時,接著位元組B 0至B 7乃以第4 4圖所示之順序, 配置於暫存器800内。暫存器800含有四個資料元件,每個 包含16位元之一半字元。第44圖亦顯示,當系統操作於大 尾序模式時,相同八位元組之資料B 0至B 7讀取至暫存器 802 °
於此範例,一旦資料由記憶體讀取至個別SIMD暫存器 800、802,乃接受一平方(squaring)操作,產生加倍之資 料元件大小。因此,結果乃寫入至兩個目標 SIMD暫存器 804、806。由第44圖可知,分別寫入第一或第二暫存器對 8 0 4、8 0 6之結果數值,乃根據尾序模式而變化,其中資料已 由記憶體讀取。因此,用以進一步操作平方結果數值之S IM D 84 1315034 電腦程式,可能需要加以改變,以考慮根據尾序 資料配置。此不利地需產生兩種不同電腦程式形 資料儲存於記憶體中之不同尾序方式。 第45圖藉由提供重新排序邏輯808提出此 處理系統包含記憶體存取邏輯8 1 0,用以由記憶 記憶體位址,讀取八位元組之資料B 0至B 7,並 之位元組不變量定址特徵。記憶體存取邏輯8 1 0 因此表示,由一特定記憶體位址之相同輸出徑所 組,而與尾序模式無關。因此,於所繪示之範例 元件為半字元,由一特定記憶體位址回復(reco\ 元組,可為一半字元於一尾序模式時之最高有效 其他尾序模式為一半字元之最低有效部分。
資料元件重新排序邏輯8 0 8,乃用於重新排 憶體存取邏輯8 1 0由記憶體擷取之資料元件,使相 暫存器8 1 2之資料元件,將與以小尾序形式儲存 新排序載入之資料,具有一致之形式,而與記憶 使用之尾序模式無關。於記憶體系統内使用小, 形,資料元件重新排序邏輯8 0 8將不重新排序位 使其以未改變方式通過。然而,對於資料於記憶 以大尾序形式儲存情況,資料元件重新排序邏輯 轉(reverse )由記憶體讀取之每個半字元内之位 使得半字元資料元件將以小尾序形式’於SIMD 模式之不同 式,以處理 問題。資料 體中一特定 利用記憶體 之輸出,乃 讀取之位元 ,其中資料 f e r e d )之位 部分,且於 序’錯由記 l載入SIMD ,且以無重 體系統内所 笔序模式情 元組,且將 體系統内, 808用以翻 元組順序, 暫存器812 85 1315034 内出現。以此方式,一個S IM D電腦程式可對於轉移至s IM D 暫存器内之資料元件,執行正確資料處理操作,而與這些資 料儲存於記憶體内之尾序模式無關。由第4 5圖將可知,資 料元件重新排序邏輯808,乃回應表示記憶體所使用尾序模 式之一信號,以及表示關於資料元件大小之一信號。所使用 之尾序模式,將控制是否需重新排序,且若需要時,大小將 控制所應用之重新排序之本質。將可知當資料以小尾序模式 儲存於記憶體内,且SIMD暫存器為小尾序時,接著便無須 重新排序。相反地,若SIMD暫存器採用大尾序形式,則當 資料以大尾序形式儲存於記憶體内時,便無須重新排序,但 當資料以小尾序形式儲存於記憶體内時,便需重新排序。 第4 6圖繪示與第4 5圖相似之一範例,除了於此範例, 資料元件為3 2位元資料字元外。可知當這些資料字元以大 尾序形式儲存於記憶體内,資料元件重新排序邏輯8 0 8所利 用之重新排序,乃翻轉由記憶體存取邏輯8 1 0所擷取之,四 個字元組資料元件之位元組順序,使得這些乃儲存於SIMD 暫存器8 1 2,且與以小尾序形式儲存於記憶體,並以無重新 排序方式載入之資料,具有一致形式。 將瞭解於此處整體描述之處理器系統内容中,記憶體存 取邏輯8 1 0與資料元件重新排序元件8 0 8,可形成部分先前 所述之載入儲存單元。當讀取資料至純量暫存器時’資料元 件重新排序邏輯8 0 8亦可用於補償記憶體系統尾序’當純量 86 1315034 暫存器内之資料採用一特定尾序時。 第4 7圖更詳細地繪示資料元件重新排序邏輯8 0 8。將瞭 解此以三層多工器形成,藉由個別控制信號Z、Y與X所控 制。這三層分別用於翻轉資料之相鄰位元組、相鄰半字元與 相鄰字元之位置。控制信號X、Y與Z乃由表示大尾序模式 之一尾序信號,以及分別表示6 4、3 2或1 6位元資料元件大 小之一大小信號解碼而來,如第 4 7圖所繪示。將瞭解許多 其他形式之資料元件重新排序邏輯,將可用於達到相同功能 結果,如第45與46圖所繪示。 用於執行記憶體之位元組不變量定址之記憶體存取指 令,便利地使用一記憶體位址指標器(ρ 〇 i n t e r ),其保持於 處理器之純量暫存器庫之一暫存器内。處理器支援改變資料 元件大小之資料處理指令,以及對於S IMD暫存器内所選擇 之資料元件,進行操作之資料處理指令。 第48圖繪示一暫存器資料儲存庫900,包含暫存器D0、 D 1列表,每個做為一表格暫存器,一索引暫存器D 7與一結 果暫存器D5。可知表格暫存器DO、D1,乃為暫存器資料儲 存庫900内連續標號之暫存器。結果暫存器D7與索引暫存 器 D 5,乃相對於表格暫存器與彼此而任意配置。對應於此 資料操作之指令語法乃示於圖示中。 第4 9圖圖表式地繪示表格查詢延伸指令之動作。此指 令乃指定做為表格暫存器區塊之一暫存器列表,例如藉由於 87 1315034 列表指定第一暫存器,及於列表指定暫存器數目(例如一至 四)。指令亦可指定做為索引暫存器D 7之暫存器,以及做為 結果暫存器D5之暫存器。表格查詢延伸指令進一步指定, 儲存於表格暫存器DO、D1之資料元件,以及選擇並寫入結 果暫存器D 5之資料元件大小。於所繪示之範例,表格暫存 器D 0、D 1每個含有八個資料元件。因此,索引數值之範圍 由0至1 5。此預先決定範圍外之索引數值,將不會產生表格 查詢,而是結果暫存器D 5内之對應位置將仍舊不變。如所 繪示,第四與第六索引數值以此方式超出範圍。其他索引數 值,乃指向表格暫存器D 0、D1内之個別資料元件,且這些 資料元件,接著儲存至結果暫存器D 5内之對應位置。索引 暫存器D7内之索引數值位置,以及結果暫存器D5内之資 料元件位置,具有一對一之對應性。於結果暫存器D 5中標 示為「U」之數值,表示於表格查詢延伸指令動作時,保留 儲存於這些位置之數值。因此,於執行指令前,無論儲存於 這些位置之位元為何,於執行指令後,依然儲存於這些位置 内。 第50圖繪示來自第49圖之索引數值,其接著乃接受 SIMD相減操作,從而十六之移位量(offset )乃施加於每個 索引數值。此使得先前位於範圍内之索引數值,變為超出範 圍數值。先前超出範圍之數值,現在移動至範圍内。因此, 當含有目前修改索引數值之索引暫存器 D7,於其他表格查 88 1315034 詢延伸指令重新使用時,第四與第六索引數值現在位於範圍 内,且使得表格暫存器D0、D1 (或可於第二表格查詢延伸 指令所指定之其他不同暫存器)内執行表格查詢,於執行第 二表格查詢延伸指令俞·,1會π去# # x T相*7則,其亦可重新載八。因此,索引暫存 器D7内之單一索引數值集,可接受一移位量,且接著連同 重新載入之表格暫存器D〇、D1重新使用,而得以具有較大 可使用表格之功效。 一 v相1邛,可提供進一步之 表格查詢指令。這些指令 ^ 31 , '、為#表格查詢指令遭遇超 範圍之索引數值時’結果暫存器… 值之位置,π ,、,+ 對應於此索引數 值之位置’乃以零數值寫入,而非使 苹此裎彳# g 、 文身。此類反應於 某二程式化情況為有用的…i圖 存器’…個表格暫存器。第-、第三、第:三=暫 七索引數值乃超出笳 第/、與第 叹圍。第二、第五與 内,且產生對應於表 ^ /索引數值於範圍 、畏格暫存器内資料元件 如稍早所述,接#Iλ Λ 之表格查詢。 知供載入與儲存指令, 器檔案20(見篦lGa、 乂移動SIMD暫存 、見第1圖)與記憶體間〃 节仔 儲存指令,將指定— 。每個此一載入與 ^ ^ (始位址,辨識記憶體内.
,為載入操作或 瑕内,存取操作(A ' 1¾存刼作)需開始之位 v - 之載入與儲存指令, 。根據具體實施例
& > 接梵此載入或儲存和入 J 據母個指令變化 a令之資料量, 「 變化。於特定具體實施例,拉针5可根 di」(即每個資料元件之 g由辨識資料類型 及辨識所存取之資料元 89 1315034 件數目,且藉由辨識SIMD暫存器列表,以及選擇性地所存 取結構之數目,辨識資料量。 當執行S IM D處理,通常之情形為,關於所需資料元件 所執行之存取操作,通常為未校直存取(此處亦稱為位元組 校直存取)。換言之,起始位址將通常為未校直,且於這類 情形,載入儲存單元2 2需分配存取操作,可能需最大數目 之存取,以完成存取操作。 雖然於可能之實施,載入儲存單元 2 2可安排為,假設 每個存取皆為未校直,此意味載入儲存單元 2 2,當起始位 址實際上與某些多個位元組數字一同校直之情況,無法改進 存取操作之效率。 雖然載入儲存單元2 2將可由起始位址,決定起始位址 是否具有預先決定之校直,載入儲存單元22通常需於起始 位址實際開始計算前,指定用於存取操作之存取數目。於特 定具體實施例,載入儲存單元22具有一管線架構,且用於 執行任何特定存取操作之存取數目,乃於管線解碼階段,由 載入儲存單元所決定。然而,起始位址通常於隨後管線執行 階段計算,例如藉由加入一移位數值至一基礎位址,且因此 於決定多少存取分配至存取操作前,載入儲存單元2 2無法 等待決定起始位址。 根據一具體實施例,藉由於存取指令内’提供一校直指 定器領域,於此處亦稱為一校直修飾詞,將得以改善此問 90 1315034 題。於一特定具體實施例,校直修飾詞可採用第一數值,其 表示將視為位元組校直,即未校直之起始位址。將瞭解此第 一數值,可藉由校直修飾詞領域之任何預先決定編碼所提 供。此外,校直修飾詞可採用任何一複數第二數值之一,以 表示不同預先決定校直,於一特定具體實施例,起始位址視 為符合由下列表格表示之複數可取得第二數值:
91 1315034 校直 起始位址格式 承 諾 與 可 利 用 性 修飾 詞 @16 ..xxxxxxxO 起 始 位 址 視 為 多 個 2位元組 i 可 用 於 恰 好 轉 移 2 位 元組之 指 令 〇 @32 .,χχχχχχΟΟ 起 始 位 址 視 為 多 個 4位元組 } 可 用 於 恰 好 轉 移 4 位 元組之 指 令 〇 @64 .,χχχχχΟΟΟ 起 始 位 址 視 為 多 個 8位元組 ) 可 用 於 恰 好 轉 移 8 位 元組之 指 令 0 @128 ..xxxxOOOO 起 始 位 址 視 為 多 個 16 位元組 〇 可 用 於 恰 好 轉 移 16 位 元組之 指 令 〇 @256 ..xxxOOOOO 起 始 位 址 視 為 多 個 32 位元組 〇 可 用 於 恰 好 轉 移 32 位 元組之 指 令 〇 表格ίο 現在將參照第5 2圖,描述用於一具體實施例中’此校 直修飾詞資訊之方式。如第52圖所示,載入儲存單元22將 92 1315034 典型地透過一預先決定寬度之資料匯流排,連接至記憶體系 統。通常記憶體系統將由一些不同層級之記憶體所構成,且 記憶體之第一層級通常為一快取,此為載入儲存單元,透過 資料匯流排進行溝通之記憶體層級。因此,如第5 2圖所示, 載入儲存單元2 2安排為透過資料匯流排1 〇 2 0,與記憶體之 層級1快取10 10溝通,於此特定範例,資料匯流排視為具 有6 4位元寬度。於快取遭遇對於層級1快取内容進行存取 之情況,當快取遺漏時,層級1快取1 0 1 0接著透過一或其 他進一步匯流排1 0 3 0,與記憶體系統1 0 0 0其他部分溝通。 記憶體系統之不同部分可為分散式(distributed ),且於 第5 2圖所繪示之範例,假設層級1快取1 0 1 0乃提供於晶片 上,即,併入第1圖之積體電路2内,且記憶體系統10 0 0 之其餘部分則提供於晶片外。晶片上與晶片外間之定界,於 第5 2圖中乃以虛線1 0 3 5表示。然而,熟知此項技藝之人士 將瞭解,可使用其他組態,且因此例如,所有記憶體系統可 提供於晶片外,或可提供記憶體系統位於晶片上部分,以及 記憶體系統位於晶片外部分間之一些其他定界 (delimitation ) ° 載入儲存單元22亦安排為與記憶體管理單元(Memory Management Unit ,MMU) 1005溝通,其典型地包含一轉 換後備缓衝器(Translation Lookaside Buffer’ TLB) 1015。 熟知此項技藝之人士將瞭解,記憶體管理單元乃用於執行某 93 1315034 些存取控制功能,例如虛擬至實體位址之轉換,決定存 可(即,存取是否可發生)等。為達此目的,記憶體管 元,將由記憶體頁表格(page tables )所獲得之描述 (descriptors)儲存於轉換後備緩衝器1015。對於所對 記憶體頁,每個描述符號乃定義關於此記憶體頁所需之 控制資訊。 載入儲存單元2 2安排為透過控制路徑1 0 2 5,與層 快取1 0 1 0及記憶體管理單元1 0 0 5,溝通存取之某些細 尤其,載入儲存單元22安排為輸出一起始位址,以及 取資料區塊大小之一指示,至層級1快取與記憶體管 元。此外,根據一具體實施例,載入儲存單元2 2亦輸 自校直指定器之校直資訊。現在將進一步參照第5 3 A至 圖,描述載入儲存單元2 2,及/或層級1快取1 0 1 0與記 管理單元,使用校直指定器資訊之方式。 第5 3圖繪示一記憶體位址空間,每個水平實線表 憶體内之64位元校直。若存取操作指定1 2 8位元長度 料區塊1 040,為了說明目的,將假設起始位址為0x4, 載入儲存單元22需透過64位元資料匯流排1 020,決定 存取數目,以分配至存取操作。此外,如前述,於得知 位址為何之前,通常便需做成此決定。關於第5 2圖之 實施例,當載入儲存單元2 2決定所分配之存取數目時 排為使用校直指定器資訊。 取許 理單 符號 應之 存取 級1 々Ar 即 。 欲存 理單 出來 54B 憶體 示記 之資 接著 個別 起始 具體 ,安 94 1315034 於弟5 3 A圖所不之範例’起始位址為3 2位元校直, 校直指定器以辨識此校直。於此範例,如第5 3 A圖所示, 入儲存單元2 2需假設為最差情況,且因此假設將需三個 別存取,以執行關於資料區塊1 〇 4 0所需存取操作。此與 配至未校直存取所需之存取數目相同。 然而,若現在我們考慮第5 3 B圖所繪示之相似範例, 知將再次存取1 2 8位元之資料區塊1 0 4 5,但於此範例,起 位址為64位元校直。若校直指定器資訊辨識此為64位元 直,或實際上辨識資料為1 2 8位元校直,接著於此情形, 入儲存單元2 2僅需分配兩個個別存取至存取操作,從而 效率地提供顯著改進。然而,若資料匯流排為1 2 8位元寬肩 接著若校直指定器指示為1 2 8位元校直,而非6 4位元校J 載入儲存單元22將僅需分配單一存取。 現在考慮第5 3 C圖所示之範例,此處可知需存取一 位元大小資料區塊1 0 5 0,且於此範例,假設校直指定器辨 起始位址為 3 2位元校直。再次,於此範例,即使於需決 存取數目之時刻,載入儲存單元22將不會實際計算起始 址,載入儲存單元2 2仍可假設僅需兩個存取分配至存取 作。第5 3 D圖繪示一第四範例,其中將存取一 8 0位元之 料區塊1 0 5 5,且其中校直指定器辨識起始位址為1 6位元 直。再次,載入儲存單元22僅需分配兩個存取至存取操竹 若校直指定器指出存取視為未校直存取,接著載入儲存單 且 載 個 分 可 始 校 載 有 96 識 定 位 操 資 校 〇 元 95 1315034 將需分配三個存取至存取操作,且實際上將為第5 3 C圖所繪 示之存取情況。因此,可知校直指定器資訊可為載入儲存單 元2 2所使用,以於校直指定器表示起始位址之某一預先決 定校直情況,顯著地改進存取性能。 需注意校直指定器,不可視為起始位址(此處亦稱為有 效位址)將具此校直之保證,但可提供載入儲存單元2 2繼 續何者之假設。若起始位址隨後不遵守校直指定器所指定之 校直,接著於一具體實施例,相關之載入或儲存操作乃安排 為產生一校直錯誤。校直錯誤接著可使用任何其中已知之技 術處理。 如前述,校直資訊不僅為載入儲存單元2 2所使用,亦 透過路徑1 0 2 5,傳播至層級1快取1 0 1 0與記憶體管理單元 1 005。現在將參照第54A與54B圖,描述層級1快取,或記 憶體管理單元使用此資訊之方式。如第54A與54B圖所繪 示,考慮至一 256位元資料區塊1060、1065之存取,於這 些範例,圖示中之水平實線表示記憶體中之1 2 8位元校直。 於第54A圖,假設資料區塊為64位元校直,而於第54B圖, 假設資料區塊為1 2 8位元校直。於兩者範例,因資料匯流排 1020寬度僅為64位元,將瞭解載入儲存單元22需分配四個 存取至存取操作。由載入儲存單元觀點,與校直指定器指定 起始位址為6 4位元校直,或1 2 8位元校直無關。 然而,層級1快取1010内之快取線,每個可儲存超過 96 1315034 256位元之資料,且進一步可為128位元校直。於第54A圖 所示之範例,因資料區塊並非1 2 8位元校直,快取將需假設, 需兩條快取線以進行存取。然而,於第5 4 B圖之範例,層級 1快取10 1 0可由校直指定器,決定層級1快取内,僅需單一 快取線進行存取,且此可用於增進層級1快取1 0 1 0内之存 取操作效率。
相同地,需由記憶體管理單元所存取,以擷取適當之描 述符號至轉換後備緩衝器1 0 1 5之頁表格,通常將需儲存超 過2 5 6位元之資料,且通常為1 2 8位元校直。因此,記憶體 管理單元1 0 0 5可使用透過路徑1 02 5提供之校直資訊,以決 定欲所存取之頁表格數目。於第5 4 A圖之範例,記憶體管理 單元1 0 0 5可能需假設,將需多於一個之頁表格進行存取, 於第5 4B圖之範例,記憶體管理單元可由校直指定器,決定 僅需單一頁表格進行存取,且此資訊可用於改進由記憶體管 理單元1 00 5所執行之存取控制功能效率。
因此,可知於上述之載入或儲存指令内,使用校直指定 器,可使硬體最佳化某些方面之存取操作,若於可決定起始 位址前,提出存取週期及/或快取存取數目,其將尤其有用。 此架構有用於指定所存取資料各種長度之載入或儲存指 令,以及載入儲存單元與記憶體系統間,具不同資料匯流排 大小之處理器。 有些資料處理操作,不提供於標準S IMD格式執行’其 97 1315034 中多個資料元件乃並排置於暫存器内,且接著操作乃平行地 於這些資料元件執行。一些此類操作之範例,乃繪示於第 55A圖至55C圖。第55A圖繪示一交錯配置操作,其中希望 交錯配置第一暫存器1100内之四個資料元件A、B、C、D, 以及第二暫存器1102内之四個資料元件E、F、G、Η。於第 55Α圖,結果交錯配置資料元件乃示於目標暫存器1104、 1106。這些目標暫存器可為與來源暫存器1100、1102不同 之暫存器,或可與做為來源暫存器之兩暫存器集相同。由第 5 5 Α圖可知,根據此交錯配置操作,來自每個來源暫存器之 第一資料元件,乃並排置於目標暫存器内,隨後為來自兩個 來源暫存器之第一資料元件,隨後為來自兩個來源暫存器之 第三資料元件,隨後為來自兩個來源暫存器之第四資料元 件。 第55B圖繪示相反之解交錯配置操作,其中需解交錯配 置置於兩個來源暫存器1 1 0 8與1 1 1 0之八個資料元件。根據 此操作,第一、第三、第五與第七資料元件乃置於第一目標 暫存器1112,而第二、第四、第六與第八資料元件乃置於第 二目標暫存器1 1 1 4。如第5 5 A圖所示之範例,將可瞭解目 標暫存器可與來源暫存器不同,或者可為相同暫存器。若於 第5 5 A與5 5 B圖之範例,假設暫存器為6 4位元暫存器,接 著於此特定範例,交錯配置或解交錯配置之資料元件為16 位元寬度資料元件。然而,將瞭解無須使資料交錯配置或解 98 1315034 交錯配置至1 6位元寬度,且來源與目標暫存器無須為64位 元暫存器。 第5 5 C圖繪示由移項操作所執行之功能。根據此範例, 移項來自第一來源暫存器1 1 1 6之兩個資料元件A、B,以及 來自第二來源暫存器1 1 1 8之兩個資料元件C、D,且移項結 果為來自第一來源暫存器1116之第二資料元件,與來自第 二來源暫存器1 1 1 8之第一資料元件交換,使得於第一目標 暫存器120内,提供資料元件A、C,而於第二目標暫存器 1 1 12,提供資料元件 B、D。再次,目標暫存器可與來源暫 存器不同,但通常目標暫存器,實際上為與來源暫存器相同 之暫存器。於一範例,每個暫存器1116、1118、1120、1122 可視為64位元暫存器,其中資料元件為3 2位元寬度資料元 件。然而,資料元件無須為3 2位元寬度,且暫存器無須為 64位元暫存器。 此外,雖然於所有上述範例,假設顯示暫存器之完整内 容,可知這三個討論之操作任何之一,可獨立地於相關來源 暫存器不同部分内之資料元件執行,且因此圖示僅繪示部分 來源/目標暫存器。 如上所述,標準SIMD方法包含將多個資料元件,並排 置於暫存器内,且接著平行地於這些資料元件執行操作。換 言之,平行操作乃於資料元件顆粒度執行。雖然對於所需資 料元件可以此方式安排時,此得以非常有效率地執行操作’ 99 1315034 例如傳播所需來源資料元件於多個暫存器,有許多操作,無 法以此方式安排所需之來源資料元件,且因此先前無法利用 S IM D方法之潛在速度優點。上述交錯配置、解交錯配置與 移項操作,為此類操作之範例,其先前無法利用S IM D方法 之速度優點,但將瞭解亦有許多其他範例,例如某些類型之 算術操作。此一算術操作之一特定範例為,需應用至由實數 與虛數部分所構成複數之算術操作。
根據一具體實施例,藉由提供某些資料處理指令之能 力,不僅得以辨識資料元件大小,且亦進一步辨識做為個別 攔位之徑大小,將可改善此問題,其中徑大小乃為多個元件 大小。平行資料處理操作接著於徑大小,而非資料元件大 小之顆粒度產生,使得關於資料處理操作一特定範例之多於 一個之元件資料,可共存於相同來源暫存器。因此,用於執 行資料處理操作之處理邏輯,可根據一些處理平行徑之徑大 小而定義,且資料處理操作接著可平行地於每個徑執行’資 料處理操作乃應用至每一此類處理平行徑内之選擇資料元 件。 藉由此一方式,得以執行SIMD方法之交錯配置操作, 例如參照第5 5 Α圖所述之方式。尤其,第5 6 Α圖繪示根據 一具體實施例’當執行「ZIP」指令時,所執行之處理。於 此特定範例,ZIP指令為32 |ZIP.8指令。此指令因此辨識資 料元件為8位元寬度,且徑為32位元寬度。對於第56A圖 100 1315034
之範例,假設ZIP指令,指定來源暫存器為6 4位元暫存器 D0 11〗5與D1 1130。每個這些暫存器因此含有八個8位元 資料元件。於每個徑内,交錯配置操作乃獨立地與平行地應 用,以重新安排資料元件,如第5 6 A圖下半部所示。於一具 體實施例,假設對於ZIP指令,目標暫存器與來源暫存器相 同,且因此這些重新安排之資料元件,再次儲存於暫存器 DO 1125與D1 1130内。由第56A圖可知,於徑1内,每個 來源暫存器之前四個資料元件為交錯配置,且於徑2,每個 來源暫存器之下四個資料元件為交錯配置。
將可容易暸解,藉由改變徑大小,或資料元件大小,可 執行不同形式之交錯配置。例如,若徑大小辨識為6 4位元, 即,結果僅為單一徑,接著可知目標暫存器 DO,將含有每 個暫存器之前四個資料元件之交錯配置結果,而目標暫存器 D 1,將含有每個暫存器之下四個資料元件之交錯配置結果。 將瞭解可提供一對應之UNZIP指令,以執行對應之解交錯 配置操作,UNZIP指令再次可指定徑大小與資料元件大小。 通常,移項操作視為與交錯配置操作,或解交錯配置操 作相當不同之操作,且因此典型地將視為需提供一個別指 令,以執行移項操作。然而,可知當提供得以個別定義一徑 大小,以及一資料元件大小之一交錯配置或一解交錯配置指 令時,接著,當指定兩個來源暫存器’且徑大小設定為資料 元件大小之兩倍時,相同指令實際上可用於執行一移項操 101 1315034
作。此乃繪示於第56B圖,其中交錯配置指令ZIP,乃設定 為辨識8位元大小之資料元件,以及1 6位元之徑大小(即, 資料元件大小之兩倍)。假設選擇相同之6 4位元來源暫存器 D 0 1 1 2 5與D 1 1 1 3 0,如同第5 6 A圖之範例,此定義四個處 理平行徑’如第56B圖所示。由第56B圖下半部可知,交錯 配置過程實際上,使得每個徑内產生一移項結果,每個徑内 之第二來源暫存器之第一資料元件,乃與每個徑内第一來源 暫存器之第二資料元件交換。 因此,根據上述具體實施例,可使用相同ZIP指令,以 執行一交錯配置或一移項操作,根據徑大小與資料元件大小 如何定義。需進一步注意亦可使用 UNZIP指令,以完全相 同方式,執行移項,且因此16 |UNZIP.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。 第5 7 B圖繪示當執行下列兩個指令時,產生之各種移 項: 102 1315034
32 |ZIP. 16 A, B
32 |ZIP. 16 C, D 每個ZIP指令因此定義徑寬度為3 2位元,且資料元件 寬度為16位元,且因此於每個徑,第二暫存器内之第一資 料元件,乃與第一暫存器内之第二資料元件交換,如第5 7 B 圖所繪之四條對角線箭頭所示。因此,於四個二乘二區塊 113 7、1141、1 1 4 3、與1 1 4 5之每一個内,產生個別移項。
第5 7 C圖接著繪示由於執行下列兩個指令,產生之移 項:
64 |ZIP.32 A, C 64 |ZIP.32 B, D
根據這些指令,徑寬度設定為6 4位元,即,整個來源 暫存器之寬度,且資料元件之寬度選擇為32位元。執行第 一 ZIP指令,因此使得暫存器A 1 147内之32位元寬度第二 資料元件,與暫存器C 1 1 5 1内之3 2位元寬度第一資料元件 交換。相同地,第二ZIP指令,使得暫存器B 1 149内之32 位元寬度第二資料元件,與暫存器D 1153内之32位元第一 資料元件交換。如第5 7 C圖之對角線箭頭所示,此因此使得 左上方之二乘二圖素區塊,與右下方之二乘二圖素區塊交 換。熟知此項技藝之人士將瞭解,此四個ZIP指令序列,因 此將整個四乘四之圖素陣列 1 1 3 5,相對於對角線 1 1 3 6移 項。第5 8圖繪示使用交錯配置指令之一特定範例。於此範 103 1315034 例 ,考 慮 由實 數與 虛 數 部 分 所 構 成 之複 數。 於一 stL· 情形,可 能 需於 一 複數 序列 之 實 數 部 分 > 執 行某 些計 算, 且 一個別之 操 作需 於 這些 複數 之 虛 數 部 分 執 行 。結 果, 實數 部 分安排於 — 特定 暫 存器 DO 1 155 ,而虛; 敗- 郎分 置於 個別 暫 存器 D1 11 6 0° 於 某一 時刻 可 能 希 望 重 新 結合 每個 複數 之 實數與虛 數 部分 使得 其於 暫 存 器 内 彼 此 相 鄰。 如第 58 圖 所示,此 可 透過 使 用 64|ZIP. 1 6 指 令 達 成 j 其設 定徑 寬度 為 整個來源 暫 存器 之 寬度 ,且 設 定 資 料 元 件 寬 度為 16 位元 » 即每個實 數 與虛 數 部分 之寬 度 〇 如 第 58 | 圖下半- 郎所 禾, 執 行ZIP指 令 之結 果 ,為 每個 複 數 a 、b 、 C ' d 之每 個實 數與 虛 數部分, 於 暫存 器 空間 内重 新 結 合 » 因 標 暫 存器 D0 1155 含 -有複數a 與 b之 實 數與 虛數 部 分 且 目 標 暫 存器 D 1 1160 -有複數c 與 d之 實 數與 虛數 部 分 0 不 僅 資料 重新 安 排 指 令 , 例 如 交錯 配置 與解 交 錯配置指 令 ,可 利 用此 能力 , 以 指 定 與 資 料 元件 大小 獨立 之 .徑大小。 例 如, 第 59A 與59B 圖 繪 示 兩 指 令 之一 序列 ,可 用 於執行兩 複 數之 相 乘。 尤其 ) 希 望 相 乘 複 數 A與 複數 B, 以 產生一結 果 複數 D ,如 下列 方 程 式 所 示 ·· D, re _ A r e * Bre - Ai m *B i m D i m =A r e *Bim + Αι m 和E ire
第59A圖顯示回應下列形式之第一相乘指令,所執行之 104 1315034 操作: 32|MUL. 1 6 Dd, Dn, Dm[0]
來源暫存器為64位元暫存器,且相乘指令指定32位元 之徑寬度,以及1 6位元之資料元件大小。相乘指令安排於 每個徑内,以將來源暫存器 D m 1 1 6 5内此徑之第一資料元 件,與第二來源暫存器D η 1 1 7 0内此徑之每一資料元件相乘 (如第59Α圖所示),結果數值乃儲存於目標暫存器Dd 1175 内之一對應位置。於每一徑,目標暫存器内之第一資料元 件,視為表示部分複數結果之實數部分,且第二資料元件視 為表示部分複數結果之虛數部分。 執行第5 9 A圖繪示之指令後,接著執行下列指令: 32|MASX. 16 Dd, Dn, Dm[l]
如第5 9 B圖所繪示,此指令為「相乘、相加、相減與交 換「multiply add subtract with exchange」」指令。根據此指 令,來源暫存器D m每個徑内之第二資料元件,與第二來源 暫存器Dn對應徑内之每一資料元件相乘,如第5 9B圖所繪 示。接著,相乘之結果,乃與已儲存於目標暫存器Dd 1175 内之對應資料元件數值,相加或相減,結果接著置回目標暫 存器Ddll75内。將瞭解經由比較第59A與59B圖之操作, 以及稍早辨識之方程式,以產生結果複數D之實數與虛數部 分,藉由連續利用此二指令,對於兩組複數可平行執行計 算,從而得以實現SIMD方法之速度優點。 105 1315034 由上述範例,將瞭解藉由提供具有指定除資料元件大小 外,以及徑大小能力之指令,藉由實行SIM D而可能受益之 操作數目將增加,且因此,對於以S IM D方式實施之操作, 此提供較大改進之彈性。
本發明提供於向量執行S IMD處理之能力,其中來源與 目標資料元件寬度乃不同。於此環境之一特別有用之操作, 為相加或相減,接著返回至高半(high half) SIMD操作。 第 60圖顯示根據本發明之一相加返回高半操作之範例。 SIMD解碼器16内之一指令解碼器(見第1圖),解碼指令 VADH.I16.I32 Dd,Qn,Qm,並執行第60圖所繪示,以及以下 所提出之相加返回高半。
於第60圖,位於SIMD暫存器檔案20 (見第1圖)内之 兩個來源暫存器Qn與Qm,含有3 2位元資料元件a與b之 向量。這些乃一同相加,以形成16位元資料元件Dd之一向 量,亦位於暫存器檔案2 0内,由資料總和之高半所形成: Qn = [a3 a2 al aO]
Qm = [b3 b2 bl b] fm ffi
Dd = [(a3+b3)>>16, (a2 + b2) >>16, (al + bl) >>16, (aO + bO) >> 1 6]. 106 1315034
第01圖圖表式地顯示,與第 但於此情形,所解碼之指令為VI 6 0圖所示之一相似操作, YRADH.11 6.132 Dd,Qn,Qm >
且於其他任何處為零而違成 之一相加返回高操作。此以與第60 似之方式執行,但循環高半。於此範 且於採用南半前,加入一資料數值, half )之最高有效位元位置為 於第61圖中, 中間數值為清晰目的,乃以虛線表示。 可支援之進—步指令(未繪示),為具飽和之相加或相 減返回局。於此情形,於採取高半前,相加或相減將於適當 位置飽和。 表格1 1顯示為本發明所支援之一些指令範例,大小<a> 以位元返回資料類型之大小,且循環<td>返回循環常數1 << (大小 <dt> - 1 )。 符號 資料類型 操作元格式 說明 VADH 18.116 Dd, Qn, Qm 相加返回高半 .116.132
Vd[I (Vn[ i ]+Vm[ i ] )»size<td> .132.164 VRADH .18.116 Dd, Qn, Qm 具循環之相加返回高半 .116.132
Vd[i(Vn[i]+Vm[i]+ round<td>) »size<td> .132.164 1315034 VSBH .18.116 Dd,Qn, Qm 相減返回高半 .116.132 Vd[i(Vn[i]-Vm[ i ]) »size<td> .132.164 VRSBH .18.116 .116.132
Dd, Qn, Qm 具循環之相減返回高半
Vd [ i(Vn[i]-Vm[ i ] +round<td>) »size<td> .132.164 表格1 1
本發明可於不同類梨資料執行,若資料之高半可合理 執行。本發明尤其適合於浮點數字執行。
上述技術具有許多應用,且例如可用於加速 SIMD快 速傅立葉轉換(Fast Fourier Transform,FFT )實施。SIMD 尤其有用於執行需於多個資料執行相同操作之快速傅立葉 轉換操作。因此,使用SIM D處理,允許平行處理多個資料。 對於快速傅立葉轉換執行之計算,通常關於多個複數之相 乘。此包含資料數值之相乘,且接著相加或相減此乘積。於 SIM D處理,這些計算乃平行執行以加快處理速度。 以下乃說明需執行總和分類(sort )之一簡單範例。 (a +ic) * (b + id) = e +if 因此,實數部分e等於:a * b - c * d且 108 1315034 虛數部分f等於:a*d + c*b
第6 2圖顯示以決定實數部分e之計算。可知對於含有 1 6位元資料元件之a向量,乃與含有相同大小資料元件之向 量b相乘,以及c與d。這些乘積產生兩個具有32位元資料 元件之向量。為產生e,其中之一向量需與另一個相減,但 最後結果,僅需與初始數值具有相同正確性即可。因此,需 要具有1 6位元資料元件之結果向量。此操作可回應單一指 令VSBH.16.32Dd, Qn,Qm執行,如圖中所示。此指令,相 減返回高半,因此於本發明尤其有用。此外,其具有允許於 較大資料寬度,執行算術操作,且窄化僅於算術操作(相減) 後產生之優點。相較於執行相減前窄化,此通常產生較正確 之結果。 ARM提供具有指令編碼之指令集,以允許於一些指令, 指定一最接近值。清楚可知,若以指令編碼,需限制最接近
適合用於以指令編碼之最接近值大小,於平行處理資料 元件之SIMD處理之使用受到限制。為解決此問題,乃提供 具有產生常數之指令集,其具有受限之相關最接近值大小, 但具有擴展此最接近值之能力。因此,例如,一位元組大小 之最接近值,可擴展至產生64位元常數或最接近值。以此 方式,最接近值可用於SIMD處理中,含有多個來源資料元 109 1315034 件之6 4位元來源暫存器之邏輯操作。 第63圖顯示一最接近值abcdefgh,於指令内連同控制 數值一同編碼,其示於表格左半攔。二位元最接近值可擴展 至填入一 64位元暫存器,實際執行之擴展,乃取決於與其 相關之指令與控制部分。於所示之範例,8位元最接近值 abcdefgh,於64位元資料數值内之不同位置重複,最接近值 所放置之位置,乃取決於控制數值。此外,零及/或一可用 於瑱入未置入數值之未使用空間。一及/或零之選擇,亦由 控制數值決定。因此,於此範例,由具有8位元最接近值之 指令,以及與其相關之4位元控制數值,可產生用於SIM D 處理之可能常數之廣大範圍。 於一具體實施例(表格最後一列),而非於某些位置重 複最接近值,乃擴展最接近值之每一位元,以產生新的 64 位元最接近值或常數 由一些情況可知,每一徑之常數相同,且其他不同常數 出現於其中一些徑。於一些具體實施例(未顯示),亦提供 反轉(inverting)這些常數之可能性,且此亦增加可產生之 常數數目。 以下乃提供可用於第63圖中,所示之常數產生指令格 式之範例。於此指令,< v a 1 u e >為資料部分或最接近值’且 <mode>為控制部分,提供<value>部分於所產生之常數内如 何擴展之指示(於第6 3圖之表格以不同線顯示)。 110 1315034 VMOV Dd, #<value>, <mode> 其中 < v a 1 u e >為一位元組 <mode>為其中一數值擴展功能。 如 不 數 關 生 邏 > 體 同 輯 〇 此 這些適合之指令,通常具有一相關資料數值,其具有 資料部分<Value> ’包含最接近值及一控制部分<m〇de>。 第63圖所示,控制部分表示最接近值如何擴展。此可以 同方式達成’但於一些具體實施例’控制部分表示哪一常 將執行使用常數邏輯產生擴展。 第6 4圖圖表式地顯示根據本發明’用以由與指令相 之資料部分1210與控制部分12〇〇,產生一常數之常數產 邏輯範例於所示範例,控制部分1 2 〇 〇控制一控制產生 輯122〇,其含有邏輯閘123〇,以輸出部分資料數值丨21〇 或一個一或零至所產生之常數1240内之每一位元。 第6 5圖顯示與第1圖所示相似之一資料處理器(積 電)其中相同枯號表示相同元件。第65圖與第i圖不 之處在於’其明確顯示一常數產生邏輯122〇。常數產生邏 1 220可視為與解碼/控制部分1 4、1 6相鄰,或為其一部份 可知指令由指令線路丨2,傳送至解碼/控制邏輯14、16。 產生控制處理器之SlM〇處理邏Μ 18,載入儲存單元22 111 1315034 以及純量處理部分4、6、8、1〇操作之控制信號。若於解碼 /控制部分丨4、丨6接收具常數產 座生之私令,常數產生邏輯用 以產生用於s勵處理之常數。此可直接傳送至51勘暫存 窃資料儲存2〇(虛線1222 ),或若常數產生指令包含_ §咖 資料處理部分,產生之常數傳送i simd處理邏輯(線 1224),於此,對於產生之常數執行進一步操作,以產生一 新資料數值。 第66A與66B圖圖表式地繪示,第65圖所示之兩不同 路徑。第“A圖乃顯示’指令產生直接傳送至暫存器儲存之 常數情況’即虛線1222。帛66B圖顯示產生常數指令包含 一資料處理部分。於此情況,於產生之常數,以及進一步之 來源操作元Ϊ250,執行資料處理操作(〇p),以回應此指令, 產生一最終資料數值1260,此對應於第65圖之線1224。 除第63圖所示之常數與其反轉外,額外資料處理操作, 例如〇R、and、測試、相加、或相減,可於產生之常數執 行,以產生較廣大範圍之資料數值。此對應於第丨3 B圖以及 第65圖之路徑1224。表格12提供可用於產生一些額外資料 數值之位元方式AND與OR範例。 符號 資料類型 操作元格式 說明
VAND 無 Dd,#<value>,<mode> 具產生常數之位元方式AND 一 _ Vd:=Vd &〈generated constant〉 112 1315034
VORR 無 Dd, #<value>,<mode> 具產生常數之位元方式OR
Vd := Vd|<generated constant〉 於產生之常數,進一步執行資料處理操作之能力,可具 有各種用途。例如,第6 7圖顯示本發明之具體實施例,如 何用於產生一位元遮罩,以由一向量之一些資料元件,擷取 某一或某些位元。於所示之範例,擷取來自一來源向量之每 一資料元件之四個位元。起初,藉由重複,擴展最接近值8, 且接著為一邏輯AND指令,以將產生之常數與來源向量進 行AND,以由每一資料元件擷取所需之位元。這些操作乃回 應指令執行。
VAND Dd,#0b0000 1 000, ObllOO 其中<mode>數值1100表示產生之一常數,含有一擴展 資料部分(見第63圖)。 雖然此處描述一特定具體實施例,將瞭解本發明未限於 此,且於本發明之範圍内,可對其進行許多修改與添加。例 如,於未背離本發明範圍内,可對於下列附屬項申請專利範 圍特徵,與獨立項申請專利範圍之特徵進行各種組合。 【圖式簡單說明】 以上將僅為例示用’進一步說明本發明,並參照所附圖 示中所繪示之較佳具體實施例,其中: 113 1315034 第1圖圖表式地繪示,支援傳統純量資料處理與SIMD 資料處理之一積體電路; 第2圖圖表式地繪示,用於SIMD暫存器資料儲存庫之 一讀取與寫入埠安排; 第3圖圖表式地繪示,一 SIMD讀取與寫入操作範例, 其中目標暫存器之寬度為來源暫存器之兩倍;
第4圖顯示對於不同資料處理操作,來源暫存器大小與 目標暫存器大小間之不同類型關係; 第5圖圖表式地繪示,可用於定義根據本發明之一資料 處理指令之一語法; 第6圖圖表式地繪示,視為64位元暫存器與128位元 暫存器之SIMD暫存器資料儲存庫; 第7圖圖表式地繪示,64位元與128位元暫存器間之 重疊(混疊);
第8圖圖表式地繪示,儲存於SIMD暫存器内,具不同 大小之複數資料元件; 第9圖圖表式地繪示,SIMD向量暫存器内所涉及之純 量數值; 第1 0圖圖表式地繪示一資料處理指令,其中處理徑之 數目與資料元件大小維持固定; 第1 1 A與1 1 B圖圖表式地繪示一資料處理指令’其中 處理徑數目維持固定,且資料元件大小改變; 114 1315034 第12圖繪示SIMD暫存考眘姐 六 节* 資枓儲存庫,以及純量暫存 15資料儲存庫間之資料轉移; 第丨3、14、15圖圖表式地繪示各種暫存器轉移指八 操作; 7 第16圖為一流程圖示’输示可有效地利用第μ與15 圖所示之暫存器轉移指令類型之一範例情形;
第17圖圖表式地繪示’根據本發明一異體實施例,資 料7C件如何由—連續記憶體區塊載入至一些特定暫存器; 第1 8圖圖表式地繪示,根據本發明之具體實施例’可 存在於記憶體内之不同結構之一些範例; 第1 9 A至丨9c圖乃繪示,根據本發明〆具體實施例之 eg 儲存指令之一特定範例操作; 第20Α至2〇c圖乃繪示,根據本發明〆具體實施例之 翠 載入指令之一特定範例操作;
第2 1 A至2 1 C圖乃繪示,根據本發明一具體實施例之 單載入指令之另一特定範例操作; 第2 2 A至2 2 C圖乃繪示,根據本發明一具體實施例之 單 載入指令之再另一特定範例操作; 第23圖為一方塊圖示,乃繪示於第1圖之重新排序邏 輯内,所提供邏輯之進一步細節; 第24至26圖繪示根據本發明具體實施例’對於四種不 同序列之單一存取指令,資料通過重新排序邏輯之流向; 115 1315034 第2 7圖乃繪示已知之折疊操作; 第2 8圖乃繪示一具體實施例之折疊操作; 第2 9圖乃繪示另一具體實施例之折疊操作; 第30a至30d圖乃繪示各種折疊指令之操作; 第31圖圖表式地繪示,提供於第1圖之SIMD處理邏 輯内,安排為執行折疊操作之一邏輯; 第3 2圖繪示一向量乘以純量指令之操作;
第33圖繪示於第1圖之SIMD暫存器内,純量操作元 之安排; 第34圖圖表式地繪示,提供於第1圖之SIMD處理邏 輯内,安排為執行向量乘以純量操作之邏輯; 第3 5圖顯示根據習知技藝,右移位與上堆積之方法; 第3 6圖圖表式地顯示,根據本發明一具體實施例之右 移位與窄化操作; 第3 7圖圖表式地顯示,根據本發明之左移位與窄化;
第3 8圖圖表式地顯示,根據本發明一具體實施例之相 加與左移位; 第3 9圖圖表式地顯示,以不同數量移位資料元件; 第40圖圖表式地顯示一常見多工器; 第41圖圖表式地顯示一具體實施例,其中來源數值a 或b之選擇乃根據位元方式達成; 第4 2圖圖表式地顯示另一具體實施例,其中來源數值 116 1315034 a或b之選擇乃根據資料元件達成; 第43圖圖表式地顯示,對應於由本發明所提供之三個 多工指令,三個多工器安排之範例; 第44圖圖表式地繪示一 SIMD暫存器,乃根據尾序模 式,以不同配置儲存多個資料元件; 第4 5圖圖表式地繪示根據第一範例,記憶體存取邏輯 與資料元件重新排序邏輯之操作;
第4 6圖圖表式地繪示根據第二範例,記憶體存取邏輯 與資料元件重新排序邏輯之操作; 第47圖圖表式地進一步詳細繪示,第45與46圖之資 料元件重新排序邏輯之一具體實施例範例; 第48圖圖表式地繪示一暫存器資料儲存庫,包含兩個 暫存器,乃做為表格暫存器,結果暫存器,與索引暫存器; 第49圖圖表式地繪示表格查詢延伸指令之動作;
第50圖圖表式地繪示,索引暫存器内之索引數值,於 進一步表格查詢延伸指令所重新使用前,於索引暫存器執行 之處理; 第5 1圖圖表式地繪示表格查詢指令之操作,其中零數 值乃寫入結果暫存器中,對應於超出範圍索引數值之位置; 第5 2圖圖表式地繪示根據一具體實施例,第1圖之載 入儲存單元,如何與記憶體系統與記憶體管理單元耦接; 第5 3 A至5 3 D圖圖表式地繪示根據一具體實施例,存 117 1315034 取資料區塊之各種範例; 第5 4 A至5 4 B圖圖表式地繪示根據一具體實施例,存 取資料區塊之進一步範例; 第5 5 A至5 5 C圖圖表式地分別繪示一交錯配置操作, 一解交錯配置操作,以及一移項操作; 第5 6 A與5 6 B圖圖表式地繪示根據一具體實施例,如 何執行交錯配置與移項操作;
第5 7 A至5 7 C圖繪示根據一具體實施例之指令序列, 如何用於移項影像圖素之陣列; 第5 8圖繪示一具體實施例之指令,如何用於交錯配置 複數之實數與虛數部分; 第 5 9 A與 5 9 B圖繪示根據一具體實施例之兩指令序 列,如何用於平行執行兩個複數之相乘; 第6 0圖圖表式地顯示一相加返回高半操作,以及其相 關指令;
第6 1圖圖表式地顯示具循環之一相加返回高半操作, 以及其相關指令; 第6 2圖圖表式地顯示一相減返回高半操作,以及其相 關指令; 第63圖顯示由一指令產生之一可能常數表格,具有一 資料部分abcdefgh,以及與其相關之一控制部分; 第64圖顯示一常數產生邏輯; 118 1315034 之一資料處理器 一資料處理器, 以產生 第65圖顯示具有常數產生邏輯 第66A與66B圖圖表式地顯示 之常數回應兩類型指令;及 第67圖顯示產生根據本發明之位元遮罩 【元件代表符號簡單說明】 2 資料處理系統(積體電 路) 4 純量暫存器資料儲存庫 6 乘法器 8 移位器 10 加法器 12 指令線路 14 純量解碼器 16 SIMD解竭 18 SIMD處理邏輯 20 SIMD暫存器資料儲存庫 22 載入健存單元 23 、 23’ 先入先出 24、 8 0 8重新排序邏輯 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 數字 3 14 、3 42 資料元件 330 、3 3 5、710、720 暫存器 800 、802、 804' 806、 812、 1120、 1122 暫存器
119 1315034 3 40 轉換邏輯 350 ' 355 > 420 320 、 325 徑 多工器 360、365輸入暫存器 370 交錯式控制暫存器 375 交錯式多工器 380 暫存器快取 385 輸出多工器 400 折疊操作邏輯單元 410 算術單元 415、 425、 435、 445、 455、 43 1 ' 432 、433 、 434 路 徑 450 選擇與分配邏輯 460、 470 、 480 、 490 、 500 、 700 、 701 、702、703 多工 5 10 純量選擇邏輯 520 向量乘以純量操作邏輯 530 操作單元 730 控制暫存器 8 10 記憶體存取邏輯 900 暫存器資料儲存庫 1000 記憶體系統 1005 記憶體管理單元 1010 層級1快取 1015 轉換後備緩衝器 1020 資料匯流排 1025 控制路徑 1030 匯流排 1035 、1 2 2 2 虛線 1040 、1045 、 1〇5〇 、 1〇55 、 1060、1 065 資料區塊 1100 第一暫存器 1102 第二暫存器 1104 、1 1 0 6 目標暫存器 1108 ' 1 1 1 0 來源暫存器 1112 第一目標暫存器 1114 第 二目標暫存器
120 1315034 1116 第一來源暫存器 11 18 第二來源暫存器 1125、 1130 64 位元暫存器 113 5 圖素陣列 1136、 1 224 線 1137、 1141、 1143、 1145 區塊 1 147 暫存器A 1 149 暫存器B 115 1 暫存器C 1153 暫存器D 1155 暫存器D0 1160 暫存器D1 1165 來源暫存器Dm 1170 第二來源暫存器Dn 1175 目標暫存器Dd 1200 控制部分 12 10 資料部分 1220 控制產生邏輯 1230 邏輯閘 1240 常數 1250 來源操作元 1260 最終資料數值 1270 常數產生邏輯

Claims (1)

1315034 r—- %年丨Ο月2《曰修正本 第你并;0屮號蔚[]案祀年f C月修正 拾、申請專利範圍: 1. 一種資料處理設備,該資料處理設備包含: 一暫存器資料儲存庫,其具有複數操作為保留複數 資料元件之暫存器,保留在每一暫存器之該複數資料元件 的數目係依據該複數資料元件之一資料類型;
一處理器,其操作為對在該等暫存器之至少一者佔 據複數不同平行處理徑之複數資料元件,平行執行一資料 處理操作; 一存取邏輯,其操作為可於複數指定暫存器中該些 徑之一選擇徑以及具有一結構形式之記憶體内之一結構 間,移動複數資料元件,以回應一單一存取指令,該結構 形式具有複數構件; 該單一存取指令,其包含資料類型資訊,用以辨識 與欲移動之該複數資料元件相關之該資料類型,及可辨識 該結構形式内之該些構件數目;及
該存取邏輯,其操作為當移動該些複數資料元件 時,安排該些複數資料元件,使得複數不同構件之該些資 料元件保留於之該選擇徑中複數不同指定暫存器,同時在 記憶體中將該些資料元件作為該結構而保留,由該存取邏 輯執行之安排係依據該資料類型。 2.如申請專利範圍第1項所述之資料處理設備,其中 122 1315034 該單一存取指令係指定該選擇徑。 3 ·如申請專利範圍第1項所述之資料處理設備,其中 該存取邏輯係回應一連串該些單一存取指令,以於複數指 定暫存器内之複數選擇徑與記憶體中對應之複數結構間, 移動複數資料元件。 4 ·如申請專利範圍第1項所述之資料處理設備,其中 該結構包含一構件,且該些指定暫存器包含一暫存器。 5 .如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令係可辨識該些指定暫存器,該些指定暫存 器之數目係為該些構件數目之一倍數。 6. 如申請專利範圍第1項所述之資料處理設備,其中 所移動之該資料元件之每一者具有相同資料類型。 7. 如申請專利範圍第1項所述之資料處理設備,其中 該些指定暫存器彼此間係具有一固定關係。 8. 如申請專利範圍第7項所述之資料處理設備,其中 根據該固定關係,該些指定暫存器由η個中間暫存器所分 1315034 隔,其中η為2m-l,且其中m為大於或等於零之一整數。 9 ·如申請專利範圍第7項所述之資料處理設備,其中 該些指定暫存器為該暫存器資料儲存庫内之複數一連串相 鄰暫存器。
1 〇 ·如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令為一單一載入指令,該存取邏輯係操作為 由該記憶體内該結構載入該些複數資料元件至該些指定暫 存器之該選擇徑,以回應該單一載入指令,且儲存該些資 料元件於該些指定暫存器之該選擇徑前,安排該些資料元 件,使得複數不同構件之複數資料元件係儲存於該些不同 指定暫存器之複數不同暫存器。
11.如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令為一單一儲存指令,該存取邏輯係操作為 由該些指定暫存器之該選擇徑,儲存該些複數資料元件至 該記憶體之該結構,以回應該單一儲存指令,且於儲存該 些資料元件於該結構前,安排該些資料元件,使得該些資 料元件以該結構形式儲存。 1 2.如申請專利範圍第1 0項所述之資料處理設備,其中 124 1315034 該存取邏輯係操作為使得該些指定暫存器之複數未填滿部 分,以一或複數預先決定數值填滿。 1 3 .如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令係可辨識用於辨識所移動之該些資料元件 之一定址模式。
1 4.如申請專利範圍第1 3項所述之資料處理設備,其中 該定址模式係可辨識該記憶體内該結構之一起始位址。 1 5.如申請專利範圍第1項所述之資料處理設備,其中 該些指定暫存器為相同大小。
1 6.如申請專利範圍第1項所述之資料處理設備,其中 該單一存取指令係可辨識施加於該些資料元件之一轉換, 且.該存取邏輯係操作為當移動該些資料元件時,施加該轉 換至該些資料元件。 1 7. —種操作一資料處理設備之方法,該資料處理設備 包含:一暫存器資料儲存庫,其係具有複數操作為保留複 數資料元件之暫存器,保留在每一暫存器之該複數資料元 件的數目係依據該複數資料元件之一資料類型;以及一處 125 1315034 理盗,其係操作為對在該等暫存器之至少一者佔 :平行處理徑之複數資料元件,平行執行-資料處:: 作’該方法包含下列步驟: 操 (〇於複數指定暫存器中該些徑之一選擇徑以及 一結構形式之記憶體内之-結構間,移動複數資料元=有 以回應—單-存取指令,該結構形式具有複數構件;^件’ 、該單-存取指令,其包含資料類型資訊,用以 與欲移動之該複數資料元件相站* # A ° 相關之該資料類型,及可辨識 該結構形式内之該些構件數目, 且砀方法另包含步驟: (b)當移動該些複數資料元侔4 ^ 竹70仵時,安排該些複數資料 -件,使得複數不同構件之該些資料元件,保留於該選擇 徑中複數不同指^暫存器内,同時在記憶體中將該些資料 70件作為該結構而保留,執行之安排係依據該資料類塑。 18.如申請專利範圍第17項所述之方法,其中該單-存 取指令係指定該選擇徑。 19.如申請專利範圍第17項所述之方法,其中對於-連 串該些單一存取指令,乃重複該步帮U)與⑴,以於複 數指定暫存器内之複數選擇㉟,與記憶體中對應之複數結 構間,移動複數資料元件。 126 1315034 2 〇.如申請專利範圍第1 7項所述之方法,其中該結構包 含一構件,且該些指定暫存器包含一暫存器。 2 1 ·如申請專利範圍第1 7項所述之方法,其中該單一存 取指令係辨識該些指定暫存器,該些指定暫存器之數目係 為該些構件數目之一倍數。
22.如申請專利範圍第1 7項所述之方法,其中所移動之 該些資料元件之每一者具有相同資料類型。 2 3.如申請專利範圍第1 7項所述之方法,其中該些指定 暫存器彼此間係具有一固定關係。
24.如申請專利範圍第2 3項所述之方法,其中根據該固 定關係,該些指定暫存器由η個中間暫存器所分隔,其中 η為2m-l,且其中m為大於或等於零之一整數。 2 5 .如申請專利範圍第2 3項所述之方法,其中該些指定 暫存器為該暫存器資料儲存庫内之複數一連串相鄰暫存 器。 26.如申請專利範圍第17項所述之方法,其中該單一存 127 1315034 取指令為一單一載入指令,且其中: 該步驟(a )包含由該記憶體内該結構載入該些複 數資料元件至該些指定暫存器之該選擇徑;及 該步驟(b)包含在儲存該些資料元件於該些指定 暫存器之該選擇徑前,安排該些資料元件,使得複數不同 構件之複數資料元件儲存於該些不同指定暫存器之複數不 同暫存器。
2 7.如申請專利範圍第1 7項所述之方法,其中該單一存 取指令為一單一儲存指令,且其中: 該步驟(a)包含由該些指定暫存器之該選擇徑, 儲存該些複數資料元件至該記憶體之該結構;及 該步驟(b )包含於儲存該些資料元件於該結構 前,安排該些資料元件,使得該些資料元件以該結構形式 儲存。
28.如申請專利範圍第26項所述之方法,進一步包含以 一或複數預先決定數值,填滿該些指定暫存器之複數未填 滿部分之步驟。 29.如申請專利範圍第17項所述之方法,其中該單一存 取指令係可辨識用於辨識所移動之該些資料元件之一定址 128 1315034 模式。 3 〇.如申請專利範圍第2 9項所述之方法,其中該定址模 式係可辨識該記憶體内該結構之一起始位址。 3 1.如申請專利範圍第1 7項所述之方法,其中該些指定 暫存器為相同大小。
32.如申請專利範圍第17項所述之方法,其中該單一存 取指令係可辨識施加於該些資料元件之一轉換,且該方法 另包含當移動該些資料元件時,施加該轉換至該些資料元 件的步驟。
33. —種包含一電腦程式之電腦程式產品,該電腦程式 含有至少一單一存取指令,當執行該單一存取指令時,使 得一資料處理設備根據如申請專利範圍第1 7項所述之方 法操作。 129
TW093124104A 2003-12-09 2004-08-11 A data processing apparatus and method for moving data between registers and memory TWI315034B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0328538A GB2409066B (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
TW200532452A TW200532452A (en) 2005-10-01
TWI315034B true TWI315034B (en) 2009-09-21

Family

ID=30129914

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093124104A TWI315034B (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) US7219214B2 (zh)
EP (1) EP1692612B1 (zh)
JP (1) JP4689621B2 (zh)
KR (1) KR101099467B1 (zh)
CN (1) CN1894659B (zh)
GB (1) GB2409066B (zh)
IL (1) IL175588A (zh)
MY (1) MY137354A (zh)
RU (1) RU2006124538A (zh)
TW (1) TWI315034B (zh)
WO (1) WO2005057405A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI670679B (zh) * 2017-05-15 2019-09-01 美商谷歌有限責任公司 影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US8776049B2 (en) * 2004-10-20 2014-07-08 Seagate Technology Llc Address aligned resource set allocation in a memory space
US8127117B2 (en) * 2006-05-10 2012-02-28 Qualcomm Incorporated Method and system to combine corresponding half word units from multiple register units within a microprocessor
US8392674B1 (en) * 2006-07-20 2013-03-05 Altera Corporation Embedded memory data transformation circuitry
US8417922B2 (en) * 2006-08-02 2013-04-09 Qualcomm Incorporated Method and system to combine multiple register units within a microprocessor
US7493475B2 (en) * 2006-11-15 2009-02-17 Stmicroelectronics, Inc. Instruction vector-mode processing in multi-lane processor by multiplex switch replicating instruction in one lane to select others along with updated operand address
GB2444744B (en) * 2006-12-12 2011-05-25 Advanced Risc Mach Ltd Apparatus and method for performing re-arrangement operations on data
US7627743B2 (en) * 2007-01-12 2009-12-01 Andes Technology Corporation Method and circuit implementation for multiple-word transfer into/from memory subsystems
US20090259672A1 (en) * 2008-04-15 2009-10-15 Qualcomm Incorporated Synchronizing timing mismatch by data deletion
US7996647B2 (en) * 2008-07-23 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
US8484276B2 (en) * 2009-03-18 2013-07-09 International Business Machines Corporation Processing array data on SIMD multi-core processor architectures
US20110082999A1 (en) * 2009-10-07 2011-04-07 Andes Technology Corporation Data processing engine with integrated data endianness control mechanism
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US8549182B2 (en) * 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
JP5760532B2 (ja) * 2011-03-14 2015-08-12 株式会社リコー プロセッサ装置及びその演算方法
WO2013095672A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Multi-register gather instruction
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9348601B2 (en) 2012-12-26 2016-05-24 Intel Corporation Coalescing adjacent gather/scatter operations
US9632781B2 (en) 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
US20140281418A1 (en) * 2013-03-14 2014-09-18 Shihjong J. Kuo Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions
US9424034B2 (en) 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
US9880845B2 (en) 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
JP6253514B2 (ja) * 2014-05-27 2017-12-27 ルネサスエレクトロニクス株式会社 プロセッサ
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
CN104991758B (zh) * 2015-07-27 2017-11-21 中国科学院自动化研究所 一种位域覆盖装置及操作方法
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
US20170192781A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Strided Loads
US20170192783A1 (en) * 2015-12-30 2017-07-06 Elmoustapha Ould-Ahmed-Vall Systems, Apparatuses, and Methods for Stride Load
CN105892993B (zh) * 2016-03-28 2019-02-15 龙芯中科技术有限公司 基于提取插入操作的重组方法、装置及微处理器
US10169040B2 (en) * 2016-11-16 2019-01-01 Ceva D.S.P. Ltd. System and method for sample rate conversion
KR102584031B1 (ko) * 2017-02-23 2023-10-04 에이알엠 리미티드 데이터 처리장치에서의 요소 바이 벡터 연산
KR102235803B1 (ko) 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
US11269638B2 (en) * 2017-06-28 2022-03-08 Texas Instruments Incorporated Exposing valid byte lanes as vector predicates to CPU
US20190004878A1 (en) * 2017-07-01 2019-01-03 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
GB2564696B (en) * 2017-07-20 2020-02-05 Advanced Risc Mach Ltd Register-based complex number processing
US10474600B2 (en) * 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
CN109614362A (zh) * 2019-03-07 2019-04-12 深兰人工智能芯片研究院(江苏)有限公司 一种数据交换方法及电子设备
US11269631B2 (en) * 2020-07-29 2022-03-08 Ghost Locomotion Inc. Extending fused multiply-add instructions
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US11442729B2 (en) 2020-10-26 2022-09-13 Google Llc Bit-packed array processing using SIMD
US20220261509A1 (en) * 2021-02-13 2022-08-18 Intel Corporation Region-based deterministic memory safety
CN113918883B (zh) * 2021-11-03 2022-05-27 海光信息技术股份有限公司 数据处理方法、装置以及设备和计算机可读存储介质
CN115665335B (zh) * 2022-11-14 2023-03-21 合肥奔图智造有限公司 图像处理方法、装置、图像形成设备及介质
CN115880134B (zh) * 2023-01-31 2024-04-16 南京砺算科技有限公司 采用矢量寄存器的常量数据处理方法及图形处理器、介质
CN115826910B (zh) * 2023-02-07 2023-05-02 成都申威科技有限责任公司 一种向量定点的alu处理系统

Family Cites Families (73)

* 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 丸め演算方式
CN1007462B (zh) * 1985-04-01 1990-04-04 坦德姆计算机有限公司 多数据通道的中央处理器(cpu)结构
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
GB9412434D0 (en) 1994-06-21 1994-08-10 Inmos Ltd Computer instruction compression
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
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
GB9509988D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
GB9509983D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Replication of data
GB9509989D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
GB9509987D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
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
CN1153129C (zh) * 1995-09-01 2004-06-09 菲利浦电子北美公司 用于处理器定制操作的设备
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
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
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
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
US6209017B1 (en) * 1997-08-30 2001-03-27 Lg Electronics Inc. High speed digital signal processor
GB2329810B (en) * 1997-09-29 2002-02-27 Science Res Foundation Generation and use of compressed image data
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6223198B1 (en) * 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US6269384B1 (en) * 1998-03-27 2001-07-31 Advanced Micro Devices, Inc. Method and apparatus for rounding and normalizing results within a multiplier
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
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
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
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
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6247116B1 (en) * 1998-04-30 2001-06-12 Intel Corporation Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
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
GB2352536A (en) 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
US6546480B1 (en) * 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6629115B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6748521B1 (en) * 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
EP1261912A2 (en) * 2000-03-08 2002-12-04 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
GB2417111B (en) * 2002-04-22 2006-08-16 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
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI670679B (zh) * 2017-05-15 2019-09-01 美商谷歌有限責任公司 影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法
US10915319B2 (en) 2017-05-15 2021-02-09 Google Llc Two dimensional masked shift instruction
US11544060B2 (en) 2017-05-15 2023-01-03 Google Llc Two dimensional masked shift instruction

Also Published As

Publication number Publication date
US20050125640A1 (en) 2005-06-09
KR20070001902A (ko) 2007-01-04
JP2007535020A (ja) 2007-11-29
GB2409066A (en) 2005-06-15
WO2005057405A1 (en) 2005-06-23
EP1692612A1 (en) 2006-08-23
CN1894659B (zh) 2010-05-26
GB0328538D0 (en) 2004-01-14
JP4689621B2 (ja) 2011-05-25
IL175588A (en) 2010-12-30
MY137354A (en) 2009-01-30
GB2409066B (en) 2006-09-27
RU2006124538A (ru) 2008-01-20
IL175588A0 (en) 2006-09-05
CN1894659A (zh) 2007-01-10
US7219214B2 (en) 2007-05-15
WO2005057405A9 (en) 2006-06-08
EP1692612B1 (en) 2012-12-12
TW200532452A (en) 2005-10-01
KR101099467B1 (ko) 2011-12-28

Similar Documents

Publication Publication Date Title
TWI315034B (en) A data processing apparatus and method for moving data between registers and memory
TWI345703B (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
US20050125635A1 (en) Moving data between registers of different register data stores
US20050125631A1 (en) Data element size control within parallel lanes of processing
US20050125638A1 (en) Data shift operations