TW202107276A - 資料結構處理 - Google Patents

資料結構處理 Download PDF

Info

Publication number
TW202107276A
TW202107276A TW109121041A TW109121041A TW202107276A TW 202107276 A TW202107276 A TW 202107276A TW 109121041 A TW109121041 A TW 109121041A TW 109121041 A TW109121041 A TW 109121041A TW 202107276 A TW202107276 A TW 202107276A
Authority
TW
Taiwan
Prior art keywords
data structure
identifier
processing
metadata
address
Prior art date
Application number
TW109121041A
Other languages
English (en)
Inventor
奈吉爾約翰 史蒂芬斯
大衞翰那 曼塞爾
理查羅伊 格利森斯維特
馬修路西安 伊凡斯
Original Assignee
英商Arm股份有限公司
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股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202107276A publication Critical patent/TW202107276A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • 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/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一種設備包含:指令解碼器及處理電路系統。回應於規定至少一個輸入資料結構識別符及輸出資料結構識別符的資料結構處理指令,指令解碼器控制處理電路系統對至少一個輸入資料結構執行處理操作以產生輸出資料結構。每個輸入/輸出資料結構包含對應於複數個記憶體位址的資料排列。設備包含一或多個資料結構元資料暫存器的兩個或多個集合,每個集合與對應資料結構識別符相關聯並且經指定為儲存指示位址的元資料,用於識別由對應資料結構識別符識別的資料結構的記憶體位址。

Description

