TWI512460B - 一種用以處理資料的裝置及方法,及執行該方法之虛擬機器 - Google Patents
一種用以處理資料的裝置及方法,及執行該方法之虛擬機器 Download PDFInfo
- Publication number
- TWI512460B TWI512460B TW100127445A TW100127445A TWI512460B TW I512460 B TWI512460 B TW I512460B TW 100127445 A TW100127445 A TW 100127445A TW 100127445 A TW100127445 A TW 100127445A TW I512460 B TWI512460 B TW I512460B
- Authority
- TW
- Taiwan
- Prior art keywords
- stack
- stacked
- alignment
- memory
- index value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 28
- 238000013500 data storage Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims 1
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000001514 detection method Methods 0.000 claims 1
- 238000007726 management method Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000009849 deactivation Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明係關於資料處理系統的領域。更特定而言,本發明係關於在資料處理系統內執行的記憶體存取的存取對齊控制。
已知為提供具有查核記憶體存取對齊的機制之資料處理系統。記憶體存取可不受限制的,以使得在記憶體內的任何個別的位元組可由任何大小的記憶體存取來定址,或記憶體存取可為對齊限制的,以使得僅可進行利用在記憶體內(例如為)半字組、字組、雙字組等等的邊限來對齊的記憶體存取。一般而言,在高速記憶體存取的提供中記憶體存取對齊要求的實施係有幫助的,例如寬資料匯流排可與不需容納與資料匯流排寬度不對齊的存取之此等匯流排一同使用。然而,當操作所存取的資料元件本身可能未必具有與所施用的對齊限制對齊之邊限的緊縮資料結構時,對僅對齊的記憶體存取的要求係有問題的。在一些情況中,所執行的指令可能需要資料存取的對齊,例如對堆疊資料儲存器的一些讀取-修正-寫入指令。此外,一些應用二進制介面指定存取對齊。
從一態樣中可觀察,本發明提供一種用以處理資料的裝置,該裝置包含:處理電路系統,該處理電路系統回應於程式指令以執行資料處理操作;堆疊指標暫存器,該堆疊指標暫存器耦接至該處理電路系統且經配置以儲存指示在堆疊資料儲存器的記憶體內之位址的堆疊指標值;堆疊對齊查核電路系統,該堆疊對齊查核電路系統耦接至該處理電路系統和耦接至該堆疊指標暫存器,且經配置以回應於指定對該堆疊資料儲存器的堆疊記憶體存取之程式指令,該堆疊資料儲存器位於由該堆疊指標值所指定的位址,以偵測該堆疊指標值是否匹配預定堆疊對齊條件;對齊查核控制電路系統,該對齊查核控制電路系統耦接至該堆疊對齊查核電路系統,且回應於堆疊配置參數以選擇性地停用該堆疊對齊查核電路系統,而獨立於在進行記憶體存取之後執行的進一步的對齊查核。
本發明的技術認識到,可適合於堆疊記憶體存取的對齊限制可能並不適合於其他記憶體存取,例如並不涉及堆疊資料儲存器的記憶體存取。作為實例,並未儲存在堆疊資料儲存器內的資料結構可為緊縮資料結構,其中對齊限制係有問題,然而應用對齊限制於堆疊資料儲存器有助於識別堆疊指標或堆疊資料儲存器的影響(corruption)。本發明的技術認識到此情況,且提供堆疊對齊查核電路系統的機制,以查核堆疊記憶體存取的對齊,此舉獨立於在系統內執行的任何進一步的對齊查核而選擇性地停用,例如在進行對堆疊記憶體和非堆疊記憶體兩者的所有記憶體存取之後執行的對齊查核。因此,堆疊對齊查核可結合或可不結合獨立地控制的其他的記憶體存取之查核來執行。因此,針對堆疊資料儲存器實施對齊,而並不針對通用記憶體存取來實施對齊。
應瞭解,進一步的對齊查核可採取多種不同的形式,例如並不使用堆疊指標的對齊查核記憶體存取。然而,有用的佈置係一情況,其中進一步的對齊查核係在進行所有的記憶體存取之後執行的對齊查核(亦即,使用和不使用堆疊指標的記憶體存取)。
應瞭解,堆疊記憶體存取可為對堆疊位址的頂部進行的讀取(彈出)存取或寫入(壓入)存取,該堆疊記憶體存取具有對所執行的堆疊指標值的相對應的更新。
除了選擇性被停用的堆疊對齊查核電路系統,一些實施例可額外地包含:用於偵測任何記憶體存取是否符合預定對齊條件的通用對齊查核電路系統。因此,可能單獨地使用堆疊對齊查核電路系統,此堆疊對齊查核電路系統有效地與通用對齊查核電路系統組合。該通用對齊查核電路系統亦可由對齊查核控制電路系統來控制,以使得該通用對齊查核電路系統可被選擇性地停用。
所施加的對齊條件可改變。對齊條件可為:預定堆疊對齊條件係不加限制的,此相當於停用堆疊對齊查核電路系統。然而,當對齊條件係使得堆疊指標值係2N
的整數倍,其中N係非零整數值(例如N為對應於64-位元和128-位元對齊的3或4其中之一者),堆疊對齊查核電路系統係更為有用的。N的值和相應的對齊條件可在使用者控制下設定(例如軟體控制)。
儘管本發明的技術可使用於包含單一堆疊指標的實施例中,但該等技術亦可應用於包含複數個堆疊指標的實施例中,每一堆疊指標儲存各別的堆疊指標值,及受具有各別的堆疊配置參數之控制的影響,該堆疊配置參數決定堆疊對齊查核是否針對所涉及的堆疊指標來停用或啟用。此等不同的堆疊指標可與在系統內的差異例外級(特權級)相關聯。
從另一態樣中可觀察,本發明提供一種用以處理資料的裝置,該裝置包含:處理構件,該處理構件用以回應於程式指令而執行資料處理操作;堆疊指標構件,該堆疊指標構件用以儲存堆疊指標值,該堆疊指標構件耦接至該處理構件,且該堆疊指標值指示在堆疊資料儲存器的記憶體內的位址;堆疊對齊查核構件,該堆疊對齊查核構件用以查核對齊,該堆疊對齊查核構件耦接至該處理構件及耦接至該堆疊指標構件,且經配置以回應於指定對該堆疊資料儲存器的記憶體存取之程式指令,該堆疊資料儲存器位於由該堆疊指標值所指定的位址,以偵測該堆疊指標值是否匹配預定堆疊對齊條件;對齊查核控制構件,該對齊查核控制構件用以控制對齊查核,該對齊查核控制構件耦接至該堆疊對齊查核構件,及回應於堆疊配置參數以選擇性地停用該堆疊對齊查核構件,而獨立於在進行記憶體存取之後執行的進一步的對齊查核。
從另一態樣中可觀察,本發明提供一種處理資料的方法,該方法包含以下步驟:回應於程式指令而執行資料處理操作;在堆疊指標暫存器內,儲存指示在堆疊資料儲存器的記憶體內的位址之堆疊指標值;回應於指定對該堆疊資料儲存器的記憶體存取之程式指令,該堆疊資料儲存器位於由該堆疊指標值所指定的位址,以偵測該堆疊指標值是否匹配預定堆疊對齊條件;回應於堆疊配置參數,選擇性地忽略獨立於在進行記憶體存取之後不使用該堆疊指標值來執行的對齊查核之該偵測步驟。
本發明的實施例亦可以虛擬機器的形式來提供,該虛擬機器係由執行適當的軟體的通用電腦來形成,以提供匹配前文所描述的裝置和方法之執行環境。
本發明的前述和其他目標、特徵及優點將由說明性的實施例的後續詳細描述而更加明白,該等實施例可結合隨附圖式來閱讀。
第1圖示意性地圖示資料處理裝置2,該資料處理裝置包含處理器核心4,該處理器核心經由記憶體管理單元6耦接至快取記憶體8。主記憶體耦接至快取記憶體8,雖然主記憶體並未圖示於第1圖中。配置資料儲存器10儲存在軟體控制下可寫入的配置資料,以用於控制用於資料處理裝置2的各種配置參數。此配置資料儲存器可用協同處理器(例如CP15)的形式來提供,對配置資料儲存器寫入可設定配置參數及對配置資料儲存器讀取配置參數。
處理器核心4包含資料路徑,該資料路徑係由通用暫存器庫12、乘法器14、移位器16及加法器18形成。資料路徑12、14、16、18係由解碼器電路系統20所產生的控制信號來控制,該解碼器電路系統解碼從指令管線22接收的程式指令且產生控制信號,該等控制信號用以配置資料路徑12、14、16、18以執行需要的資料處理操作,及配置和控制處理器核心4的其他部分以執行用以處理相關的指令所必需之功能。應瞭解,處理器核心4將通常包含許多其他的電路元件,但此等電路元件由於簡潔的目的已從第1圖中忽略。
處理器核心4可操作於複數個例外級。此等例外級的每一級對應於一例外級模式數值,且模式暫存器24儲存指示處理器核心4的目前例外級模式的數值。例外級模式的每一模式具有相關的堆疊指標暫存器26、28、30、32,該等堆疊指標暫存器儲存各別的堆疊指標值以當操作於特定的例外級模式時而經使用於由堆疊存取指令指示的堆疊記憶體存取。因此,當處理器核心4處於例外級2(EL2)時執行的堆疊壓入或堆疊彈出指令將使用儲存在堆疊指標暫存器30內的堆疊指標值。
處理器核心4消耗經由快取記憶體8從記憶體讀取的資料和指令。若資料項目或指令不存在於快取記憶體8中,則對主記憶體進行存取以擷取該資料項目或指令。許多可能的快取記憶體和記憶體架構係可能的,且第1圖僅圖示此快取記憶體或記憶體架構的一個實例。
處理器核心4產生虛擬位址,該虛擬位址藉由記憶體管理單元6轉換為實體位址。該記憶體管理單元6通常使用頁面表格資料以執行此位址轉換。該記憶體管理單元6亦儲存存取許可資料以決定是否應允許特定的記憶體存取。該記憶體管理單元包含對齊查核電路系統34和通用對齊查核電路系統38,對齊查核電路系統34包含堆疊對齊查核電路系統36。該堆疊對齊查核電路系統36負責查核堆疊記憶體存取的對齊,例如堆疊壓入指令或堆疊彈出指令。通用對齊查核電路系統38負責查核所有的記憶體存取,例如通用負載或儲存指令。該對齊查核電路系統34包含對齊查核控制電路系統40,對齊查核控制電路系統40彼此獨立地選擇性地啟用或停用該堆疊對齊查核電路系統36和該通用對齊查核電路系統38。因此,該堆疊對齊查核電路系統36可停用或啟用,及獨立地該通用對齊查核電路系統38可停用或啟用。該堆疊對齊查核電路系統36和該通用對齊查核電路系統38可因此結合地執行不查核、僅對堆疊資料儲存器存取之後的查核或在進行所有的記憶體存取之後之查核。
對齊查核控制電路系統40回應於儲存在配置資料儲存器10內的配置參數。對堆疊指標暫存器26、28、30、32的每一者,具有儲存的一堆疊配置參數,該堆疊配置參數指示就在相關的堆疊指標暫存器26、28、30、32的相應的例外級發生之堆疊存取的情況,是否停用對齊查核。因此,可針對對應於例外級EL0和EL2的堆疊指標值執行堆疊對齊查核,然而堆疊對齊查核可針對例外級EL1和EL3停用。配置資料儲存器10亦包含(就執行的每一對齊查核)指示查核匹配所對照的對齊大小的資料,例如對齊是否對照對應於23
或24
的倍數之記憶體位址的64-位元記憶體位址邊界或128-位元記憶體位址邊界來查核。
配置資料儲存器10進一步包含通用配置參數,該通用配置參數控制是否停用或啟用通用對齊查核電路系統38。針對此通用對齊查核實施的對齊之大小亦指定作為配置參數。儲存在該配置資料儲存器10內的確認參數可在軟體控制下寫入。亦可能為:此等配置參數可在硬體控制下設定,或在硬體中預程式化。
第2圖示意性地圖示記憶體42,該記憶體包含對應於不同的例外級的四個堆疊資料儲存器44、46、48、50。儲存在堆疊指標暫存器26、28、30、32中的堆疊指標值指示此等堆疊儲存器44、46、48、50的每一者之頂部位址值,可對該等堆疊儲存器執行(例如壓入操作或彈出操作)堆疊記憶體存取。
作為實例,與堆疊資料儲存器46相關聯的對齊條件圖示於第2圖。若實施對齊,則僅有為2N
的整數倍之位址係有效的堆疊指標值。若堆疊指標值經發現不同於此等允許的值,則觸發例外。觸發此例外的結果可取決於實施來改變。此例外可取決於相關系統的本質,觸發軟體回應(執行例外處理代碼)及硬體回應(可實施的重置)。
在所圖示的實例中,N的值可為3或4,該等值分別對應於64-位元對齊(實施為堆疊對齊條件)或128-位元對齊(實施為堆疊對齊條件)。亦在第2圖中所圖示,若停用堆疊對齊查核電路系統38,則任何位址可使用作為堆疊指標值,且堆疊資料儲存器46的頂部位址可位於記憶體位址空間內的任何位置(受限於在進行所有的記憶體存取之後個別地由通用對齊查核電路系統38實施的任何對齊限制)。
第3圖係示意性地圖示對齊查核電路系統34的操作之流程圖。在步驟52,處理等待直到接收到記憶體存取。在步驟54決定記憶存取位址是否來自堆疊指標暫存器。若記憶體存取係堆疊記憶體存取,例如具有來自堆疊指標暫存器的位址,則處理進行至步驟56,其中決定是否針對處理器核心4執行的所在的目前的例外級,停用堆疊對齊查核(如可使用例外級模式暫存器24所決定)。若啟用堆疊對齊查核,則步驟58決定相關的存取是否匹配用於目前的例外級的預定對齊條件。若符合預定對齊條件(例如存取係適當地對齊的),則處理進行至步驟60,其中存取係被允許的。若存取並不匹配預定對齊條件(亦即,存取係非對齊的),則處理進行至步驟62,其中觸發堆疊不對齊存取回應。若在步驟56決定停用堆疊對齊查核,處理進行至步驟64,其中作出關於是否停用通用對齊查核的決定。
若在步驟54決定記憶體存取並不為堆疊記憶體存取(亦即,並不涉及從堆疊指標暫存器中讀取的位址之使用),則處理進行至步驟64,其中作出關於目前是否停用通用對齊查核的決定。若通用對齊查核目前被停用,則處理進行至步驟60,其中存取被允許。若在步驟64決定不停用通用對齊查核,則處理進行至步驟66,其中作出關於存取是否匹配通用存取之預定對齊條件(亦即,通用對齊條件)之決定。若存取確實匹配此通用對齊條件(亦即,為對齊),則處理進行至步驟60,其中存取被允許。若存取並不匹配通用對齊條件(亦即,為非對齊),則處理進行至步驟68,其中觸發通用非對齊存取回應。
第4圖圖示可使用的虛擬機器實施。當先前描述的實施例就用以操作支援相關的技術之特定處理硬體的裝置和方法實施本發明時,亦可能提供所謂的硬體裝置的虛擬機器實施。此等虛擬機器實施在執行主機作業系統520的主機處理器530上執行,該主機作業系統支援虛擬機器程式510。通常,需要大功率的處理器來提供以合理的速度執行之虛擬機器實施,但此方法在特定的情況中受驗證,例如當由於相容性或重使用的理由需要在另一處理器執行代碼時。虛擬機器程式510提供應用程式介面至應用程式500,該應用程式介面與由實際硬體所提供的應用程式介面相同,該實際硬體為由虛擬機器程式510模型化的裝置。因此,程式指令(包含前文所描述的記憶體存取的控制)可從在應用程式500內執行,應用程式500使用虛擬機器程式510來模型化虛擬機器程式510與虛擬機器硬體之間的互動。
雖然本發明的說明性實施例參照隨附圖式在此更為詳細地描述,但應理解,本發明並不限於彼等明確的實施例,及可由具有熟習此項技術者在不脫離隨附的申請專利範圍所界定的本發明的範疇和精神下進行各種改變和修改。
2...資料處理系統/資料處理裝置
4...處理器核心
6...記憶體管理單元
8...快取記憶體
10...配置資料儲存器
12...通用暫存器庫/資料路徑
14...乘法器/資料路徑
16...位移器/資料路徑
18...加法器/資料路徑
20...解碼器電路系統
22...指令管線
520...主機作業系統
530...主機處理器
24...模式暫存器
26、28、30、32...堆疊指標暫存器
34...對齊查核電路系統
36...堆疊對齊查核電路系統
38...通用對齊查核電路系統
40...對齊查核控制電路系統
42...記憶體
44、46、48、50...堆疊資料儲存器
52、54、56、58、60、62、64、66、68...步驟
500...應用程式
510...虛擬機器程式
第1圖示意性地圖示併有對齊查核電路系統及對齊控制電路系統的資料處理裝置;
第2圖示意性地圖示記憶體,該記憶體包含遭受選擇性地停用的對齊控制的多個堆疊資料儲存器;
第3圖係示意性地圖示對堆疊記憶體存取和通用存取之對齊控制的方法之流程圖;以及
第4圖係示意性地圖示前文所描述的技術之虛擬機器實施的圖式。
52、54、56、58、60、62、64、66、68...步驟
Claims (20)
- 一種用以處理資料的裝置,該裝置包含:處理電路系統,該處理電路系統回應於程式指令以執行資料處理操作;一堆疊指標暫存器,該堆疊指標暫存器耦接至該處理電路系統,且經配置以儲存指示在一堆疊資料儲存器的一記憶體內之一位址的一堆疊指標值;堆疊對齊查核電路系統,該堆疊對齊查核電路系統耦接至該處理電路系統及耦接至該堆疊指標暫存器,且經配置以回應於指定對該堆疊資料儲存器的一記憶體存取之一程式指令,該堆疊資料儲存器位於由該堆疊指標值所指定的一位址,以偵測該堆疊指標值是否匹配一預定堆疊對齊條件;對齊查核控制電路系統,該對齊查核控制電路系統耦接至該堆疊對齊查核電路系統,且回應於一堆疊配置參數以選擇性地停用該堆疊對齊查核電路系統,而獨立於在進行記憶體存取之後執行的進一步的對齊查核。
- 如申請專利範圍第1項所述之裝置,其中該進一步的對齊查核包含:對所有的記憶體存取的對齊查核。
- 如申請專利範圍第1項所述之裝置,其中該堆疊記憶體存取係下列操作中之一者:(i)一堆疊壓入操作,該堆疊壓入操作儲存一或多個資料數值至該堆疊記憶體,該堆疊記憶體開始於由該堆疊指標值指定的堆疊位址之一頂部,及更新該堆疊指標值以指示堆疊位址的一新的頂部;以及(ii)一堆疊彈出操作,該堆疊彈出操作從該堆疊記憶體讀取一或多個資料數值,該堆疊記憶體開始於由該堆疊指標值指定的堆疊位址之一頂部,及更新該堆疊指標值以指示堆疊位址的一新的頂部。
- 如申請專利範圍第2項所述之裝置,該裝置包含:通用對齊查核電路系統,該通用對齊查核電路系統耦接至該處理電路系統,且經配置以回應於指定一通用存取至該記憶體的一程式指令,該記憶體位於任何的記憶體位址,以偵測該位址是否匹配一預定通用對齊條件。
- 如申請專利範圍第4項所述之裝置,其中該對齊查核控制電路系統耦接至該通用對齊查核電路系統,且回應於一通用配置參數以選擇性地停用該通用對齊查核電路系統,而獨立於在使用該堆疊指標值進行堆疊記憶體存取之後,由該堆疊對齊查核電路系統執行的對齊查核。
- 如申請專利範圍第1項所述之裝置,其中該預定堆疊對齊條件包含:該堆疊指標值為下列情況中之一者:不加限制;2N 的一整數倍數,其中N為一非零整數值。
- 如申請專利範圍第6項所述之裝置,其中N為3和4中的一者。
- 如申請專利範圍第4項所述之裝置,其中N在使用者控制下設定。
- 如申請專利範圍第1項所述之裝置,該裝置包含:複數個堆疊指標暫存器,每一堆疊指標暫存器儲存一各別的堆疊指標值,且其中該處理電路系統經配置以操作在複數個例外級,當該處理電路系統操作於該例外級時,每一例外級與該複數個用於使用的堆疊指標暫存器之一各別堆疊指標暫存器相關聯,及具有一各別的堆疊配置參數,該各別的堆疊配置參數用以控制堆疊對齊查核電路系統是否在該例外級停用。
- 一種用於處理資料的裝置,該裝置包含:處理構件,該處理構件用以回應於程式指令而執行資料處理操作;堆疊指標構件,該堆疊指標構件用以儲存一堆疊指標值,該堆疊指標構件耦接至該處理構件,且該堆疊指標值指示在一堆疊資料儲存器的一記憶體內的一位址;堆疊對齊查核構件,該堆疊對齊查核構件用以查核對齊,該堆疊對齊查核構件耦接至該處理構件及耦接至該堆疊指標構件,且經配置以回應於指定對該堆疊資料儲存器的一記憶體存取之一程式指令,該堆疊資料儲存器位於由該堆疊指標值所指定的一位址,以偵測該堆疊指標值是否匹配一預定堆疊對齊條件;對齊查核控制構件,該對齊查核控制構件用以控制對齊查核,該對齊查核控制構件耦接至該堆疊對齊查核構件,且回應於一堆疊配置參數以選擇性地停用該堆疊對齊查核構件,而獨立於在進行記憶體存取之後執行的進一步的對齊查核。
- 一種處理資料的方法,該方法包含以下步驟:回應於程式指令以執行資料處理操作;在一堆疊指標暫存器內,儲存指示在一堆疊資料儲存器的一記憶體內之一位址的一堆疊指標值;回應於指定對該堆疊資料儲存器的一記憶體存取之一程式指令,該堆疊資料儲存器位於由該堆疊指標值所指定的一位址,以偵測該堆疊指標值是否匹配一預定堆疊對齊條件;回應於一堆疊配置參數,選擇性地忽略獨立於在進行記憶體存取之後執行的進一步的對齊查核之該偵測步驟。
- 如申請專利範圍第11項所述之方法,其中該進一步的對齊查核包含:對所有的記憶體存取的對齊查核。
- 如申請專利範圍第11項所述之方法,其中該堆疊記憶體存取係下列操作中之一者:(i)一堆疊壓入操作,該堆疊壓入操作儲存一或多個資料數值至該堆疊記憶體,該堆疊記憶體開始於由該堆疊指標值指定的堆疊位址之一頂部,及更新該堆疊指標值以指示堆疊位址的一新的頂部;以及(ii)一堆疊彈出操作,該堆疊彈出操作從該堆疊記憶體讀取一或多個資料數值,該堆疊記憶體開始於由該堆疊指標值指定的堆疊位址之一頂部,及更新該堆疊指標值以指示堆疊位址的一新的頂部。
- 如申請專利範圍第11項所述之方法,該方法包含以下步驟:通用對齊查核電路系統回應於指定一通用存取至該記憶體的一程式指令,該記憶體位於任何的記憶體位址,以偵測該位址是否匹配一預定通用對齊條件。
- 如申請專利範圍第14項所述之方法,其中回應於一通用配置參數,選擇性地停用該通用對齊查核,而獨立於在使用該堆疊指標值進行堆疊記憶體存取之後來執行的對齊查核。
- 如申請專利範圍第11項所述之方法,其中該預定堆疊對齊條件包含:該堆疊指標值為下列情況中之一者:不加限制;2N 的一整數倍數,其中N為一非零整數值。
- 如申請專利範圍第16項所述之方法,其中N為3和4的一者。
- 如申請專利範圍第16項所述之方法,其中N在使用者控制下設定。
- 如申請專利範圍第11項所述之方法,該方法包含以下步驟:儲存複數個堆疊指標值在各別的堆疊指標暫存器中和操作於複數個例外級,當該處理電路系統操作於該例外級時,每一例外級與該複數個用於使用的堆疊指標暫存器之一各別堆疊指標暫存器相關聯,及具有一各別的堆疊配置參數,該各別的堆疊配置參數用以控制堆疊對齊查核是否在該例外級中執行。
- 一種包含控制一電腦以執行一如申請專利範圍第11項所述之方法的一電腦程式之虛擬機器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1013528.3A GB2482710A (en) | 2010-08-12 | 2010-08-12 | Enabling stack access alignment checking independently of other memory access alignment checking |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201229752A TW201229752A (en) | 2012-07-16 |
TWI512460B true TWI512460B (zh) | 2015-12-11 |
Family
ID=42937869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100127445A TWI512460B (zh) | 2010-08-12 | 2011-08-02 | 一種用以處理資料的裝置及方法,及執行該方法之虛擬機器 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9760374B2 (zh) |
EP (1) | EP2603852B1 (zh) |
JP (1) | JP5703378B2 (zh) |
KR (1) | KR101924821B1 (zh) |
CN (1) | CN103052942B (zh) |
GB (1) | GB2482710A (zh) |
IL (1) | IL223731A (zh) |
MY (1) | MY164219A (zh) |
TW (1) | TWI512460B (zh) |
WO (1) | WO2012020237A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280492B2 (en) * | 2013-12-28 | 2016-03-08 | Intel Corporation | System and method for a load instruction with code conversion having access permissions to indicate failure of load content from registers |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10496292B2 (en) * | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
GB2563887B (en) * | 2017-06-28 | 2019-12-25 | Advanced Risc Mach Ltd | Masking of architectural state associated with a realm |
CN110175049B (zh) * | 2019-05-17 | 2021-06-08 | 西安微电子技术研究所 | 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5666508A (en) * | 1995-06-07 | 1997-09-09 | Texas Instruments Incorporated | Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation |
US5761491A (en) * | 1996-04-15 | 1998-06-02 | Motorola Inc. | Data processing system and method for storing and restoring a stack pointer |
TW386193B (en) * | 1997-02-07 | 2000-04-01 | Cirrus Logic Inc | Circuits, system, and methods for processing multiple data streams |
TWI283828B (en) * | 2003-05-21 | 2007-07-11 | Analog Devices Inc | Unit, methods and systems for instruction alignment and alignment control logic unit therefor |
US20070266374A1 (en) * | 2006-05-11 | 2007-11-15 | Arm Limited | Stack memory selection upon exception in a data processing system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6491228A (en) * | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
US5201043A (en) * | 1989-04-05 | 1993-04-06 | Intel Corporation | System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking |
GB2230118B (en) * | 1989-04-05 | 1992-12-23 | Intel Corp | Microprocessor providing selectable alignment checking on memory references |
JP3507193B2 (ja) * | 1995-06-06 | 2004-03-15 | 株式会社東芝 | ロード・ストア命令処理装置 |
US5596717A (en) * | 1995-06-07 | 1997-01-21 | Texas Instruments Incorporated | Four state token passing alignment fault state circuit for microprocessor address misalignment fault generation |
US6341344B1 (en) * | 1998-03-20 | 2002-01-22 | Texas Instruments Incorporated | Apparatus and method for manipulating data for aligning the stack memory |
US6697834B1 (en) * | 1999-12-01 | 2004-02-24 | Sun Microsystems, Inc. | Mutual exculsion system and method for restarting critical sections of code when preempted during a critical section |
US6829700B2 (en) * | 2000-12-29 | 2004-12-07 | Stmicroelectronics, Inc. | Circuit and method for supporting misaligned accesses in the presence of speculative load instructions |
US6772372B2 (en) * | 2001-03-06 | 2004-08-03 | Hewlett-Packard Development Company, L.P. | System and method for monitoring unaligned memory accesses |
US7493599B2 (en) * | 2003-11-26 | 2009-02-17 | Intel Corporation | Device, system and method for detection and handling of misaligned data access |
-
2010
- 2010-08-12 GB GB1013528.3A patent/GB2482710A/en not_active Withdrawn
-
2011
- 2011-06-13 EP EP20110733692 patent/EP2603852B1/en active Active
- 2011-06-13 CN CN201180038097.XA patent/CN103052942B/zh active Active
- 2011-06-13 WO PCT/GB2011/051090 patent/WO2012020237A1/en active Application Filing
- 2011-06-13 KR KR1020137003613A patent/KR101924821B1/ko active IP Right Grant
- 2011-06-13 JP JP2013523662A patent/JP5703378B2/ja active Active
- 2011-06-13 MY MYPI2012701306A patent/MY164219A/en unknown
- 2011-06-28 US US13/067,805 patent/US9760374B2/en active Active
- 2011-08-02 TW TW100127445A patent/TWI512460B/zh active
-
2012
- 2012-12-18 IL IL223731A patent/IL223731A/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5666508A (en) * | 1995-06-07 | 1997-09-09 | Texas Instruments Incorporated | Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation |
US5761491A (en) * | 1996-04-15 | 1998-06-02 | Motorola Inc. | Data processing system and method for storing and restoring a stack pointer |
TW386193B (en) * | 1997-02-07 | 2000-04-01 | Cirrus Logic Inc | Circuits, system, and methods for processing multiple data streams |
TWI283828B (en) * | 2003-05-21 | 2007-07-11 | Analog Devices Inc | Unit, methods and systems for instruction alignment and alignment control logic unit therefor |
US20070266374A1 (en) * | 2006-05-11 | 2007-11-15 | Arm Limited | Stack memory selection upon exception in a data processing system |
Also Published As
Publication number | Publication date |
---|---|
KR20130098303A (ko) | 2013-09-04 |
CN103052942A (zh) | 2013-04-17 |
US9760374B2 (en) | 2017-09-12 |
EP2603852B1 (en) | 2015-04-29 |
CN103052942B (zh) | 2016-08-03 |
TW201229752A (en) | 2012-07-16 |
US20120042136A1 (en) | 2012-02-16 |
KR101924821B1 (ko) | 2019-02-27 |
JP5703378B2 (ja) | 2015-04-15 |
JP2013536504A (ja) | 2013-09-19 |
GB2482710A (en) | 2012-02-15 |
EP2603852A1 (en) | 2013-06-19 |
GB201013528D0 (en) | 2010-09-29 |
IL223731A (en) | 2016-09-29 |
WO2012020237A1 (en) | 2012-02-16 |
MY164219A (en) | 2017-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI512460B (zh) | 一種用以處理資料的裝置及方法,及執行該方法之虛擬機器 | |
TWI342492B (en) | Method of providing extended memory protection | |
JP5535547B2 (ja) | セキュアメモリインターフェース | |
TWI509453B (zh) | 非法模式改變處置 | |
TWI808869B (zh) | 硬體處理器及處理器 | |
US9753870B2 (en) | Hardware monitor with context switching and selection based on a data memory access and for raising an interrupt when a memory access address is outside of an address range of the selected context | |
KR20100122479A (ko) | 컴퓨팅 환경의 다중 페이징가능 게스트에 의한 스토리지 사용의 관리 | |
RU2015151131A (ru) | Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы | |
EP2786245A1 (en) | A data processing apparatus and method for performing register renaming without additional registers | |
KR20090127689A (ko) | 메모리 테스트 디바이스 및 메모리 테스트 방법 | |
US11200345B2 (en) | Firewall to determine access to a portion of memory | |
JP2018067047A (ja) | 制御装置 | |
US20070156978A1 (en) | Steering system management code region accesses | |
US8032720B2 (en) | Memory access monitoring apparatus and related method | |
JP7369701B2 (ja) | 処理回路上で実行されるべきプログラムをデバッグするときにメタデータにアクセスする方法 | |
WO2018193736A1 (ja) | 情報処理装置、情報処理方法、及び情報処理システム | |
KR100525537B1 (ko) | 인터럽트를 이용한 응용 프로그램의 에러검출장치 및 방법. | |
TWI801622B (zh) | 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體 | |
JP2006293641A (ja) | レジスタ設定値監視モジュール、システムおよびレジスタ設定値監視方法 | |
US9886276B2 (en) | System register access | |
JPH04309137A (ja) | メモリシステム | |
JP2008140161A (ja) | マイクロコンピュータ | |
CN103514058A (zh) | 一种数据失效的处理方法、设备及系统 |