資料結構處理
本技術係關於資料處理領域。
一些資料處理應用可需要向資料結構應用處理操作,該等資料結構包含在多個記憶體位址處儲存的記憶體中的資料排列。處理此種資料結構可以用於各種應用,例如,諸如機器學習、訊號處理或壓縮演算法。
至少一些實例提供了一種設備,包含:指令解碼器,用於解碼指令;以及處理電路系統,用於回應於由指令解碼器解碼的指令而執行資料處理;其中:回應於規定至少一個輸入資料結構識別符及輸出資料結構識別符的資料結構處理指令,指令解碼器經配置為控制處理電路系統對由至少一個輸入資料結構識別符識別的至少一個輸入資料結構執行處理操作,以產生由輸出資料結構識別符識別的輸出資料結構;至少一個輸入資料結構及輸出資料結構各者包含對應於複數個記憶體位址的資料排列;以及設備包含一或多個資料結構元資料暫存器的複數個集合,一或多個資料結構元資料暫存器的每個集合與對應的資料結構識別符相關聯並且經指定為保存指示位址的元資料,用以識別由對應資料結構識別符識別的資料結構的複數個記憶體位址。
至少一些實例提供一種資料處理方法,包含:回應於規定至少一個輸入資料結構識別符及輸出資料結構識別符的解碼資料結構處理指令,控制處理電路系統對由至少一個輸入資料結構識別符識別的至少一個輸入資料結構執行處理操作,以產生由輸出資料結構識別符識別的輸出資料結構,至少一個輸入資料結構及輸出資料結構各者包含對應於複數個記憶體位址的資料排列;以及將指示位址的元資料保存在一或多個資料結構元資料暫存器的複數個集合中,一或多個資料結構元資料暫存器的每個集合與對應的資料結構識別符相關聯並且經指定為保存指示位址的元資料,用於識別由對應資料結構識別符識別的資料結構的複數個記憶體位址。
至少一些實例提供一種儲存電腦程式的非暫時性儲存媒體,該電腦程式用於控制主資料處理設備來模擬由目標資料處理設備執行目標程式;電腦程式包含:指令解碼程式邏輯,用於解碼目標程式的指令,其中回應於規定至少一個輸入資料結構識別符及輸出資料結構識別符的資料結構處理指令,指令解碼程式邏輯經配置為控制主資料處理設備對由至少一個輸入資料結構識別符識別的至少一個輸入資料結構執行處理操作,以產生由輸出資料結構識別符識別的輸出資料結構,至少一個輸入資料結構及輸出資料結構各者包含對應於複數個記憶體位址的資料排列;以及暫存器模擬程式邏輯,用於控制對儲存結構的存取來模擬目標資料處理設備的暫存器,暫存器包括一或多個資料結構元資料暫存器的複數個集合,其中一或多個資料結構元資料暫存器的每個集合與對應的資料結構識別符相關聯並且經指定為保存指示位址的元資料,用於識別由對應資料結構識別符識別的資料結構的複數個記憶體位址。
本技術的進一步態樣、特徵及優點將從結合附圖閱讀的實例之以下描述顯而易見。
資料處理設備可具有用於解碼程式指令的指令解碼器及用於回應於由指令解碼器解碼的指令而執行資料處理的處理電路系統。例如,指令解碼器可將解碼的程式指令映射到微操作或其他控制訊號中,該等控制訊號被發送到處理電路系統以控制由處理電路系統執行哪些操作。一些軟體工作負荷可需要處理某些資料結構,該等資料結構包含在記憶體中對應於多個記憶體位址的位置處儲存的資料排列。例如,一些訊號處理或機器學習演算法可包括應用到矩陣的操作,該等矩陣係二維資料排列。此外,一些壓縮演算法可對給定大小的區塊進行操作,並且因此資料結構可例如對應於彼等區塊之一。
當程式設計員寫入高階代碼以實施此種處理應用時,他們可能通常使用程式語言寫入代碼,該程式語言具有定義在此種資料結構的粒度處應用的某些基本操作的功能,諸如矩陣乘法運算或用於實施應用到給定區塊的壓縮演算法的迭代的指令。然而,實際上,當將此種高階代碼編譯為由處理電路系統支援的本機指令集時,此種高階功能可能經常分解為數個獨立載入/儲存指令及算術指令,該等指令應用到資料結構內的獨立資料值,每個資料值對應於單個記憶體位址。例如,矩陣乘法運算可編譯為數個獨立負荷以載入矩陣的獨立元件,並且編譯為乘法指令以各者乘以一對元件,接著編譯為一些儲存指令以將結果儲存回記憶體中的相關位址。可能需要編譯器計算出如何從記憶體中的相關位址編組負荷及儲存或將負荷及儲存編組到記憶體中的相關位址,並且使用純量指令來執行乘法。
一種用於加速資料結構(包含跨越多個位址的資料排列)處理的途徑可以係提供硬體加速器,該硬體加速器具有經設計為加快此種資料結構處理的專用硬體。通常,此種硬體加速器可在晶片上系統中實施為可以經由關於記憶體系統執行的載入/儲存操作存取的裝置。從CPU(中央處理單元)的觀點來看,CPU可簡單地將資料寫入記憶體,該記憶體控制硬體加速器執行資料結構處理並且隨後一旦硬體加速器已完成其操作,CPU則可從記憶體讀回結果,並且隨後繼續對其進行處理。然而,此種硬體加速器途徑(其中由CPU的指令解碼器支援的指令不支援專用資料結構處理指令)可以具有針對一些工作負荷的若干問題。首先,儘管使用硬體加速器可適用於其中資料結構處理表示待執行的大多數操作的工作負荷,針對穿插此種資料結構的處理與其他類型的處理操作的混合工作負荷,使用硬體加速器可能是低效的,因為將存在資料必須在CPU與硬體加速器之間來回傳遞的頻繁情況,例如,若CPU處的指令必須等待從硬體加速器讀回資料結構處理的結果,則此舉可大幅度降低應用的總體效能。另一問題係在多個CPU之間或在相同CPU上執行的多個軟體任務之間共享單個硬體加速器的系統中,給定任務可能難以獲得充分的硬體加速器上的處理時間,這可能再次降低效能。因此,儘管硬體加速器途徑可對於存在相對少的並行使用硬體加速器所期望的任務的情形而言係可接受的,由於競爭使用的數量增加,則此途徑可能無法維持。
由此,在CPU架構本身內為專用資料結構處理指令提供指令解碼器支援可以是有用的,與資料結構內的獨立元件相反,該指令解碼器支援支援在整體資料結構的粒度處執行處理操作。當然,指令解碼器亦可以支援其他指令,該等指令亦允許對獨立元件的操作。然而,藉由定義一些指令,該等指令控制處理電路系統對由指令規定的至少一個輸入資料結構識別符識別的至少一個輸入資料結構執行處理操作以產生由指令規定的輸出資料結構識別符識別的輸出資料結構,其中輸入及輸出資料結構的每一者係跨越多個記憶體位址的資料排列,此舉可以大幅度幫助加速軟體應用的執行,該等軟體應用依賴於對此種資料結構的大量處理,但不具有與如上文論述的硬體加速器相關聯的執行及可擴展性問題。
然而,當將針對資料結構處理指令的指令解碼器支援帶入CPU或其他處理元件時,這可能產生關於上下文切換時延的問題。對於CPU或具有用於解碼程式指令的指令解碼器的其他處理元件而言,以下情況是常見的:當在第一軟體工作負荷與第二軟體工作負荷之間執行上下文切換時,與上下文切換之前正執行的第一工作負荷相關聯的任何架構狀態可需要保存到記憶體,使得第二軟體工作負荷可以覆寫處理元件的暫存器或其他儲存元件中的狀態。藉由將第一工作負荷中的狀態保存到記憶體,這意味著當第一軟體工作負荷稍後需要繼續時,其狀態可以隨後載回並且接著處理輸入工作負荷可以從中斷的點處繼續。
然而,當提供針對資料結構處理指令的支援時,則這可意味著一些實施方式可提供用於儲存處理器本端資料結構的儲存元件,並且當發生上下文切換時,可期望此狀態應當被保存到記憶體。然而,由於資料結構可具有顯著大小(例如,64位元組、256位元組、或甚至1千位元組或更大),並且可存在由處理電路系統的儲存電路系統保存的數個此種資料結構,因此將所有彼狀態保存到記憶體可具有顯著的對上下文切換時延或中斷處置時延的影響。
在下文論述的技術中,具有處理電路系統及支援資料結構處理指令的指令解碼器的設備具備資料結構元資料暫存器的兩個或多個集合,每個集合具有一或多個暫存器。資料結構元資料暫存器每個集合與對應的資料結構識別符(可為輸入資料結構識別符或輸出資料結構識別符)相關聯。一或多個資料結構元資料暫存器的每個集合經指定為保存指示位址的元資料,用於識別對應於由對應的資料結構識別符識別的資料結構的記憶體位址。因此,資料結構元資料暫存器提供關於可以在記憶體中發現對應資料結構的位置的資訊。資料結構元資料暫存器經指定為在架構位準處保存此指示位址的元資料,因此將理解在處理資料結構的同時,對應的指示位址的元資料將能夠在對應的一或多個資料結構元資料暫存器集合內發現。例如,可存在哪些暫存器用作特定資料結構識別符的資料結構元資料暫存器的固定指派。
由於通常當處理器從記憶體載入值時,程式設計員或編譯器可自由選擇處理器的數個通用暫存器的任一者作為定義從其載入資料的位址的暫存器,此途徑係罕見的。此外,在常見載入/儲存架構中,一旦資料已經從給定記憶體位址載入,彼位址資訊通常不保留並且用於計算載入目標位址的暫存器可頻繁地用其他資訊覆寫。因此,大部分處理器架構將不指定某些暫存器作為經指派以在持續的基礎上保存用於對應資料結構的指示位址的元資料的暫存器。
然而,發明者認為藉由提供指定的資料結構元資料暫存器,該資料結構元資料暫存器可以被軟體理解為保存識別資料結構的相關記憶體位址在記憶體位址空間中的位置的元資料,此舉可以大幅度改進上下文切換時延,因為其意味著作業系統或負責控制狀態保存的其他軟體、或者在一些微架構實施方式中提供的用於進行狀態保存的上下文保存硬體可以選擇來僅保存用於自從從記憶體載入起尚未改變的某些資料結構而非需要儲存總體資料結構本身的元資料暫存器。相比之下,若關於從其載入資料結構的對應位址的資訊已經丟失,則上下文保存常式將需要保存整個資料結構以確保當恢復對當前上下文的處理時資料可以復原,因為將需要該等上下文保存常式來復原尚未更新的甚至乾淨的資料結構,因為不知道哪些位址將對應資料結構儲存在記憶體中。由此,在架構位準處提供經指定來保存對應資料結構的指示位址的元資料的指定暫存器提供了可以利用來改進上下文切換時延的架構功能。
處理電路系統可根據指令集架構操作,該指令集架構使軟體能夠針對至少資料結構識別符的子集來識別對應於資料結構識別符的彼子集之一的資料結構是乾淨還是臟的。儘管不必要,但通常可選擇微架構實施方式來提供用於保存資料結構的本端儲存器,該本端儲存器與直接從記憶體存取資料結構相比可以被更快地存取。例如,本端資料結構儲存器可以係在處理器內提供的暫存器或可以係高速暫存記憶體或快取記憶體。若提供任何此種本端資料結構儲存器,則若處理電路系統更新儲存器中保存的給定資料結構,則彼資料結構可係臟的,因為該資料結構可與在記憶體系統中的相關聯記憶體位址處儲存的對應資料結構不同。藉由提供允許對處理電路系統執行軟體程式來決定至少資料結構識別符的子集對應於乾淨還是臟資料結構的架構支援特徵,此舉可以幫助加快在上下文切換時的狀態保存,因為這意味著負責狀態保存的軟體或電路系統可以識別任何乾淨的資料結構不需要被保存到記憶體作為彼狀態保存的部分,作為替代該等乾淨資料結構能夠被稍後從相關聯記憶體位址載回處理電路系統中,該等相關聯記憶體位址由用於乾淨資料結構的資料結構元資料暫存器集合中保存的指示位址的元資料指示。相比之下,由於臟資料結構可與相關聯記憶體位址處的底層資料不同,所以彼等臟資料結構可保存為在上下文切換時執行的狀態保存的一部分。注意到對於臟資料結構而言,在狀態保存期間,此等臟資料結構可能不儲存到由指示位址的元資料識別的實際記憶體位址。替代地,在上下文切換時執行的狀態保存可在與作業系統或負責控制狀態保存的其他軟體相關聯的不同記憶體位址集合處將任何處理器狀態保存到資料結構。
因此,通常,處理電路系統根據指令集架構操作是有用的,該指令集架構具有使軟體能夠識別資料結構識別符的至少一子集是乾淨的特徵。所有資料結構識別符皆可識別為乾淨或臟是不必要的,並且在彼情形下,不知道資料結構是乾淨還是臟的任何資料結構識別符可以經歷上下文切換時的狀態保存。
可能存在指令集架構可以允許軟體識別某些資料結構識別符是乾淨還是臟的數種方式。在一個實例中,輸出資料結構識別符(用於識別回應於資料結構處理指令而產生的輸出資料結構)可在與至少一個輸入資料結構識別符(其識別待用作資料結構處理指令的運算元的至少一個輸入資料結構)完全分離的識別符空間中定義。因此,一或多個資料結構元資料暫存器的至少一個集合可與資料結構識別符相關聯,該資料結構識別符僅可以用於表示輸入資料結構並且不可以用於表示輸出資料結構。藉由在分離的識別符空間中定義用於輸入及輸出資料結構的識別符,這意味著與輸入資料結構識別符相關聯的資料結構可以總是保證是乾淨的,因為此等識別符從未用於將回應於資料結構處理指令而更新的輸出資料結構。利用此途徑,輸入資料結構識別符有效地識別到資料結構處理指令的唯讀輸入,該等唯讀輸入一旦從記憶體載入,就僅用作在記憶體系統中儲存的對應資料結構的複本,而相對於記憶體而言不可以更新。因此,利用此途徑,作業系統或控制狀態保存的其他軟體可以隱含地決定對應於輸入資料結構識別符空間中的輸入資料結構識別符的資料結構的任一者將是乾淨的,並且因此在狀態保存期間該等資料結構不需要被保存到記憶體。替代地,僅從一或多個資料結構元資料暫存器的相關集合保存對應元資料而非保存資料結構本身可以是足夠的。此舉可以大幅度減少在上下文切換時保存到記憶體的資料量,從而改進上下文切換時延。
或者,另一種用於識別資料結構是乾淨還是臟的架構途徑可係提供至少一個架構暫存器以保存至少一個臟指示符,其中每個臟指示符指示對應於給定資料結構識別符的資料結構是乾淨還是臟的。在一些實例中,可提供用於每一個資料結構識別符的臟指示符。或者,可以僅提供用於資料結構識別符的子集的臟指示符。此途徑意味著在分離的識別符空間中分別定義用於輸入及輸出資料結構的資料結構識別符並非必要的。這允許資料識別符的常見集區用於輸入或輸出資料結構,若從一個資料結構處理指令獲得的輸出資料結構需要用作到稍後操作的輸入運算元,則此舉可具有優點。或者,甚至在不將輸入及輸出資料結構識別符分為分離的識別符空間的架構中,提供與輸出資料結構識別符相關聯的一些臟指示符可以隨後允許作業系統作出以下決定:與給定輸出資料結構識別符相關聯的輸出資料結構自從被載入之後是否實際上已更新,這可以提供另外的機會來避免需要將乾淨的資料結構保存到記憶體。用於保存臟指示符的架構暫存器可以與上文描述的資料結構元資料暫存器分離,或者替代地暫存器的常見集合可以保存指示位址的元資料及至少一個臟指示符。例如,用於給定資料結構識別符的臟指示符可以在與用於給定資料結構識別符的指示位址的元資料相同資料結構元資料暫存器集合中保存。
如上文提及,資料結構元資料暫存器的架構提供幫助改進上下文保存的效率,因為若已知資料結構是乾淨的,則該架構提供可允許某些資料結構識別符僅具有作為狀態保存過程的部分保存的對應元資料,並且不是底層資料結構。在許多情形中,狀態保存過程可藉由在處理器上執行的軟體來控制,因此可能不存在用於實際上執行狀態保存操作的任何硬體。例如,當上下文在應用之間切換時,狀態保存可藉由作業系統執行,或者當上下文在虛擬機器或作業系統之間切換時,狀態保存可藉由超管理器執行。儘管如此,上文論述的架構特徵支援由軟體執行的此種上下文保存以加快上下文保存操作。
或者,儘管不必由指令集架構要求,可選擇一些微架構實施方式來回應於上下文保存觸發事件而提供上下文保存電路系統,以將處理器狀態的預定子集保存到記憶體。處理器狀態的預定子集可包括對應於至少一個資料結構識別符(對應於乾淨資料結構)的一或多個資料結構元資料暫存器的集合,但可不包括對應於該至少一個資料結構識別符的資料結構本身。藉由在硬體中提供將一些處理器狀態保存到記憶體的上下文保存電路系統,此舉與單純軟體控制的實例相比可以進一步加快上下文切換,並且允許硬體控制的上下文保存與其他指令的執行並行地繼續,而非延遲進程直到已完成上下文保存。例如,可提供在硬體中提供的一些上下文保存電路系統以將與輸入資料結構識別符或乾淨輸出資料結構識別符相關聯的指示位址的元資料自動保存到記憶體中的位置。
資料結構元資料暫存器可以不同方式實施。在一個實例中,可提供與處理器架構的任何通用暫存器分離的元資料暫存器的專用集合。通用暫存器可用於一般運算元及算術指令的結果,包括整數算術或邏輯指令。通用暫存器亦可用作運算元,用於計算載入或儲存指令的位址。藉由提供資料結構元資料暫存器的專用集合,這意味著即使軟體需要使用通用暫存器來用於其他目的,用於資料結構的指示位址的元資料也可以保留在架構中。或者,另一途徑係不提供專用資料結構元資料暫存器,資料結構元資料暫存器係亦可回應於由處理電路系統上的指令解碼器支援的非資料結構處理指令存取的通用暫存器的固定子集。例如,對於給定資料結構識別符而言,可能隱含著用於對應資料結構的指示位址的元資料在通用暫存器的某一硬佈線子集中保存。此途徑可以減少需要在硬體中提供的暫存器的總數。然而,利用此途徑,軟體可能需要確保從建立用於給定資料結構的指示位址的元資料的時間直到不再需要對應資料結構,其他指令不寫入用作對應資料結構識別符的一或多個資料結構元資料暫存器的集合的通用暫存器的固定子集,以確保在需要位置資訊控制上下文保存及復原的情形中可以保留位址資訊。
在一些實例中,回應於資料結構處理指令,處理電路系統可產生載入請求,用於當給定輸入資料結構不可用於處理電路系統時從記憶體載入給定輸入資料結構。微處理器根據載入/儲存架構操作是常見的,其中用於從記憶體載入資料及將資料儲存回記憶體的載入/儲存指令與對先前從記憶體載入的運算元執行算術、邏輯或其他處理操作的資料處理指令分離。因此,吾人可能期望與資料結構處理指令分離的指令應當針對將資料結構從記憶體載入邏輯儲存器來定義,並且隨後資料結構處理指令不需要執行載入本身。此載入/儲存途徑可能係實施架構的一種方式,該架構包括支援如上文論述的資料結構處理指令。
然而,在另一實例中,資料結構處理指令本身亦可能導致處理電路系統產生載入請求,用於當給定輸入資料結構不可用於處理電路系統時從記憶體載入給定輸入資料結構。在一些情形中,資料結構處理指令亦可以觸發載入請求的產生,用於在待執行的資料結構處理操作取決於輸出資料結構的先前值以及輸入資料結構的值的情形中從記憶體載入輸出資料結構的先前值。例如,處理操作可以是累加運算,其中將由處理輸入資料結構獲得的值加到輸出資料結構的先前值以決定輸出資料結構的新值。因此,在一些情形中,資料結構處理指令可以針對處理操作中涉及的一或多個輸入及輸出資料結構觸發載入請求。
吾人可能認為此途徑是反直覺的,因為與較早指令已從記憶體載入資料結構的情形相比,即將回應於資料結構處理指令時載入資料結構可能延遲待對資料結構執行的處理操作的開始。然而,發明者認為藉由在架構中定義資料結構處理指令,使得當給定輸入資料結構不可用時需要從記憶體載入給定輸入資料結構,此舉在軟體工作負荷之間執行上下文切換時提供了一些優點。上下文切換的以上論述大部分集中在狀態保存態樣,但上下文切換的另一部分係復原狀態來用於待在上下文切換之後執行的輸入上下文。儘管提供如上文論述的資料結構元資料暫存器可以幫助避免需要保存一些資料結構作為狀態保存操作的部分,當彼等資料結構係乾淨時,儘管如此,在從上下文切換返回到給定軟體工作負荷的處理時,可能需要再次載入彼工作負荷所需要的任何資料結構,並且此狀態復原可能花費一些時間,因為資料結構可具有相對大的大小。
在給定資料結構處理指令所需的資料結構由資料結構處理指令之前分離的載入指令載入並且資料結構處理指令本身不具有需要時載入資料結構的能力的架構中,則由於有可能觸發上下文切換的中斷可在載入指令與後續資料結構處理指令之間發生,作業系統或執行狀態復原的硬體電路必須假設:不能保證在上下文切換離開該工作負荷之前在本端儲存器中為給定軟體工作負荷保存的給定資料結構在系統切換回彼工作負荷之後仍存在。由此,在資料結構處理指令本身不具有載入資料結構的能力的架構中,這可意味著對於在上下文切換之後執行的復原後的軟體工作負荷而言,作業系統復原資料結構狀態係必要的。
儘管此舉係完全可行的進行狀態復原的方式,若監控軟體(例如,作業系統或超管理器)必須負責復原資料結構,則此舉具有數個缺點。首先,負責狀態復原的監控軟體可能不具有關於在輸入工作負荷中繼續處理之後實際上將使用哪些資料結構的任何可見性,並且因此作業系統或監控軟體可能浪費時間來復原資料結構,該等資料結構隨後實際上不由輸入工作負荷的任何後續指令使用。相比之下,藉由在輸入(或輸出)資料結構尚不可用時請求在輸入(或輸出)資料結構中載入資料結構處理指令,這意味著作業系統不需要擔憂復原任何資料結構,因為若執行需要特定資料結構的任何後續資料結構處理指令,則彼結構將載入並且處理可以繼續,但從未由軟體再次使用的任何資料結構不復原,並且因此此舉避免在狀態復原期間非必要地招致額外時延。
資料結構處理指令載入不可用資料結構的途徑的另一優點係此舉可提供改進安全性。通常,當監控軟體執行狀態復原時,則該監控軟體可能正在從記憶體的一些區域復原狀態,這不是監控軟體的記憶體分配的部分,而是與其狀態正被復原的執行緒相關聯的記憶體分配的部分。因此,存在惡意應用可以將監控位址的集合載入指示位址的元資料中的風險,監控位址的集合可能隨後藉由狀態復原存取,從而將監控軟體的記憶體分配暴露於側通道攻擊。相比之下,藉由提供載入(或再次載入)給定輸入資料結構(若其尚不可用)的資料結構處理指令,則此舉意味著不需要將指示資料結構位址的元資料用於監控軟體,這可以阻止惡意方攻擊監控軟體的潛在機會。
在一些實施方式中,微架構可能總是推遲載入給定輸入(或輸出)資料結構,直到已接收到相關資料結構處理指令,並且因此可能不提供在解碼/處理給定資料結構處理指令之前載入由彼資料結構處理指令請求的資料結構的任何能力。此外,在一些實施方式中,資料結構處理指令的架構功能可經由直接作用在記憶體中的資料結構上的電路系統實施,該等資料在需要時按需載入處理電路系統中並且隨後寫回記憶體,並且因此可能完全不存在對任何額外本端儲存器的需求。
然而,由於對記憶體的存取可係相對較慢的,可選擇其他實施方式來提供用作與記憶體分離的資料結構儲存電路系統的一些本端儲存器,該本端儲存器與記憶體本身相比可以被更快地存取並且可以提供一些暫時儲存器,用於近期使用的資料結構或即將發生的資料結構處理指令所請求的資料結構。因此,此種實施方式可提供具有檢查電路系統的處理電路系統,該檢查電路系統用於檢查給定資料結構處理指令所需的給定輸入資料結構(或輸出資料結構)在資料結構儲存電路系統中是否已經可用。例如,可提供至少一個可用性暫存器來保存指示與相應資料結構識別符相關聯的資料結構是可用還是不可用的資料結構可用性資訊,並且處理電路系統可基於彼資料結構可用性資訊來決定給定輸入資料結構的可用性。可用性暫存器可以係位址元資料暫存器本身的部分或可以係暫存器的單獨集合。利用此途徑,若執行預載入操作以在執行給定資料結構處理指令之前載入資料結構,則可設定可用性資訊以指示對應資料結構已經可用,並且此舉可指示檢查電路系統不必回應於資料結構處理指令而從記憶體再次載入對應資料結構。因此,在一些實例中,當在資料結構儲存電路系統中尚未保存時或當遇到資料結構處理指令之前尚未請求從記憶體載入彼資料結構時,處理電路系統可決定給定輸入資料結構或輸出資料結構不可用。提前預載入資料結構可以回應於由指令解碼器解碼的明確載入或預載入指令而進行,或藉由預載入電路系統進行,該預載入電路系統可作出以下預測:哪些資料結構為未來指令所需(例如,基於追蹤關於執行相同代碼的過去實例的歷史行為)。
在提供與記憶體分離的資料結構儲存電路系統的系統中,指令解碼器可回應於資料結構處理指令而控制處理電路系統從資料結構儲存電路系統讀取至少一個輸入資料結構,並且將輸出資料結構寫入或更新到資料結構儲存電路系統。資料結構儲存電路系統可以不同方式實施。在一些情形中,資料結構儲存電路系統可係架構可定址暫存器,該等暫存器可以明確地由軟體指令引用以讀出對應資料結構。或者,資料結構儲存電路系統可包含非架構可定址暫存器,對於用指令集架構編譯而言該等暫存器可能不必要,但可視情況提供該等暫存器來由處理系統的特定微架構實施方式的設計者選擇。或者,資料結構儲存電路系統可以包含高速暫存記憶體或快取記憶體。
在一些情形中,當在資料結構儲存電路系統中保存給定資料結構時,處理電路系統能夠以與將資料寫入資料結構儲存電路系統的序列不同的序列從給定資料結構讀取資料。此舉可以提供處理不同資料結構格式(資料結構可以該些格式儲存在記憶體中)的靈活性。例如,在資料結構係矩陣或其他二維資料排列的情況下,資料可以逐行或逐列模式儲存在記憶體中,並且提供具有讀取/寫入埠的資料結構儲存電路系統是有用的,該等讀取/寫入埠支援以逐行或逐列模式讀出資料或將資料寫回。
至於資料結構處理指令本身,可定義用於與資料結構互動的數個其他指令。一個實例可係規定目標輸入資料結構識別符或目標輸出資料結構識別符的資料結構載入指令,回應於該資料結構載入指令,指令解碼器控制處理電路系統將從記憶體載入的資料結構寫入資料結構儲存電路系統。在其中資料結構處理指令本身不係給定載入能力的架構中,此種資料結構載入指令可以係特別有用的。在此情形中,可能期望在執行資料結構處理指令之前,軟體應當首先含有用於載入所涉及的相關輸入或輸出資料結構的一或多個資料結構載入指令。
取決於實施資料結構元資料暫存器的方式,資料結構載入指令可以不同方式實施。在一個實例中,資料結構載入指令可從記憶體位址載入資料結構,該資料結構從一或多個資料結構元資料暫存器的集合中保存的指示位址的元資料導出,對應於待載入的資料結構的目標輸入或輸出資料結構識別符。例如,資料結構載入指令可以規定一或多個通用暫存器,該等通用暫存器提供目標位址識別資訊來用於識別將從其載入資料結構的位址,並且除了觸發處理電路系統將載入的資料結構寫入資料結構儲存電路系統之外,資料結構載入指令亦可控制處理電路系統基於在指令或資料結構載入指令的另一性質引用的通用暫存器中規定的目標位址識別資訊,來更新用於正載入的資料結構的一或多個資料結構元資料暫存器的相關集合。此途徑可提供在元資料暫存器中使用不同於由資料結構載入指令規定的明確位址識別資訊之外的格式表示位址識別元資料的靈活性。例如,不是保存實際的位址識別資訊本身,而是寫入資料結構元資料暫存器中的資料結構載入指令的性質可以包含關於哪些通用暫存器由資料結構載入指令規定的指示、或替代地指示資料結構載入指令的位址的程式計數器,這可允許記錄更緊湊形式的元資料以減小資料結構元資料暫存器的大小。記錄規定目標位址識別資訊的暫存器或資料結構載入指令的程式計數器可足以允許作業系統或執行狀態復原的其他軟體復原足夠的關於與給定資料結構相關聯的位址可以恢復的資訊。例如,由於通用暫存器亦將在上下文切換時復原,則簡單地記錄對哪些暫存器含有位址資訊的引用可係充分的。此外,若記錄資料結構載入指令的程式計數器,則此舉可以允許軟體或指令解碼電路元件獲得所引用指令,解碼該指令以識別由其引用的通用暫存器,並且隨後使用彼等通用暫存器中的經復原狀態來識別目標位址識別資訊。因此,資料結構元資料暫存器明確地直接指示識別位址所需的位址資訊片段可能不必要,因為此舉可以經由其他參數來間接地識別。
或者,不同於提供觸發資料結構載入的具體指令,在其他架構實施方式中,架構可定義規定目標輸入資料結構識別符的準備載入指令。回應於準備載入指令,指令解碼器控制處理電路系統基於下列之一來更新對應於目標輸入資料結構識別符的一或多個資料結構元資料暫存器的集合:由準備載入指令隱含或明確地規定的目標位址識別資訊、或準備載入指令的性質。再者,此性質可以係程式計數器或由準備載入指令規定的通用暫存器的列表。此種準備載入指令在支援具有載入功能的資料結構處理指令的系統中可以是特別有用的,因為若需要的話,資料結構處理指令可以從記憶體載入資料結構,則不需要較早指令執行載入作為強制架構特徵。替代地,準備載入指令可簡單地解釋為用於使目標位址識別資訊的某一集合與特定輸入或輸出資料結構的資料結構識別符相關聯的指令。此舉可設置後續資料結構處理指令可從其載入相關資料結構的位址。
儘管在架構位準處,準備載入指令實際上載入與目標輸入資料結構識別符相關聯的資料結構係不必要的,視情況在微架構位準處,系統設計者可在任何情形下選擇以提供處理電路系統,作為對準備載入指令的回應,該處理電路系統產生載入請求,用於請求將與目標輸入資料結構識別符相關聯的資料結構從基於目標位址識別資訊決定的記憶體位址傳遞到資料結構儲存電路系統。亦即,儘管因為載入將由後續資料結構處理指令進行,不強迫準備載入指令執行載入,在準備載入指令時執行以產生載入請求可係更有效的,這是因為此舉允許更早發起載入。因此,準備載入指令可以有效地用作預載入指令,但儘管如此,若在執行準備載入指令之後而在執行後續資料結構處理指令之前中斷處理,則資料結構處理指令仍可再次載入所請求的輸入資料結構。此舉可用於避免作業系統或進行狀態復原的其他軟體必須負責復原資料結構。
可支援規定目標輸出資料結構識別符的準備儲存指令,回應於該準備儲存指令,指令解碼器可控制處理電路系統基於由準備儲存指令隱含或明確地規定的目標位址識別資訊或準備儲存指令的另一性質來更新對應於目標輸出資料結構識別符的一或多個資料結構元資料暫存器的集合。準備儲存指令具有將位址識別元資料附接到特定輸出資料結構識別符的功能。
上文論述的技術可以應用於各種不同類型的資料結構。在一些實例中,資料結構可包含二維資料排列,其中提供了在二維結構中具有一些有序排列的數個資料元件。例如,資料結構可係矩陣或其他形式的二維結構。在資料結構係矩陣的情形中,資料結構處理指令可包括規定兩個輸入資料結構識別符的矩陣乘法指令,對此處理操作包含對由兩個輸入資料結構識別符識別的兩個輸入資料結構執行以產生輸出資料結構的矩陣乘法運算。矩陣乘法指令可以係矩陣乘法及累加指令,其中將兩個輸入矩陣相乘的結果加到輸出矩陣的先前值以產生針對輸出矩陣的新值。此外,可以定義將運算應用到輸入矩陣的其他形式的矩陣乘法指令。對於一些領域而言,諸如在機器學習中,例如,其中神經網路可能需要大量矩陣乘法來使定義神經網路模型的權重與輸入變量相乘用於訓練網路或使用該模型作出預測,提供對在CPU本身內執行矩陣運算的本機處理器支援可以係非常有用的。在機器學習演算法中,矩陣乘法十分常見,並且因此加快此種運算可以大幅度改進基於機器學習的軟體的效能。
在一些實例中,資料結構可係對應於記憶體系統內的記憶體位址的數個不連續區塊的結構。因此,不同於在記憶體位址空間中的記憶體位址的單個連續區塊中儲存的資料結構,該資料結構可跨越在記憶體位址空間的相異的不相鄰區域處的數個區塊。對於矩陣實例而言,其中實際上表示神經網路的矩陣的總體大小例如可實際上大於在指令集架構中針對給定資料結構定義的單元大小,此舉可以係特別有用的。例如,資料結構可以被定義為對應於某一大小的矩陣,諸如4x4、8x8、16x16等等(或替代地可支援具有不同數量的行及列的矩形矩陣),但當軟體演算法需要在較大矩陣大小下應用矩陣計算時,則該等資料結構可被分解為在指令集架構的指令中支援的粒度處的獨立運算。這可意味著當將較大矩陣作為整體儲存在記憶體中,使得每行處於記憶體位址空間中的相鄰位址處,並且一行依次跟隨位址空間內的先前行的元件,或替代地逐列儲存矩陣,使得每列佔據記憶體中的連續位址的區塊,並且一列依次跟隨先前列的位址時,這將意味著當資料結構處理指令對彼較大矩陣的獨立部分(該獨立部分可以被認為係矩陣內的獨立瓦塊)執行操作時,則該瓦塊的行或列將對應於記憶體位址的不連續區塊的數量。藉由提供指令支援來處置橫跨位址空間的不連續部分的此種瓦塊,這使得能夠更加直接地將矩陣運算應用到更任意大小的矩陣,該矩陣可能大於或小於指令集架構中支援的瓦塊大小。
對於對應於記憶體位址的數個不連續區塊的資料結構而言,指示位址的元資料可以包含數個資訊片段並且可採取數種形式。例如,指示位址的元資料可包含下列的至少一者:開始位址資訊,指示記憶體位址的複數個不連續區塊的至少一個的開始位址;偏移資訊,指示在記憶體位址的複數個不連續區塊的開始位址之間的分離;第一大小資訊,指示記憶體位址的每個不連續區塊的大小;以及第二大小資訊,指示有多少形成資料結構的記憶體位址的不連續區塊。此等類型的資訊可能足以識別較大矩陣內的任何瓦塊,其中假設在記憶體位址空間內逐行或逐列儲存較大矩陣,並且瓦塊對應於不相鄰的位址空間內的獨立條帶。開始位址資訊可以例如指示瓦塊的第一行或第一列的開始位址,而偏移資訊例如指示在相應行或列的開始位址之間的步幅。第一及第二大小資訊可用於處理總體較大矩陣具有數個行或數個列的情形,該等數個行或數個列不係獨立瓦塊中的行或列的數量的準確倍數,使得當瓦塊到達較大矩陣的邊緣時,則第一及第二大小資訊可以用於遮掉延伸超出矩陣末端的位址。第一大小資訊可指示記憶體位址的每個不連續區塊的大小,並且第二大小指示可指示形成資料結構的記憶體位址的不連續區塊的數量。取決於資料結構是逐行還是逐列儲存,則第一大小資訊之一有效地指示在待處理的資料結構中列的數量,並且其他第一大小資訊指示行的數量,但任一方式都可以。第一及第二大小資訊可以不同方式編碼。在一個實例中,第一或第二大小資訊可以編碼為數值,該數值指示行或列的數量的計數,例如,第一大小資訊可指示在記憶體位址的不連續區塊內的資料元件的數量,並且第二大小資訊可指示在整個資料結構上的不連續區塊的數量。或者,第一及/或第二大小資訊可以編碼為遮罩,例如,位元映射,其中位元1(或0)表示形成資料結構的部分的記憶體位址的彼不連續區塊內的主動元件,並且遮罩內的位元0(或1)指示不形成資料結構的部分的不連續區塊內的元件。此舉可以隨後用於確保任何資料結構處理指令僅應用到記憶體位址的不連續區塊的部分,該部分表示應當由獨立資料結構處理指令處理的總體較大的資料結構的部分。
除了開始位址、偏移、以及第一及第二大小資訊之外,亦可能記錄關於資料結構的其他資訊,諸如指示資料結構內的獨立資料元件的資料元件大小的元件大小資訊。例如,一些形式的資料結構處理指令能夠支援不同資料元件大小。
或者,替代直接指示開始位址資訊、偏移資訊、或第一及第二大小資訊,其他實例可提供指示位址的元資料,該指示位址的元資料間接地識別此資訊,例如,經由識別保存至少一個此等參數的通用暫存器的一或多個暫存器識別符及/或識別規定保存一或多個此等參數的暫存器的指令位址的指令位址指示。如上文提及,對於需要將資料結構復原到處理電路系統的儲存電路系統以識別在記憶體中可以發現資料結構的位置的軟體或電路系統而言,暫存器識別符或指令位址指示(例如,程式計數器)可能是足夠的。
在一些情形中,資料結構可以係三維或階數大於3的多維資料結構,因此資料結構不必係二維資料結構。大體上,資料結構可以係資料元件的某一階數的排列。
或者,資料結構的另一實例可以簡單地係一維資料元件串流,而不具有二維或多維排列,諸如呈表或矩陣形式。上文論述的技術亦可以用於提供一些相當大小的資料串流的資料結構。由於資料結構可具有相對大的大小,這可帶來關於上下文切換時延的困難,並且因此上文論述的技術可以用於解決此問題。64位元組的資料結構可例如對應於32位元元件的4x4矩陣。在其他實例中,輸出資料結構可具有至少256位元組(32位元元件的8x8矩陣)或1千位元組(32位元元件的16x16矩陣)的大小。將瞭解,其他實例可以使用不同數量位元(諸如16位元或64位元)的資料元件大小,並且在此情形中資料結構大小可再次變化。然而,大體上,當輸出資料結構具有至少64位元組的大小時,則這開始帶來關於上下文切換時延的相當大困難,並且因此使用指示位址的元資料作為減少在上下文切換時需要保存及復原的資料量的方式是有用的。
注意到,輸入資料結構不需要一定具有與輸出資料結構相同的大小。例如,當執行矩陣乘法運算時,由於2 N位元值的乘法可產生2N-位元結果,可能產生與輸入資料結構相比較大大小的輸出資料結構。或者,例如藉由截斷或捨入乘法結果以擬合與輸入相同數量的位元,一些實施方式可產生與輸入相同大小的輸出資料結構。
在一些實例中,不同於視情況使用來自資料結構元資料暫存器的指示位址的元資料來控制在上文論述的可選擴展中論述的從記憶體載入輸入或輸出資料結構,由處理電路系統回應於資料結構處理指令而執行的資料結構處理操作可獨立於指示位址的元資料。亦即,用於將至少一個輸入資料結構及輸出資料結構的先前值映射到輸出資料結構的新值的功能可以獨立於指示位址的元資料。
然而,在其他實例中,處理電路系統可回應於資料結構處理指令,取決於在一或多個資料結構元資料暫存器的相關集合中保存的指示位址的元資料而改寫對至少一個輸入資料結構執行的處理操作,該一或多個資料結構元資料暫存器對應於至少一個輸入資料結構識別符或輸出結構識別符。例如,若指示位址的元資料包括將資料結構的大小限制在特定維度中的第一或第二大小資訊,則此舉可以用於減少對輸入資料結構的資料元件執行的乘法數量,例如,以節省功率或增加效能。例如,當處理具有基於第一及第二大小資訊遮掉的一些不活動元件的資料結構時,電路邏輯(若處理所支援的最大大小的資料結構,則該電路系統邏輯將為主動的)可以藉由功率閘控而成為不活動的。此外,若以多個步驟執行處理操作,則基於第一及第二大小資訊,可能不需要一些彼等步驟。
第1圖示意性示出了資料處理系統2的實例,該資料處理系統包含共享對記憶體系統8的存取的數個主裝置4、6。由主裝置4、6發佈的記憶體事務傳遞到互連10,該互連將事務路由到記憶體系統並且亦可管理在相應主機處快取的資料之間的相干性。主機例如可包含一或多個中央處理單元(central processing unit; CPU) 4、能夠執行指令的其他主裝置(諸如圖形處理單元)、或其他裝置6,該等其他裝置可能不具有指令執行能力,但可執行某些專用功能,諸如控制對網路的存取或用作加速某些處理功能(諸如訊號處理或矩陣乘法)的硬體加速器。
每個CPU 4可具有用於解碼從快取記憶體或記憶體擷取的程式指令的指令解碼器12、以及用於回應於由指令解碼器12回應於解碼後的指令產生的控制訊號而執行資料處理操作的處理電路系統14。可提供暫存器16,用於儲存待執行的指令的運算元並且用於儲存由處理電路系統14產生的結果。CPU可具有一或多個快取記憶體18,用於從記憶體系統快取資料、指令或控制資訊(諸如頁表資料)。視情況,CPU可具有上下文保存電路系統20,用於處置上下文切換時的狀態保存,儘管此功能亦可以藉由在CPU 4上執行的軟體來執行。儘管將第1圖中的兩個CPU 4圖示為具有等效部件,實際上不必所有CPU皆係相同的,並且一些系統可具有不對稱CPU,該等不對稱CPU具有不同特性,諸如結合較高效能CPU與較低效能CPU來用於折衷處理效能與功率消耗。此外,一些系統可具有兩個以上的CPU。
一些資料處理應用可涉及處理獨立資料值,其中資料值從特定位址載入,並且由處理電路系統14執行的一些指令處理以產生寫入暫存器16的結果,並且隨後一旦結果不再保存於暫存器16中,則將該等結果寫回快取記憶體18或記憶體8。
然而,其他處理演算法可對較大資料結構進行操作,該等資料結構包含形成資料結構的元件的數個分離的資料值。例如,資料結構可以係相當大小的一維範圍的資料串流,例如,諸如待壓縮的資料區塊。或者,資料結構可係二維或多維矩陣或表,對此處理操作將應用到作為整體的矩陣/表。
如第2圖所示,此種資料結構的一個實例可係矩陣(在此實例中為二維矩陣)。矩陣處理可以用於某些處理演算法,諸如一些訊號處理應用或機器學習應用。例如,機器學習模型(諸如神經網路)可使用矩陣定義,該等矩陣指示定義模型特性的權重且可藉由權重乘以輸入來應用到輸入集合。因此,基於神經網路的處理及其他機器學習應用可包括大量的矩陣乘法運算。儘管可以提供用於執行此種矩陣乘法的硬體加速器6,與硬體加速器的互動可要求CPU 4將資料寫入某些記憶體位置以配置硬體加速器,並且隨後使用來自記憶體的讀數從硬體加速器讀回結果,並且若存在其中矩陣乘法運算需要與對CPU本身執行的其他運算穿插的應用,則此舉可能會降低效能。此外,將硬體加速器用於矩陣運算可能在系統中導致困難,其中多個CPU 4或軟體執行緒需要共享對硬體加速器6的存取。由此,可能期望在CPU 4內提供對指令的支援,該等指令可以執行矩陣或其他資料結構(作為由指令解碼器12支援的本機指令集的部分)的處理,而非需要使用硬體加速器6。
第2圖圖示了可以提供用於保存此種矩陣的邏輯儲存結構30的實例。例如,儲存結構30可以係CPU內的一些暫存器16或可以作為微架構儲存元件提供,諸如CPU 4內的非架構授權的暫存器或快取記憶體。此外,邏輯儲存結構30可以在互連10內。儲存結構30可具有充分的儲存某一給定大小的矩陣的容量。在此實例中,矩陣係NxN方形矩陣,其中N係16,但將瞭解,亦可以支援其他大小的矩陣。儲存結構30可具有充分的讀取及寫入埠,使得可能以與將資料元件寫入儲存結構30的序列不同的資料元件序列從儲存結構讀取矩陣。例如,矩陣可讀取為列或行。這解釋了以下事實:矩陣可以不同格式儲存在記憶體中,其中列佔據連續記憶體位址的區塊並且一列依次跟隨先前列的位址,其中相同行內的元件在位址空間內的不連續位址處(此途徑可被稱為列主導定址),或相同行內的元件可儲存在連續記憶體位址的區塊中,一行可依次跟隨先前行的位址,並且在此情形中,一列內的元件可處於分配到每行的部分內的不連續位址處(此途徑被稱為行主導定址)。由於不同軟體演算法可使用行主導及列主導途徑中的不同途徑,為此等途徑的任一者提供硬體支援可以是有用的。藉由提供額外的讀取埠,使得矩陣的元件可以一次讀出一行或一次讀出一列,此舉允許矩陣的動態轉換,使得在記憶體列主導中儲存的矩陣可以讀出行主導或反之亦然,這可以大幅度改進與不同類型的軟體的相容性並且避免需要執行額外指令來改組向量元件以將列主導矩陣轉換為行主導形式或反之亦然。
如第3圖的實例中圖示,資料結構儲存電路系統31可具備充分的儲存空間,用於保存若干矩陣或矩陣的部分(瓦塊)。在後續描述中,使用術語「瓦塊」,該術語指記憶體中儲存的矩陣的NxN部分。當然,若待處理的記憶體中的矩陣本身具有維度NxN,則瓦塊可實際上對應於整個矩陣。
資料結構儲存電路系統31可包含第2圖所示的儲存結構30的數個實例。例如,如第3圖所示,儲存電路系統31可具有充分的用於一次保存8個NxN瓦塊的容量。所提供的8組儲存區域可分為用於保存矩陣乘法或其他算術運算的輸入瓦塊的4個區域30 A0、A1、B0、B1以及用於保存矩陣乘法運算的輸出的4個區域C0至C3。
儘管另一途徑可為僅提供3個瓦塊儲存區域30(例如,用於儲存輸入瓦塊A0、B0及輸出瓦塊C0),使得可以一次執行單個矩陣乘法,此途徑會需要針對每個矩陣乘法運算執行至少2次從記憶體載入瓦塊,這是因為到每個矩陣乘法的輸入必須共享相同的2個輸入瓦塊暫存器。相比之下,藉由在本端儲存器31中提供至少8個瓦塊儲存區域30,這意味著用於載入輸入瓦塊A0、A1、B0、B1的從記憶體的4次載入可以跨4個矩陣乘法運算分攤,因為跨多個乘法運算共享輸入瓦塊是常見的(例如,C0=A0*B0,C1=A0*B1,C2=A1*B0,C3=A1*B1),並且此舉可藉由將載入比例減小到所需倍數來增加效能。由於其可載入相對大量的資料,載入瓦塊可係相對耗時的,因此此舉對效能而言意義重大。例如,若瓦塊的每個資料元件係32位元值並且N=16,則每個瓦塊可對應於1千位元組的資料。
儘管提供邏輯儲存區域30用於處置多於一個乘法運算的相同途徑可以擴張到更大數量的乘法,藉由在儲存電路系統31中提供額外的儲存容量用於輸入及輸出瓦塊,在增加的效能與為CPU 4內增加數量的矩陣提供儲存電路系統的額外負擔之間可存在平衡,並且因此如第3圖所示的具有8個輸入及輸出矩陣的途徑係在效能與面積成本之間更佳平衡的。儘管如此,若需要,不同數量的瓦塊可以保存在儲存結構31中。
第3圖所示的瓦塊儲存區域30的每一者可保存表示如第4圖所示的較大矩陣50內的瓦塊40的資料。待處理的總體矩陣50可大於由CPU 4中的指令支援的N乘N瓦塊40的大小。因此,對較大矩陣50執行的矩陣乘法可能需要被分解為對矩陣的獨立瓦塊40執行的獨立指令。因此,為了識別矩陣50的給定瓦塊40駐留在記憶體中的位置,可定義數個位址識別參數。較大矩陣50的資料元件可儲存在記憶體位址空間的連續區塊中,並且在此實例中矩陣經行主導儲存,使得矩陣的第一行在連續區塊中的記憶體位址處儲存,其中矩陣的左上元件在最低記憶體位址處並且隨後彼頂行的後續元件在記憶體中連續增加的記憶體位址處。當到達第一行的末端時,則其後的下一位址將對應於矩陣的第二行的最左元件的資料元件,並且以此類推,使得由於矩陣的記憶體位址的序列增加,這對應於在連續行中讀出的元件。當然,矩陣亦可以經列主導儲存,並且在此情形中,序列會逐列而非逐行繼續。
因此,為了識別矩陣的獨立瓦塊40,可定義若干參數,包括指向瓦塊的開始位址的基址42,步幅參數44,該步幅參數有效地指示較大矩陣50的一行或列的大小,並且表示在瓦塊40的一行(或若瓦塊經列主導儲存則為列)與下一行(或列)的開始位址之間的差異。此外,水平大小及垂直大小資訊46、48可定義為指示瓦塊40的水平及垂直範圍。通常,瓦塊可普遍佔據所允許的最大大小(例如N乘N)以使用完整的處理器能力。然而,在第4圖的右下方圖示的實例中,一旦瓦塊接近較大矩陣結構50的邊界,則瓦塊可部分重疊較大矩陣50的邊緣,並且可能不期望處理位於較大矩陣結構50外側的部分49。因此,水平及垂直大小參數46、48可用於限制載入CPU 4的瓦塊儲存區域30中的資料的部分(或限制在矩陣處理指令中處理的部分)。例如,水平大小及垂直大小可編碼為行或列計數,或者編碼為遮罩,該遮罩係位元映射,其中位元1指示矩陣的有效元件,並且位元0指示無效元件,或反之亦然。
第5圖圖示了CPU 4內的暫存器16的子集的實例。將瞭解,這不圖示可提供的所有暫存器。暫存器16包括通用暫存器(general purpose register; GPR) 60的集合,該等通用暫存器用於運算元的一般儲存及由處理電路系統14處理的指令的結果。可提供某一數量的通用暫存器,例如,32或64。例如,整數算術指令可引用其運算元的通用暫存器,並且將其結果寫回通用暫存器。
CPU亦可具有提供儲存區域30的資料結構儲存器31,該等儲存區域用於保存如第3圖中的數個輸入及輸出資料結構A0至C3。例如,此資料結構儲存器31可以係架構識別的暫存器的集合、非架構識別的暫存器的集合或快取記憶體18的部分。
CPU的暫存器16亦包括數個暫存器,該等暫存器提供關於資料結構儲存器31中的資料結構的資訊。每個資料結構可與資料結構識別符相關聯,例如,指示A0、A1、B0、B1及C0至C3可對應於相應資料結構識別符(將瞭解,此處提供A、B、C注釋用於理解,以分別區分第一/第二輸入及輸出識別符,並且該注釋可在識別符中隱含,而非明確編碼)。因此,暫存器可包括資料結構元資料暫存器62的集合,該等資料結構元資料暫存器經指定用於保存指示位址的元資料,該指示位址的元資料可以用於識別將對應資料結構儲存在記憶體中的位址。資料結構元資料暫存器62可以係與GPR 60分離的暫存器的專用集合,或者可以係如第5圖中的虛線圖示的GPR的指定子集。此等替代選項將在下文關於第8圖及第9圖更詳細論述。
資料結構元資料暫存器62可分為多個暫存器集合,各者對應於一個資料結構(瓦塊)。對給定暫存器集合而言,這可包括單個暫存器或者兩個或多個暫存器。在一個實例中,針對給定資料結構記錄的元資料集合可包括上文針對第4圖論述的參數42、44、46、48。或者,資料結構元資料可以另一方式記錄,諸如藉由識別保存此等參數的GPR 60的集合(在資料結構元資料暫存器62與GPR 60分離的實施方式中)或識別規定保存此等參數的暫存器的指令的程式計數器位址。將瞭解,對於不同於矩陣的資料結構類型而言,可提供不同的位址參數集合作為元資料。
視情況,暫存器16亦可以包括提供關於資料結構的資訊的額外暫存器,諸如資料結構可用性暫存器64,該等資料結構可用性暫存器指示對於給定資料結構識別符而言,對應資料結構在資料結構儲存器31中是否可用或是否需要從記憶體載入。此外,暫存器可以包括資料結構臟指示符暫存器66,該等資料結構臟指示符暫存器指示對於給定資料結構識別符而言,在資料結構儲存器31中儲存的對應資料結構是乾淨(與記憶體中儲存的對應資料結構一致)還是臟的(與記憶體中儲存的底層資料結構不同)。此等額外暫存器64、66均係可選的,並且在一些情形中,不將該等額外暫存器提供為與資料結構元資料暫存器62分離,在暫存器64、66中的資訊可以替代地在元資料暫存器本身的相關集合內編碼。
為了幫助加快上下文保存操作,在架構位準處提供使軟體能夠決定給定資料結構識別符對應於乾淨還是臟資料結構的特徵可以是有用的。如第6圖所示,一種可在一些情形中使資料結構臟指示符暫存器66不必要的途徑可以是與用於輸出資料結構C0至C3的輸出資料結構識別符空間72處相比,用分離的輸入資料結構識別符空間70中的識別符來定義輸入資料結構A0、A1、B0、B1。例如,識別符70的一個集合可用於輸入資料結構,並且識別符72的另一集合用於輸出資料結構。在第6圖的實例中,到矩陣乘法運算的「A」及「B」輸入可在分離的輸入資料結構識別符空間70-A、70-B中定義,這可以幫助減少在硬體中需要的瓦塊讀取/寫入埠的數量。然而,另一途徑可以是用常見的輸入資料結構識別符空間內的識別符分配所有輸入資料結構。
因此,當定義來自分離的識別符空間的識別符時,這意味著相應識別符空間中的對應資料結構不能共享相同的識別符(或從指令編碼的其他態樣中隱含,諸如用於含有識別符的欄位,正引用相應識別符空間70-A、70-B的該識別符)。藉由分離用於輸入及輸出資料結構的識別符空間,這意味著可以假設任何輸入資料結構識別符與乾淨資料結構有關,因為不可能將具有更新值的輸出資料結構從輸入資料結構識別符空間70寫入與輸入資料結構識別符相關聯的區域中。此舉可以用於執行上下文保存的軟體或電路元件,因為隨後可以保證與輸入資料結構識別符空間70中的輸入資料結構識別符相關聯的所有資料結構將總是乾淨的,並且因此這意味著資料結構儲存器31中的對應資料結構將簡單地為記憶體中的相同資料的複本,並且因此在上下文切換時不需要保存回記憶體。替代地,僅保存提供關於相關資料在記憶體中的位置的資訊的資料結構元資料暫存器62可以是充分的,由於這可能足以用於當處理之後需要繼續時上下文復原的軟體再次從記憶體載入相關資料結構。
視情況,如第6圖中的虛線圖示,可以提供用於儲存臟指示符的一或多個資料結構臟暫存器66,該等臟指示符指示與相應輸出資料結構識別符相關聯的資料結構是乾淨還是臟的。此舉可允許上下文保存程序決定省去將任何乾淨的輸出資料結構保存到記憶體,以進一步加速上下文保存。
第7圖圖示了處理指令序列的第一實例,該指令序列包括用於在總體資料結構的粒度處執行處理操作的資料結構處理指令80。在此實例中,資料結構係如上文論述的矩陣的瓦塊,並且資料處理指令80係矩陣乘法及累加指令,該等指令規定輸出資料結構識別符Ci及兩個輸入資料結構Aj、Bk,並且控制處理電路系統14產生結果Ci'=Ci+Aj*Bk。在此實例中,i可係在0與3之間的任何值,並且j及k可係0或1(給定針對如上文論述的資料結構儲存器31提供的儲存區域的數量),但在其他實例中,若存在額外儲存器,則識別符可具有較大值(若必要的話)。在此實例中,A、B、C指示係隱含的,因為該等指示可由指令編碼內的運算元識別符的位置假設。
在第7圖的實例中,資料結構元資料暫存器62係通用暫存器60的固定子集。對於每個輸入資料結構識別符而言,GPR 60的對應子集被分配為表示用於彼資料結構識別符的元資料暫存器62。例如,暫存器X0至X3可表示用於輸入資料結構A0的元資料暫存器集合,並且類似地暫存器X4至X7、X8至X11及X12至X15可提供用於輸入資料結構A1、B0、B1的元資料,(將瞭解,使用4個暫存器來提供元資料係一個實例-其他實例可將元資料壓縮到較少的暫存器中)。元資料暫存器62的每個集合可包括一或多個暫存器,並且可提供用於允許軟體決定對應於對應資料結構的位址集合的資訊,例如,如上文論述的基址42、步幅44、以及水平及垂直大小參數46、48。提供對應於輸出資料結構的元資料暫存器是不必要的,儘管亦可以提供。
如第7圖所示,指令解碼器12可支援資料結構載入指令82,該資料結構載入指令規定輸入資料結構識別符並且控制處理電路系統14將資料結構從位址集合載入與規定的輸入資料結構識別符相關聯的資料結構儲存器31的區域,該位址集合從與規定的輸入資料結構暫存器相關聯的GPR的對應固定子集導出。例如,對於第7圖所示的第一載入指令而言,輸入資料結構識別符係A0,並且因此可能隱含著用於識別記憶體中的對應資料結構的位址的位址資訊應當從GPR X0至X3的固定子集取得,該等GPR經指定為保存用於輸入資料結構A0的位址資訊。指令序列可包括若干載入指令以基於GPR的相應子集中的資訊載入相應輸入資料結構A0、A1、B0、B1。視情況,若用於累加運算的輸出資料結構的先前值尚未保存在資料結構儲存器31中,則亦可存在用於載入輸出資料結構中的進一步負荷。若不存在用於輸出資料結構的永久指派的元資料暫存器,則此等輸出資料結構載入指令可需要明確地引用定義用於對應資料結構的位址資訊的通用暫存器。或者,可能不需要用於輸出資料結構的此種載入指令,因為可簡單地假設在資料結構儲存器31中的輸出資料結構C0至C3之一的內容總是含有相關值,並且隨後藉由將輸出資料結構初始化為0,則後續指令可簡單地累加到輸出資料結構中。因此,負荷C0至C3係可選的。
已經載入所請求輸入的任一者隨後載入一系列矩陣乘法及累加(matrix multiply and accumulate; MMLA)運算計算出相應輸出C0至C3。注意到,由於4個輸入A0至B1在4個乘法累加運算之中共享,在此實例中每個乘法累加運算存在1個負荷。相應載入及乘法累加指令82、80可重複多次、與通用暫存器移動或者算術或載入指令穿插,該等算術或載入指令更新元資料暫存器x0至x15的相關集合以改變位址參數,用於指向總體矩陣結構50的其他瓦塊。或者,可定義矩陣載入指令82,使得除了從由元資料暫存器62指向的當前位址處的記憶體載入資料結構之外,處理電路系統亦隱含地更新元資料暫存器以指向下一個瓦塊,例如藉由遞增基址。在一些實例中,矩陣乘法可以基於位址元資料的對應集合來修改,例如,藉由遮掉由水平/垂直大小資訊46、48指示的無效元件。最終,一旦不存在更多的待執行的矩陣乘法及累加運算,則矩陣乘法指令80的最後集合的結果可以使用資料結構儲存指令84儲存回到記憶體,該等資料結構儲存指令可使用通用暫存器來識別於此應當以與元資料暫存器中指示的元資料類似的格式儲存彼等資料結構的位址。
儘管對給定資料結構的處理繼續進行,使用通用暫存器60的子集作為定義用於彼資料結構的位址元資料的元資料暫存器62意味著要求軟體避免將其他值寫入通用暫存器60的彼子集,同時仍需要資料結構。此舉確保了若發生中斷,並且處理切換到不同的執行上下文,用於指示在資料結構儲存器31中保存的給定資料結構的元資料的位址仍將存在並且可以保存至記憶體,作為通用暫存器60的上下文保存的部分,並且這意味著保存減少上下文切換時延的對應資料結構本身是不必要的。
第8圖圖示了與第7圖中的序列類似的代碼序列的實例,但此處為資料結構提供指示位址的元資料的相應集合的資料結構元資料暫存器62與通用暫存器60分離。資料結構處理指令80及儲存指令84可具有與第7圖中相同的作用。
然而,對於載入指令82而言,由於此時不存在提供位址資訊的隱含地識別的通用暫存器,載入指令可包括對通用暫存器的明確引用86的集合,該等通用暫存器提供位址資訊的相應片段42、44、46、48,並且隨後此等載入指令82可觸發指令解碼器12以控制處理電路系統14從記憶體載入來自經由規定的通用暫存器中的資訊識別的位址集合的資料結構,並且將載入的資料結構儲存到與由載入指令82規定的輸入資料結構識別符A0-B1相關聯的資料結構儲存器31的相關區域中。除了載入資料結構之外,載入指令亦可觸發處理電路系統將指示位址的元資料寫入用於規定的輸入資料結構識別符的一或多個資料結構元資料暫存器62的相關集合。指示位址的元資料可以採取數種形式。其可以簡單地係來自通用暫存器的經存取集合的值,該等通用暫存器明確地編碼如上文論述的基址42、步幅44以及水平及垂直大小46、48。或者,元資料可以係用於第8圖的實例中的第一負荷的暫存器區分符,例如,Xa至Xd,該等暫存器區分符識別含有位址資訊的暫存器。若使用此途徑,則軟體將需要保證彼等暫存器繼續保存位址資訊並且不在執行載入指令及最終指令之間更新,該最終指令依賴於資料結構儲存器內的資料結構。然而,與第7圖的實例相比,藉由允許哪些特定通用暫存器規定位址資訊的變化,此途徑可提供附加的靈活性。或者,再次假定保證在仍需要資料結構時引用暫存器Xa至Xd等等的內容不改變,指示位址的元資料可以係對程式計數器位址88的指示,該程式計數器位址指示相關載入指令本身的位址。在其中將位址資訊42、44、46、48本身寫入資料結構元資料暫存器62的實例中,則不需要在用於規定彼資訊的源暫存器86處限制任何後續更新,並且在此情形中,可允許軟體改變用於定義位址資訊42-48的GPR 60的內容,這是因為對應資訊保留在資料結構元資料暫存器62中。
另外,第8圖的實例類似於第7圖,並且再次藉由記錄追蹤可以發現指示位址的元資料的位置或直接指示指示位址的元資料的資訊,使得上下文復原時的軟體可以決定對應資料結構在記憶體中的位置,這意味著不需要保存乾淨資料結構作為上下文保存演算法的部分。
因此,第9圖係圖示控制上下文保存的方法的流程圖。此舉可以藉由在CPU 4內的硬體中的提供的上下文保存電路系統20來執行,或者可以在軟體藉由作業系統、超管理器或其他監控過程進行。狀態保存方法回應於狀態保存觸發事件(例如,硬體或軟體觸發的異常或中斷)而執行。於步驟100,上下文狀態保存包括將正在進行的執行緒的一般上下文保存到記憶體內的資料結構。例如,一般上下文可包括指示指令位址(該指令位址表示當前執行點)的程式計數器、通用暫存器60的內容、及需要保留的任何其他處理器狀態,該處理器狀態可能不直接與處理上文描述的資料結構有關。保存此狀態可在監控過程的位址空間內,例如,在作業系統或超管理器的位址空間中對由該監控過程維持的資料結構執行。例如,堆疊資料結構可用於儲存為給定執行緒保存的狀態區塊。
於步驟102,對於資料結構儲存器31中的任何乾淨資料結構而言,狀態保存保存了元資料暫存器62的對應集合,但不保存在資料結構儲存器31中儲存的資料結構本身。此等乾淨資料結構可以包括任何輸入資料結構、以及視情況包括任何輸出資料結構,對此臟指示符66指示輸出資料結構是乾淨的。注意到,在其中資料結構元資料暫存器60係GPR 60的子集的情形中,則當將GPR 60保存到記憶體時,步驟102可能已經隱含地作為步驟100的部分而得以執行。然而,在其中資料結構元資料暫存器62與GPR 60分離的實例中,則可執行步驟102。
於步驟104,對於任何臟資料結構或不知道乾淨還是臟的資料結構而言,可保存資料結構本身及元資料暫存器62的對應集合。
因此,藉由確保存在繼續保存位址資訊的一些元資料暫存器62(該位址資訊關於從記憶體中獲得資料結構的位置),此舉可以允許於步驟104保存整個資料結構僅限於彼等臟結構,並且不需要保存乾淨資料結構,因為該等乾淨資料結構僅係記憶體中的資料的複本。
第10圖圖示了可以使用的另一實例。在此實例中,若輸入或輸出值在資料結構儲存器31中尚不可用,則除了執行資料結構處理操作本身之外,資料結構處理指令800亦可觸發彼指令所需要的任何輸入或輸出資料結構的載入。此舉意味著上文描述的載入指令82可以用準備載入指令120及準備儲存指令122替換,該等準備載入指令及準備儲存指令不需要從記憶體載入對應資料結構,而是可用於將位址資訊的集合指派給規定的資料結構識別符A0-C3。此等指令120、122可規定通用暫存器124的集合,該等通用暫存器定義上文論述類型的位址資訊42至48,並且該等指令可導致指令解碼器12控制處理電路系統14將位址資訊寫入與規定的資料結構識別符A0-C3相關聯的元資料暫存器62的集合。準備載入指令120可用於將位址資訊指派給輸入資料結構識別符A0、A1、B0、B1,並且準備儲存指令122可將位址資訊指派給輸出資料結構識別符C0-C3。視情況,若資料結構尚不可用,則準備載入指令亦可以將該資料結構預載入到資料結構儲存器31中,但這可能不是架構需要的特徵。
因此,當到達資料結構處理指令80時,處理電路系統可例如基於資料結構可用性暫存器64中的可用性資訊來檢查任何輸入的可用性,並且載入在資料結構儲存器31中尚不可用的指令所需的任何輸入。此外,處理電路系統對輸入資料結構執行相關資料處理操作以產生輸出資料結構。
藉由定義指令集架構中的MMLA指令80來亦要求載入輸入,這意味著用於復原某些資料結構的上下文復原功能是不必要的,因為若需要的話,資料處理操作80本身將載入任何不可用的資料結構。因此,若例如在產生第10圖的實例中的C0輸出的第一資料結構處理指令80之後發生中斷,並且執行離開當前執行緒的上下文切換,則在此點處,可將任何臟資料結構C0保存到記憶體,並且亦保存先前複製到元資料暫存器62的指示位址的元資料作為狀態保存的部分,但保存任何乾淨資料結構A0至A1、B0至B1或C1至C3是不必要的。當隨後返回到執行緒時,執行上下文復原,並且一旦已經復原元資料暫存器62,就不必將任何其他資料結構復原到暫存器,因為當處理繼續時,每個後續資料結構處理指令80將載入其輸入中(若尚未進行)。此舉可以改進安全性,因為其意味著資料結構保留在執行緒的位址空間內,該執行緒使用該等資料結構而非必須在監控過程的位址空間內使用。此外,其意味著不必對任何資料結構執行上下文復原,對於在執行緒(該執行緒在上下文復原之後)繼續之後執行的任何指令而言隨後不需要該資料結構。
儘管非架構要求的,準備載入指令120可視情況將其對應資料結構預載入到資料結構儲存器31中(若尚未進行),藉由與在發起載入之前硬體等到對應資料結構處理指令80的情況相比更早地針對此等結構發起載入,此舉可以幫助改進效能。因此,可用性暫存器64可以用於追蹤在準備載入指令120與對應資料處理指令之間是否存在中斷,使得硬體可以決定當到達資料結構處理指令80時再次載入任何資料結構是否是必要的。
第11圖係圖示上下文狀態復原過程的流程圖,該過程例如可由負責管理用於處理的底層執行緒的上下文復原的軟體中的作業系統或超管理器執行。於步驟150,軟體復原輸入執行緒的一般上下文,諸如程式計數器及通用暫存器。若尚未作為通用暫存器復原的部分進行,則於步驟152,上下文復原過程復原資料結構元資料暫存器62,使得後續指令可以隨後識別需要從其載入資料結構的記憶體中的位置。於步驟154,軟體不需要復原任何資料結構本身,這是因為此等資料結構可以按需要由後續資料結構處理指令80載入。
儘管上文論述的實例與矩陣有關並且所描述的資料結構處理操作係矩陣乘法,將瞭解,用於減少上下文保存及復原額外負擔的類似技術可以應用於其他資料結構類型。
第12圖示出可使用的模擬器實施方式。儘管先前描述的實施例關於用於操作支援相關技術的具體處理硬體的設備及方法來實施本發明,亦可能根據本文描述的實施例提供經由使用電腦程式來實施的指令執行環境。因為此種電腦程式提供硬體架構的基於軟體的實施方式,故經常被稱為模擬器。模擬器電腦程式的變化包括模仿器、虛擬機、模型及二進制轉換器,包括動態二進制轉換器。通常,模擬器實施方式可在主處理器730上運行,視情況運行主作業系統720,從而支援模擬器程式710。在一些排列中,在硬體與所提供的指令執行環境之間及/或在相同主處理器上提供的多個不同指令執行環境之間可能存在多層模擬。歷史上,已需要高效處理器提供以合理速度執行的模擬器實施方式,但此種途徑可在某些情況下為合理的,諸如當期望運行另一處理器本機的代碼以獲得相容性時,或出於再用的原因。例如,模擬器實施方式可提供具有不由主處理器硬體支援的額外功能的指令執行環境,或提供通常與不同硬體架構相關聯的指令執行環境。模擬的概述在「Some Efficient Architecture Simulation Techniques」,Robert Bedichek,Winter 1990 USENIX Conference,第53頁至第63頁中給出。
如果先前已經在模擬實施例中參考特定硬體構造或特徵描述實施例,則等效功能可由適當的軟體構造或特徵提供。例如,特定電路系統可在模擬實施例中實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取記憶體)可在模擬實施例中實施為軟體資料結構。在先前描述的實施例中參考的一或多個硬體元件存在於主硬體(例如,主處理器730)上的排列中,一些模擬實施例可在適當時利用主硬體。
模擬器程式710可儲存在電腦可讀取儲存媒體(其可係非暫時性媒體)上,並且向目標代碼700(其可包括應用、作業系統和超管理器)提供程式介面(指令執行環境),該程式介面與由模擬器程式710模型化的硬體架構的應用程式介面相同。因此,目標代碼700的程式指令(包括如上文描述的資料結構處理指令)可使用模擬器程式710從指令執行環境內執行,使得實際上不具有上文論述的設備2的硬體特徵的主電腦730可以模仿此等特徵。
模擬器程式710可包括指令解碼程式邏輯712,該指令解碼程式邏輯解碼目標代碼700的指令,並且將該等指令映射到使用本機指令定義的等效功能,該等本機指令由主資料處理設備730支援。例如,指令解碼程式邏輯712可包括if/then/else語句,該等語句檢查目標代碼700中的目標指令的經編碼位元,並且取決於在特定指令中發現的位元,選擇在本機指令集中定義的指令序列來模擬目標指令的架構功能。
此外,模擬器程式710可包括暫存器模擬程式邏輯714,該暫存器模擬程式邏輯可管理在主資料處理設備730的記憶體中定義的儲存結構,該儲存結構模擬由與目標代碼700相關聯的指令集架構需要的架構暫存器。例如,使用目標代碼700的目標指令中的暫存器引用來識別的暫存器讀取/寫入操作可映射到記憶體存取指令,用於讀取/寫入主資料處理設備730的記憶體中的資料。使用暫存器模擬程式邏輯714模擬的暫存器可包括上文論述的資料結構元資料暫存器62。
在本申請案中,詞語「經配置為……」用於意味著設備的元件具有能夠進行所定義操作的配置。在此上下文中,「配置」意味著硬體或軟體的互連的排列或方式。例如,設備可具有提供所定義操作的專用硬體,或者處理器或其他處理裝置可經程式化為執行該功能。「經配置為」不暗示需要以任何方式改變設備元件以便提供所定義的操作。
儘管已在本文中參考隨附圖式詳細描述了本發明的說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習該項技術者可在其中實現各種變化及修改而不脫離由隨附申請專利範圍所定義的本發明的範疇。
2:資料處理系統 4:主裝置/中央處理單元(CPU) 6:主裝置/硬體加速器 8:記憶體系統 10:互連 12:指令解碼器 14:處理電路系統 16:暫存器 18:快取記憶體 20:上下文保存電路系統 30:儲存結構/儲存區域 31:資料結構儲存電路系統 40:瓦塊 42:基址 44:步幅參數 46:水平大小及垂直大小資訊 48:水平大小及垂直大小資訊 49:部分 50:矩陣 60:通用暫存器(GPR) 62:資料結構元資料暫存器 64:資料結構可用性暫存器 66:資料結構臟指示符暫存器 70-A:輸入資料結構識別符空間 70-B:輸入資料結構識別符空間 72:輸出資料結構識別符空間/識別符 80:資料結構處理指令 82:資料結構載入指令 84:資料結構儲存指令 86:引用/源暫存器 88:程式計數器位址 100:步驟 102:步驟 104:步驟 120:準備載入指令 122:準備儲存指令 124:通用暫存器 150:步驟 152:步驟 154:步驟 700:目標代碼 710:模擬器程式 712:指令解碼程式邏輯 714:暫存器模擬程式邏輯 720:主作業系統 730:主資料處理設備
第1圖示意性示出包括處理電路系統的資料處理設備的實例,該處理電路系統具有對資料結構處理指令的指令解碼器支援;
第2圖圖示了其中資料結構係矩陣的實例;
第3圖圖示了用於儲存數個輸入及輸出資料結構的資料結構儲存區域的實例;
第4圖圖示了使用指示位址的元資料來識別在記憶體中儲存某一資料結構的位址的實例;
第5圖更詳細地圖示了處理電路系統的暫存器及資料結構儲存器的實例;
第6圖圖示了其中輸入及輸出資料結構具有分離的識別符空間的實例;
第7圖圖示了其中用於給定資料結構的資料結構元資料暫存器係通用暫存器的固定子集的實例。
第8圖圖示了其中提供專用資料結構元資料暫存器與通用暫存器分離的替代途徑。
第9圖係圖示回應於上下文保存觸發事件而控制狀態保存的方法的流程圖;
第10圖圖示了其中資料結構處理指令導致當給定輸入資料結構尚不可用時處理電路系統載入給定輸入資料結構的另一實例;
第11圖係圖示控制上下文狀態復原的方法的流程圖;以及
第12圖圖示了可使用的模擬器實例。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
16:暫存器
30:儲存結構/儲存區域
31:資料結構儲存電路系統
60:通用暫存器(GPR)
62:資料結構元資料暫存器
64:資料結構可用性暫存器
66:資料結構臟指示符暫存器

Claims (23)

  1. 一種設備,包含: 一指令解碼器,用於解碼指令;以及 處理電路系統,用於回應於由該指令解碼器解碼的該等指令而執行資料處理;其中: 回應於規定至少一個輸入資料結構識別符及一輸出資料結構識別符的一資料結構處理指令,該指令解碼器經配置為控制該處理電路系統對由該至少一個輸入資料結構識別符識別的至少一個輸入資料結構執行一處理操作,以產生由該輸出資料結構識別符識別的一輸出資料結構; 該至少一個輸入資料結構及該輸出資料結構各者包含對應於複數個記憶體位址的一資料排列;以及 該設備包含一或多個資料結構元資料暫存器的複數個集合,一或多個資料結構元資料暫存器的每個集合與一對應資料結構識別符相關聯並且經指定為保存指示位址的元資料,該元資料識別由該對應資料結構識別符識別的該資料結構的該複數個記憶體位址。
  2. 如請求項1所述的設備,其中該處理電路系統經配置為根據一指令集架構操作,該指令集架構使軟體能夠針對至少資料結構識別符的一子集來辨識對應於資料結構識別符的該子集之一的一資料結構是乾淨還是臟的。
  3. 如請求項1所述的設備,其中該輸出資料結構識別符在與該至少一個輸入資料結構識別符分離的一識別符空間中定義。
  4. 如請求項1所述的設備,包含至少一個架構暫存器,用於保存至少一個臟指示符,每個臟指示符指示對應於一給定資料結構識別符的一資料結構是乾淨還是臟的。
  5. 如請求項1所述的設備,包含回應於一上下文保存觸發事件而將處理器狀態的一預定子集保存到記憶體的上下文保存電路系統,其中處理器狀態的該預定子集包括對應於至少一個資料結構識別符的一或多個資料結構元資料暫存器的該集合,該至少一個資料結構識別符對應於一乾淨資料結構,但不包括對應於該至少一個資料結構識別符的該資料結構。
  6. 如請求項1所述的設備,其中與一給定資料結構識別符相關聯的該等資料結構元資料暫存器包含下列之一: 複數個通用暫存器的一固定子集,該等通用暫存器亦可回應於由該指令解碼器及該處理電路系統支援的非資料結構處理指令而存取;以及 資料結構元資料暫存器的一專用集合,與該複數個通用暫存器分離。
  7. 如請求項1所述的設備,其中回應於該資料結構處理指令,該處理電路系統經配置為產生一載入請求,用於當一給定輸入資料結構或一給定輸出資料結構的一先前值不可用於該處理電路系統時從記憶體載入該給定輸入資料結構或該給定輸出資料結構的該先前值。
  8. 如請求項7所述的設備,其中該處理電路系統包含檢查電路系統,用於檢查該給定輸入資料結構在與該記憶體分離的資料結構保存電路系統中是否可用。
  9. 如請求項1所述的設備,包含與記憶體分離的資料結構保存電路系統;以及 回應於該資料結構處理指令,該指令解碼器經配置為控制該處理電路系統從該資料結構保存電路系統讀取該至少一個輸入資料結構,並且將該輸出資料結構寫入或更新到該資料結構保存電路系統。
  10. 如請求項9所述的設備,其中當在該資料結構保存電路系統中保存一給定資料結構時,該處理電路系統能夠以與將該資料寫入該資料結構保存電路系統的該序列不同的一序列從該給定資料結構讀取資料。
  11. 如請求項9所述的設備,其中該資料結構保存電路系統包含下列的至少一者: 架構可定址暫存器; 非架構可定址暫存器; 一高速暫存記憶體;以及 一快取記憶體。
  12. 如請求項9所述的設備,其中回應於規定一目標輸入資料結構識別符或一目標輸出資料結構識別符的一資料結構載入指令,該指令解碼器經配置為控制該處理電路系統將從一或多個資料結構元資料暫存器的該集合中保存的該指示位址的元資料導出的記憶體位址載入的一資料結構寫入該資料結構保存電路系統,該一或多個資料結構元資料暫存器對應於該目標輸入資料結構識別符或該目標輸出資料結構識別符。
  13. 如請求項9所述的設備,其中回應於規定一目標輸入資料結構識別符或一目標輸出資料結構識別符的一資料結構載入指令及一或多個通用暫存器,該指令解碼器經配置為控制該處理電路系統: 將從該一或多個通用暫存器中保存的目標位址識別資訊導出的記憶體位址載入的一資料結構寫入該資料結構保存電路系統,以及 基於該目標位址識別資訊或該資料結構載入指令的一性質來更新對應於該目標輸入資料結構識別符或該目標輸出資料結構識別符的一或多個資料結構元資料暫存器的該集合。
  14. 如請求項1所述的設備,其中回應於規定一目標輸入資料結構識別符的一準備載入指令,該指令解碼器經配置為控制該處理電路系統基於下列的一者來更新對應於該目標輸入資料結構識別符的一或多個資料結構元資料暫存器的該集合: 由該準備載入指令隱含或明確地規定的目標位址識別資訊;以及 該準備載入指令的一性質。
  15. 如請求項14所述的設備,其中回應於該準備載入指令,該處理電路系統經配置為產生一載入請求,用於請求將與該目標輸入資料結構識別符相關聯的一資料結構從基於該目標位址識別資訊決定的記憶體位址傳遞到資料結構保存電路系統。
  16. 如請求項1所述的設備,其中回應於規定一目標輸出資料結構識別符的一準備儲存指令,該指令解碼器經配置為控制該處理電路系統基於下列的一者來更新對應於該目標輸出資料結構識別符的一或多個資料結構元資料暫存器的該集合: 由該準備儲存指令隱含或明確地規定的目標位址識別資訊;以及 該準備儲存指令的一性質。
  17. 如請求項1所述的設備,其中該複數個記憶體位址包含記憶體位址的複數個不連續區塊
  18. 如請求項17所述的設備,其中該指示位址的元資料包含下列的至少一者: 開始位址資訊,指示記憶體位址的該複數個不連續區塊的至少一者的一開始位址; 偏移資訊,指示在記憶體位址的該複數個不連續區塊的開始位址之間的一分離; 第一大小資訊,指示記憶體位址的每個不連續區塊的一大小; 第二大小資訊,指示形成該資料結構的記憶體位址的該等不連續區塊的數量; 元件大小資訊,指示該資料結構的一資料元件大小; 一或多個暫存器識別符,識別保存該開始位址資訊、該偏移資訊、該第一大小資訊及該第二大小資訊的至少一者的一或多個通用暫存器;以及 一指令位址指示,識別保存該開始位址資訊、該偏移資訊、該第一大小資訊及該第二大小資訊的至少一者的一指令規定暫存器的一位址。
  19. 如請求項1所述的設備,其中該資料結構處理指令包含規定兩個輸入資料結構識別符的一矩陣乘法指令,並且該處理操作包含對由該等兩個輸入資料結構識別符識別的兩個輸入資料結構執行的一矩陣乘法運算,以產生該輸出資料結構。
  20. 如請求項1所述的設備,其中該輸出資料結構具有至少64位元組的一大小。
  21. 如請求項1所述的設備,其中回應於該資料結構處理指令,該處理電路系統經配置為取決於在一或多個資料結構元資料暫存器的至少一個集合中保存的該指示位址的元資料而改寫對該至少一個輸入資料結構執行的該處理操作,該一或多個資料結構元資料暫存器對應於該至少一個輸入資料結構識別符或該輸出資料結構識別符。
  22. 一種資料處理方法,包含以下步驟: 回應於解碼規定至少一個輸入資料結構識別符及一輸出資料結構識別符的一資料結構處理指令,控制該處理電路系統對由該至少一個輸入資料結構識別符識別的至少一個輸入資料結構執行一處理操作,以產生由該輸出資料結構識別符識別的一輸出資料結構,該至少一個輸入資料結構及該輸出資料結構各者包含對應於複數個記憶體位址的一資料排列;以及 將指示位址的元資料保存在一或多個資料結構元資料暫存器的複數個集合中,一或多個資料結構元資料暫存器的每個集合與一對應資料結構識別符相關聯並且經指定為保存指示位址的元資料,該元資料識別由該對應資料結構識別符識別的該資料結構的該複數個記憶體位址,用於。
  23. 一種儲存一電腦程式的非暫時性儲存媒體,該電腦程式用於控制一主資料處理設備模擬由一目標資料處理設備執行一目標程式;該電腦程式包含: 指令解碼程式邏輯,用於解碼該目標程式的指令,其中回應於規定至少一個輸入資料結構識別符及一輸出資料結構識別符的一資料結構處理指令,該指令解碼程式邏輯經配置為控制該主資料處理設備對由該至少一個輸入資料結構識別符識別的至少一個輸入資料結構執行一處理操作,以產生由該輸出資料結構識別符識別的一輸出資料結構,該至少一個輸入資料結構及該輸出資料結構各者包含對應於複數個記憶體位址的一資料排列;以及 暫存器模擬程式邏輯,用於控制對一儲存結構的存取以模擬該目標資料處理設備的暫存器,該等暫存器包括一或多個資料結構元資料暫存器的複數個集合,其中一或多個資料結構元資料暫存器的每個集合與一對應資料結構識別符相關聯並且經指定為保存指示位址的元資料,該元資料識別由該對應資料結構識別符識別的該資料結構的該複數個記憶體位址。
TW109121041A 2019-08-05 2020-06-22 資料結構處理 TW202107276A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/531,208 US11068268B2 (en) 2019-08-05 2019-08-05 Data structure processing
US16/531,208 2019-08-05

Publications (1)

Publication Number Publication Date
TW202107276A true TW202107276A (zh) 2021-02-16

Family

ID=70166055

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109121041A TW202107276A (zh) 2019-08-05 2020-06-22 資料結構處理

Country Status (8)

Country Link
US (1) US11068268B2 (zh)
EP (1) EP3912027B1 (zh)
JP (1) JP7465887B2 (zh)
KR (1) KR20220038581A (zh)
CN (1) CN113498507A (zh)
IL (1) IL285610B2 (zh)
TW (1) TW202107276A (zh)
WO (1) WO2021023954A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767644B (zh) * 2021-04-01 2022-06-11 劉玉堂 透過設定資料結構與自動生成應用程式介面服務資訊的系統

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392316B2 (en) * 2019-05-24 2022-07-19 Texas Instruments Incorporated System and method for predication handling
CN113570028A (zh) * 2020-04-28 2021-10-29 超威半导体公司 用于在神经网络中处理数据的静态生成的经编译表示
US11799986B2 (en) * 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11423580B2 (en) * 2020-10-12 2022-08-23 Arm Limited Decoding data arrays
CN112100121B (zh) * 2020-11-17 2021-02-12 北京壁仞科技开发有限公司 计算装置、计算设备以及可编程调度方法
EP4167143A1 (en) 2021-10-15 2023-04-19 Electronics and Telecommunications Research Institute Resource resettable deep neural network accelerator, system, and method
CN115098271B (zh) * 2022-08-25 2022-12-02 北京医百科技有限公司 一种多线程数据处理方法、装置、设备及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7610466B2 (en) 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7447868B2 (en) * 2005-06-15 2008-11-04 International Business Machines Corporation Using vector processors to accelerate cache lookups
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
US10203958B2 (en) * 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
GB2549511B (en) * 2016-04-20 2019-02-13 Advanced Risc Mach Ltd An apparatus and method for performing operations on capability metadata
US20170337156A1 (en) 2016-04-26 2017-11-23 Onnivation Llc Computing machine architecture for matrix and array processing
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US11023382B2 (en) 2017-12-22 2021-06-01 Intel Corporation Systems, methods, and apparatuses utilizing CPU storage with a memory reference

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767644B (zh) * 2021-04-01 2022-06-11 劉玉堂 透過設定資料結構與自動生成應用程式介面服務資訊的系統

Also Published As

Publication number Publication date
EP3912027B1 (en) 2022-11-30
CN113498507A (zh) 2021-10-12
JP2022543331A (ja) 2022-10-12
IL285610B1 (en) 2024-01-01
KR20220038581A (ko) 2022-03-29
US20210042115A1 (en) 2021-02-11
JP7465887B2 (ja) 2024-04-11
US11068268B2 (en) 2021-07-20
IL285610A (en) 2021-09-30
IL285610B2 (en) 2024-05-01
WO2021023954A1 (en) 2021-02-11
EP3912027A1 (en) 2021-11-24

Similar Documents

Publication Publication Date Title
TW202107276A (zh) 資料結構處理
Mittal et al. A survey of architectural approaches for data compression in cache and main memory systems
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI525437B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI512466B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
JP6975723B2 (ja) ケイパビリティ・メタデータに対する操作を実施するための装置及び方法
KR101626533B1 (ko) 가비지 콜렉션을 위한 gpu 서포트
US8751771B2 (en) Efficient implementation of arrays of structures on SIMT and SIMD architectures
KR102434170B1 (ko) 하이브리드 메모리 시스템
KR102443600B1 (ko) 하이브리드 메모리 시스템
JP7445431B2 (ja) 命令の実行を制御する装置および方法
Choukse et al. Compresso: Pragmatic main memory compression
TW201907308A (zh) 位址轉譯資料的無效化
KR20020088063A (ko) 정보 처리 시스템에서 병렬 처리되는 작업들간의 데이터종속성의 대략적인 결정
CN114327362A (zh) 大规模矩阵重构和矩阵-标量操作
US20140380317A1 (en) Single-pass parallel prefix scan with dynamic look back
CN111433742B (zh) 用于数据处理的装置和方法、非暂态存储介质
TW201432571A (zh) 儲存與復原執行緒群組操作狀態之技術
JP7377208B2 (ja) データ処理
Bae et al. Ssdstreamer: Specializing i/o stack for large-scale machine learning
CN111788552A (zh) 用于低等待时间硬件存储器的系统和方法
US20230393849A1 (en) Method and apparatus to expedite system services using processing-in-memory (pim)
KR102650569B1 (ko) 범용 연산 가속기 및 그것의 동작 방법
US20220147353A1 (en) General-purpose computing accelerator and operation method thereof
WO2023148467A1 (en) Technique for performing memory access operations