TW201348964A - 在運行時間下判定最佳化預載入距離 - Google Patents
在運行時間下判定最佳化預載入距離 Download PDFInfo
- Publication number
- TW201348964A TW201348964A TW102105641A TW102105641A TW201348964A TW 201348964 A TW201348964 A TW 201348964A TW 102105641 A TW102105641 A TW 102105641A TW 102105641 A TW102105641 A TW 102105641A TW 201348964 A TW201348964 A TW 201348964A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- runtime
- processor
- time
- routine
- Prior art date
Links
- 230000036316 preload Effects 0.000 title claims abstract description 90
- 230000015654 memory Effects 0.000 claims abstract description 285
- 238000000034 method Methods 0.000 claims description 67
- 238000005259 measurement Methods 0.000 claims description 65
- 238000012545 processing Methods 0.000 claims description 45
- 230000003252 repetitive effect Effects 0.000 claims description 9
- 238000010792 warming Methods 0.000 claims description 7
- 238000005457 optimization Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims 1
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000004044 response Effects 0.000 claims 1
- 239000004065 semiconductor Substances 0.000 claims 1
- 238000004364 calculation method Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 14
- 230000007704 transition Effects 0.000 description 9
- 230000004888 barrier function Effects 0.000 description 8
- 239000004744 fabric Substances 0.000 description 7
- 238000013519 translation Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 240000001436 Antirrhinum majus Species 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 235000012431 wafers Nutrition 0.000 description 1
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
量測記憶體之運行時間延遲,判定常式之運行時間持續時間,且基於該所量測之運行時間記憶體延遲及常式之所判定之運行時間持續時間來判定用於常式之最佳化運行時間預載入距離。視情況,可藉由量測運行時間持續時間來判定常式之運行時間持續時間,且視情況可基於用於常式之操作的運行時間延遲之資料庫來判定運行時間持續時間。視情況,在執行常式之迴圈時使用最佳化運行時間預載入距離。
Description
本發明係關於資料處理及記憶體存取,且更特定言之係關於預載入快取記憶體。
微處理器在廣泛多種應用中執行計算任務。典型微處理器應用程式包括用以執行以下各者之軟體指令:自記憶體中之位置提取資料、使用所提取之資料執行一或多個操作、儲存或積聚結果、提取更多資料、執行另外一或多個操作及繼續該程序。自其提取資料之「記憶體」可在微處理器之本端,或具有微處理器連接至之記憶體「組構」或分散式資源。
微處理器效能之一量度係處理速率,其意謂每秒其可執行之操作數目。可藉由增加微處理器可操作於的時鐘率(例如,藉由減小其電晶體之特徵大小)來提高微處理器自身之速度。然而,由於許多微處理器應用程式要求自記憶體組構提取資料,所以僅增加微處理器之時鐘率可能不夠。換言之,在記憶體組構存取速度方面缺乏相當的增加的情況下,增加微處理器時鐘速度將僅獲得在微處理器等待其提取之資料到達(而不執行實際處理)之時間量方面的增加。
相關技術圖1A展示在由微處理器與儲存資料及指令之記憶體組構組合而進行的假設處理中四個計算循環(例如,一迴圈之四個反覆)及對應之四個記憶體等待時間間隔的一個實例時序100,其中每一計
算循環具有將被稱為「計算循環持續時間」或「CCD」的持續時間,每一記憶體等待時間間隔具有持續時間DLY。每一計算循環(亦即,每一迴圈反覆)要求微處理器具有資料或指令或資料與指令兩者,且此等係在先於該計算循環之記憶體等待時間間隔期間自記憶體組構提取。在圖1A實例中,CCD近似為四分之一的記憶體延遲DLY。應理解,CCD與DLY之此實例比率係任意值,且系統可展現其他比率。如可見,在假定CCD與DLY之此比率的情況下,處理效率僅為25%。換言之,處理器花費其CPU循環的四分之三來等待記憶體。
可實現對較快速微處理器時鐘率之某種利用(而無記憶體組構之存取速度方面的相當的增加)的一種已知技術係維持在微處理器本端之快取記憶體。可管理快取記憶體以儲存最近已被存取及/或微處理器預期(經由軟體)在不久的將來存取的資料及指令之複本。在本端快取記憶體技術之一個已知擴展中,微處理器可經程式化以執行被稱為「預載入」之步驟,在該等步驟中執行常式或常式之一部分所需的資料或指令或資料與指令兩者在執行常式之前被從記憶體組構提取且置放於快取記憶體中。
圖1B展示一假設處理之一個實例時序150(依據CPU循環),其中微處理器在第一反覆之前預載入執行常式之多次反覆所需之資料或指令或資料與指令兩者。圖1B之實例時序150假定與用於圖1A之實例時序100之記憶體延遲DLY及常式處理持續時間CCD相同的記憶體延遲DLY及常式處理持續時間CCD之任意相對值。在圖1B實例中,在開始於時間T1之第一計算循環之前執行四個預載入152,繼之以接收剩餘三個。如可見,實例程序可接著執行四個相連之計算循環而不必等待記憶體。
習知預載入技術可存在問題。一個問題係需要在程式碼動態已解決之後將預載入指令最後置於程式碼中。另一問題係預載入距離
(意謂要向前預載入多遠)應理想地考慮到記憶體潛時與常式之計算持續時間兩者。此可能難以達到,因為記憶體潛時及計算持續時間可隨系統而變化,且可在系統中隨著時間的過去而變化。結果可為預載入距離太短,此可表現為快取記憶體在迴圈之反覆完成之前就用完。CPU必須停止迴圈執行且接著(例如經由快取記憶體管理器)花費時間(亦即,CPU循環)以在迴圈執行可繼續之前自記憶體提取資料或指令。另一結果可為預載入距離太長,此可在常式前產生可阻止其他記憶體存取的記憶體存取之聚束(bunch)。
下文呈現一或多個態樣之簡化概要以便提供對此等態樣之基本理解。此概要並非為所有設想之態樣的詳盡概述,且既不意欲識別所有態樣之關鍵或決定性元件亦不描繪任何態樣之範疇。其唯一目的為以簡化形式呈現一或多個態樣之一些概念以作為稍後呈現之更詳細描述的前序。
根據一個例示性實施例之方法可提供在運行時間下最佳化處理器自記憶體之預載入,且在各種態樣中可包括:量測記憶體之運行時間記憶體潛時以產生所量測之運行時間記憶體潛時;判定在處理器上常式的運行時間持續時間且作為結果而產生所判定之運行時間持續時間;及基於所量測之運行時間記憶體潛時及在處理器上常式的所判定之運行時間持續時間來判定運行時間最佳化預載入距離。
在一態樣中,判定運行時間最佳化預載入距離可包括:用所判定之運行時間持續時間除所量測之運行時間記憶體潛時以產生商;及將該商捨位至整數。
在另一態樣中,判定在處理器上常式的運行時間持續時間包括:將由常式使用之快取記憶體暖機;使用暖機之快取記憶體來執行常式複數次;及量測用於執行常式複數次所需之的時間跨距。
在一態樣中,判定運行時間記憶體潛時可包括:識別記憶體載入開始時間;在與該記憶體載入開始時間相關聯的開始時間開始,執行自記憶體之載入;偵測載入之終止;識別與終止相關聯之記憶體載入結束時間;及基於該記憶體載入開始時間及該記憶體載入結束時間來計算所量測之運行時間記憶體潛時。
在進一步之態樣中,識別記憶體載入開始時間可包括讀取中央處理單元(CPU)循環計數器上之開始值,識別記憶體載入終止時間包括讀取CPU循環計數器上之結束值,且計算所量測之運行時間記憶體潛時可包括計算結束值與開始值之間的差。
在一態樣中,計算所量測之運行時間記憶體潛時可包括:提供用於讀取CPU循環計數器之處理系統額外負擔;及基於處理系統額外負擔來調整所計算之(亦即,所量測之)運行時間記憶體潛時。
在一個態樣中,量測所量測之運行時間記憶體潛時可包括:將複數個指標儲存於記憶體中,該複數個指標包含一最後指標及複數個中間指標,該等中間指標中之每一者指向該等指標中之另一者在記憶體中之位置;讀取該等指標直至偵測到對最後指標之存取;量測在讀取指標時流逝之時間;及用被讀取的指標量除流逝之時間以獲得所量測之運行時間記憶體潛時作為估計之運行時間記憶體潛時。
在進一步之態樣中,讀取該等指標直至偵測到對最後指標之存取可包括:基於中間指標中之一者來設定指標存取位置;基於指標存取位置來存取指標中之另一者;基於所存取之另一指標來更新指標存取位置;重複對指標中之另一者的存取及更新指標存取位置。
在一態樣中,根據各種例示性實施例之方法可包括提供複數個處理器操作中之每一者的運行時間持續時間之資料庫,且在一相關態樣中,判定在處理器上常式之運行時間持續時間可基於該資料庫。
在另一態樣中,根據各種例示性實施例之方法可包括:執行常
式之N次反覆;及在該執行期間,使用運行時間最佳化預載入距離來預載入處理器之快取記憶體。
在一個相關態樣中,預載入快取記憶體可包括針對對應於運行時間最佳化預載入距離的常式之若干反覆而用資料及指令來預載入快取記憶體。
在另一相關態樣中,執行N個反覆可包括:執行開端反覆,每一開端反覆包括一次預載入而無常式之執行;執行本體反覆,每一本體反覆包括一次預載入及常式之一次執行;及執行結尾反覆,每一結尾反覆包括常式之一次執行而無預載入。
在一個態樣中,開端反覆可針對常式之一量的反覆而用資料或指令來填充快取記憶體,該量等於運行時間最佳化預載入距離。
在一態樣中,本體反覆可執行等於自N減去運行時間最佳化預載入距離的一量的反覆。
根據一個例示性實施例之裝置可提供在運行時間下最佳化處理器自記憶體之預載入,且在各種態樣中可包括:用於量測記憶體之運行時間記憶體潛時及產生量測之運行時間記憶體潛時的構件;用於判定在處理器上常式之運行時間持續時間且作為結果而產生所判定之運行時間持續時間的構件;及用於基於所量測之運行時間記憶體潛時及所判定之在處理器上常式之運行時間持續時間來判定運行時間最佳化預載入距離的構件。
根據一個例示性實施例之電腦程式產品可提供包含指令之電腦可讀媒體,當由處理器讀取及執行時該等指令導致處理器執行用於在運行時間下最佳化處理器自記憶體之預載入的操作,且在各種態樣中該等指令可包括:導致處理器量測記憶體之運行時間記憶體潛時以產生量測之運行時間記憶體潛時的指令;導致處理器判定在處理器上常式之運行時間持續時間及作為結果而產生所判定之運行時間持續時間
的指令;及導致處理器基於量測之運行時間記憶體潛時及所判定之在處理器上常式之運行時間持續時間來判定運行時間最佳化預載入距離的指令。
100‧‧‧計時
150‧‧‧計時
152‧‧‧預載入
200‧‧‧運行時間記憶體潛時量測程序
300‧‧‧迴圈持續時間量測程序
400‧‧‧常式計算持續時間量測模組
402‧‧‧CPU循環計數器
404‧‧‧計算持續時間之核心量測
406‧‧‧模組
408‧‧‧快取記憶體模組
410‧‧‧主記憶體
500‧‧‧最佳化預載入迴圈程序
600‧‧‧關係
602‧‧‧線
604‧‧‧線
606‧‧‧線
610A‧‧‧預載入
610B‧‧‧預載入
700‧‧‧最佳化預載入迴圈程序
800‧‧‧指標追逐程序
900‧‧‧處理器
902‧‧‧中央處理單元(CPU)
904‧‧‧通用快取記憶體
906‧‧‧轉譯後援緩衝器(TLB)
908‧‧‧記憶體組構
910‧‧‧記憶體介面
呈現隨附圖式以協助描述本發明之實施例且其僅被提供用於說明實施例而非對其加以限制。
圖1A展示可由微處理器系統在無預載入之情況下達成的通用微處理器系統利用率(依據用於處理之系統循環及用於記憶體存取之系統循環)。
圖1B展示可由使用基於跨步之預載入的微處理器系統達成之一般微處理器系統利用率(依據用於處理之系統循環及用於記憶體存取之系統循環),該基於跨步之預載入根據處理速度及記憶體組構存取具有跨步在一時間間隔中的假設匹配。
圖2展示在根據一個例示性實施例之一種方法中用以量測運行時間記憶體潛時之一個程序的邏輯流程圖。
圖3展示在根據一個例示性實施例之一種方法中用以量測迴圈計算之持續時間之一個程序的邏輯流程圖。
圖4展示在根據一個例示性實施例之一種方法中用以量測迴圈計算之持續時間之一個程序的邏輯方塊圖。
圖5展示根據一個實施例之包括預載入之一個迴圈程序的邏輯流程圖。
圖6展示用於計算常式之CPU循環與用於根據由根據一或多個實施例之方法及系統提供的預載入距離來預載入資料及/或指令之CPU循環的實例關係。
圖7展示根據另一實施例之包括預載入之一個迴圈程序的邏輯流程圖。
圖8展示根據一個例示性實施例之一個指標追逐程序的邏輯流程圖。
圖9展示支援根據各種例示性實施例之方法及系統的一個微處理器及記憶體環境。
本發明之態樣揭示於針對本發明之特定實施例之以下描述及相關圖式中。可設計出替代實施例而不脫離本發明之範疇。另外,本發明之眾所熟知之元件將不加以詳細描述或將被省略以便不混淆本發明的相關細節。
詞語「例示性」在本文中用以意謂「充當一實例、例子或說明」。不必將本文中描述為「例示性」之任何實施例解釋為比其他實施例較佳或有利。同樣,術語「本發明之實施例」並不要求本發明之所有實施例包括所論述之特徵、優點或操作模式。
本文中所使用之術語僅用於達成描述特定實施例之目的且不意欲限制本發明之實施例。如本文中所使用,單數形式「一」及「該」意欲亦包括複數形式,除非上下文另有清晰指示。應進一步理解,術語「包含」、「包括」在本文中使用時指定所陳述之特徵、整體、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群組之存在或添加。
另外,許多實施例係依據待由(例如)計算器件之元件執行之動作序列來描述。應認識到,本文中所描述之各種動作可藉由特定電路(例如,特殊應用積體電路(ASIC))、藉由一或多個處理器所執行之程式指令或藉由兩者之組合來執行。另外,可認為本文中所描述之此等動作序列完全體現於任何形式之電腦可讀儲存媒體內,該電腦可讀儲存媒體中儲存有在執行時將使一相關聯之處理器執行本文中所描述之功能性的電腦指令之對應集合。因此,本發明之各種態樣可以許多不
同形式體現,其皆被預期在所主張之標的物之範疇內。另外,對於本文中所描述之實施例中的每一者而言,任何此等實施例之對應形式可在本文中被描述為(例如)「經組態以執行所描述之動作的邏輯」。
可將各種實施例實施於處理系統中,該處理系統包括具有算術邏輯單元(ALU)之中央處理單元(CPU)、在ALU本端之快取記憶體、在ALU與匯流排之間的介面及/或在快取記憶體與匯流排之間的介面、耦接至匯流排微處理器之一或多個記憶體單元、經組態以儲存及擷取快取記憶體內容之快取記憶體管理器、經組態以讀取及解碼電腦可讀指令及根據該等指令經由介面來控制ALU、快取記憶體管理器或存取記憶體單元的CPU控制器。在一個實施例中,CPU包括可由(例如)CPU控制器存取之CPU循環計數器。
應理解,在實例處理系統中的CPU之所描述之組件係邏輯特徵且未必以一對一方式與積體電路(IC)晶片之離散區段、離散IC晶片或其他離散硬體單元對應。舉例而言,可使用具有包括於CPU控制器中之ALU或具有分散式CPU控制器之CPU來實施實施例。在一個實施例中,CPU可包括由資料快取記憶體及指令快取記憶體形成之快取記憶體。
在一個實施例中,CPU可為一系列商業微處理器中之一者,例如(不按特定優先次序)Qualcomm Snapdragon®、Intel(例如,Atom)、TI(例如,OMAP)或ARM Holdings ARM系列處理器,或其類似者。
根據一個實施例之方法可藉由以下各者之組合來計算最佳化預載入距離:在運行時間下量測記憶體潛時、計算在運行時間下每迴圈之持續時間、接著基於所量測之運行時間記憶體潛時及計算持續時間值來計算最佳化預載入距離。根據此實施例及其他所揭示之實施例,方法及系統可在一實際處理環境中提供在實際運行時間下可為最佳化之預載入距離。由根據例示性實施例之方法及系統提供的最佳化預載
入距離將被替代地稱作「最佳化運行時間預載入距離」。
根據一個例示性實施例之方法可包括:藉由在運行時間下讀取微處理器循環計數器(在此描述中其將被稱為開始值),接著在測試位址處執行資料之載入指令且在完成該載入指令時讀取微處理器循環計數器(且此稱為結束值)來量測運行時間記憶體潛時。所量測之運行時間記憶體潛時將為結束值與開始值之間的差(依據CPU循環)。在一態樣中,根據一個例示性實施例量測運行時間記憶體潛時可包括清除本端快取記憶體之測試資料以迫使載入指令存取測試位址而非僅自本端快取記憶體傳回「命中」。根據一個例示性實施例量測運行時間記憶體潛時可包括資料封鎖操作以防止微處理器對操作重新排序及因此在測試期間執行並不實際反映運行時間記憶體潛時的若干機器循環。
根據一個例示性實施例之方法可包括量測每迴圈之運行時間計算持續時間。在一個態樣中,量測每迴圈之運行時間計算持續時間可包括:建立開始時間且接著執行對常式之N次呼叫;及在完成對常式之最後呼叫時識別結束時間。可將所量測之運行時間計算持續時間計算作為:結束值與開始值之間的差除以N。
在一個實施例中,量測運行時間計算持續時間可包括在進行量測之前將快取記憶體暖機。在一個態樣中,將快取記憶體暖機可包括執行(例如)常式之N次反覆及使用習知快取記憶體管理技術來儲存常式有可能需要之資料或指令或資料與指令兩者。
在一個實施例中,可藉由可由以下偽碼表示之程序來完成在運行時間下量測每迴圈常式之計算持續時間:
在一個替代性實施例中,可藉由估計計算持續時間來近似得出常式之計算持續時間的量測結果。可使用指令潛時表來產生計算持續時間估計。
根據一個實施例之方法及系統可包括以可由下式表示之方式來計算最佳化運行時間預載入距離:
其中「MEM_DELAY」係量測之運行時間記憶體潛時,「M_CDPL」係每迴圈的量測之計算持續時間,「ceiling」係升值捨位至下一整數的運算,及「RTPD」係以迴圈為單位之最佳化運行時間預載入距離。
在一個實施例中,MEM_DELAY及M_CDPL可為CPU循環之單位。在一個替代性實施例中,MEM_DELAY及M_CDPL可為系統計時器之單位,如在稍後部分中予以更詳細描述。
圖2展示根據一個例示性實施例之一種方法之一個運行時間記憶體潛時量測程序200的邏輯流程圖。
參看圖2,在一個實施例中,運行時間記憶體潛時量測程序200可以在202處清除對應於記憶體組構(正針對其量測潛時)中之位址的快取記憶體開始。一般熟習此項技術者在查看本發明之後可容易使用此等技術者所擁有之被應用於正執行量測之特定處理器系統環境的習知碼寫入技能來實施在202處對快取記憶體的清除。因此省略了進一
步之詳細描述。在於202處進行清除之後,運行時間記憶體潛時量測程序200可轉至204以設定開始時間。在一個實施例中,在204處設定開始時間可包括在204A處讀取正在其中量測運行時間記憶體潛時之處理器系統環境之CPU的CPU循環計數器(圖2中未展示)。如一般熟習此項技術者在查看本發明之後應理解,在一些處理環境中,可能需要管理特權來讀取CPU循環計數器。此等技術者亦應理解,系統特權控制可使得將對CPU循環計數器之讀取包括於應用程式中並不完全實際。為了解決此等問題且為了提供進一步及替代之特徵,在於稍後之部分中更詳細描述的另一實施例中,在204處設定開始時間可包括例如在204B處執行「當日時間」讀取,以代替讀取CPU循環計數器。
仍參看圖2,在於204處設定開始時間之後,運行時間記憶體潛時量測程序200可轉至206,在206處其執行針對在所測試之一系列位址內的位址的載入指令。在一態樣中,對特定載入指令之選擇及對關於運行時間記憶體潛時之可選存取或載入參數(若有的話)的設定可根據將由應用程式使用的將利用根據例示性實施例所計算之預載入的特定載入指令及對載入參數(若有的話)之設定。
仍參看圖2,在於206處執行載入指令之後,運行時間記憶體潛時量測程序200可在一個實施例中轉至208,在208處其可執行資料障壁指令。如一般熟習此項技術者已知,資料障壁指令可用以防止CPU對指令重新排序。如一般熟習此項技術者在查看本發明之後應顯而易見,重新排序可顯著地影響所量側之運行時間記憶體潛時之精確度。此等技術者可容易應用已知為特定用於特定處理系統環境(在其中正執行運行時間記憶體潛時量測程序200)的習知技術。因此省略了對用於在208處實施資料障壁指令之技術的進一步詳細描述。應理解,實務上可在208處在無資料障壁指令的情況下對某些處理系統環境執行根據一或多個實施例之運行時間記憶體潛時量測。舉例而言,可在根
據一或多個例示性實施例之方法及系統中使用指標追逐,且在稍後之部分中更詳細描述了實例。關於資料障壁指令,作為一實例,在ARM Inc.架構版本7處理器上有DSB(資料同步障壁)指令。
繼續參看圖2,在一個實施例環境中,在於208處執行資料障壁指令之後或緊接在於206處開始載入指令(在省略了於208處執行資料障壁指令的實施例中)之後,運行時間記憶體潛時量測程序200可轉至210以等待在206處的資料載入指令之完成。應理解,210處之等待未必獨立於206處之對載入指令的執行。換言之,206處之「執行載入指令」可包括在210處等待完成及對完成之偵測。在一個實施例中,在於210處偵測到在206處執行之載入指令的完成時,運行時間記憶體潛時量測程序200可轉至212,以偵測在206處執行之載入指令的結束時間(換言之,讀取在206處開始執行之載入指令被偵測為已完成的時間)。在一個實施例(其可與在204A處藉由讀取CPU循環計數器來偵測開始時間的實施例組合使用)中,在212處偵測在206處執行之載入指令的結束時間可包括在212A處讀取相同之CPU循環計數器。在另一實施例(其可與在204B處藉由讀取當日時間來偵測開始時間的實施例組合使用)中,在212處偵測在206處執行之載入指令的結束時間及在212B處執行對當日時間之另一讀取。如在稍後之部分中更詳細描述,基於與統計處理組合的結束當日時間與開始當日時間之間的差,可提供對運行時間記憶體潛時之CPU循環之數目的精確估計。
仍參看圖2,在一個實施例中,在於212處偵測在206處執行之載入程序的結束時間之後,運行時間記憶體潛時量測程序200可轉至214以執行對結束時間的調整以補償在偵測開始時間時使用之CPU循環。在包括藉由讀取CPU循環計數器而在204A處偵測開始時間及在212A處偵測結束時間的實施例中,214處之調整可包括自212A處所讀取之CPU循環計數減去執行CPU循環計數器之彼讀取所需的CPU循環之數
目。換言之,在使用CPU循環計數器來量測記憶體潛時的實施例中,運行時間記憶體潛時量測程序200可包括補償在讀取彼CPU循環計數器方面之額外負擔。在一個替代例中,在包括在204B處偵測開始當日時間及在212B處偵測結束當日時間的實施例中,214處之調整可包括自212B處所讀取之當日時間減去在204B處彼讀取所招致之額外負擔。
繼續參看圖2,在於214處補償額外負擔之後,在一個實施例中,運行時間記憶體潛時量測程序200可轉至216,在216處其基於204處所偵測之開始時間與212處所偵測之結束時間之間的差及在204處所偵測之開始時間(其在214處針對額外負擔進行了補償)來設定所量測之運行時間記憶體潛時(MEM_DELAY)。在基於CPU循環計數器來量測MEM_DELAY之值的實施例中,MEM_DELAY係自在214處針對讀取彼CPU循環計數器之額外負擔進行了調整或補償的212A處所讀取之CPU循環計數器減去204A處所讀取的CPU循環計數器。
繼續參看圖2,應理解,在214處針對額外負擔之補償未必係直接對212A處所讀取之CPU循環計數器執行。舉例而言,在一個實施例中,可將在214處針對額外負擔之補償包括於在216處對CPU計數器值或系統計時器值的減法中。
圖3展示在根據一個例示性實施例之一種方法中一個迴圈持續時間量測程序300的邏輯流程圖,該程序300用以量測一個迴圈(其意謂執行在實際應用程式中將以迴圈方式執行之給定常式)之持續時間。
參看圖3,在一個實施例中,迴圈持續時間量測可獲得當用彼迴圈所需的資料及指令來預載入快取記憶體時將展現的迴圈持續時間。如一般熟習此項技術者在查看本發明之後應瞭解,在根據例示性實施例之方法及系統中,獲得此量測可進一步提供運行時間最佳化預載入距離。在一個態樣中,可透過量測自身包括快取記憶體之預載入來實
現獲得當用彼迴圈所需的資料及指令來預載入快取記憶體時將展現的迴圈之運行時間計算持續時間的量測。
繼續參看圖3,進一步根據一個態樣,計算持續時間量測程序300可藉由在304處執行被稱為快取記憶體之「暖機」的步驟來提供快取記憶體之此預載入。在304處對快取記憶體之暖機可包括緊接在量測之前運行迴圈之K個反覆。在一個實例中,在304處對快取記憶體之暖機可包括:在3042處初始化迴圈計數器(圖3中未展示)之指數「i」;接著在3044處呼叫待量測之常式;在於3046處完成迴圈計數器的遞增之後及在重複進行反覆K次之後,條件區塊3048便可將迴圈計算持續時間量測程序300傳遞至306。在306處,迴圈持續時間量測程序300可獲得開始時間,其中在一個態樣中「開始時間」可為CPU循環計數器值(例如,如可在306A處讀取)。在一替代性或補充態樣中,可藉由讀取當日時間(諸如在306B處)來獲得開始時間。
仍參看圖3,在一個實例中,在於306處獲得開始時間之後,迴圈計算持續時間量測程序300可轉至308,在308處其使用304處所提供之經暖機之快取記憶體來反覆進行常式N次。在一個實施例中,308處之反覆可在3082處將指數「i」初始化至0值(亦即,重設迴圈計數器),且接著轉至3084,在3084處其可呼叫待量測之常式。與在3084處呼叫或執行常式相關聯地,迴圈計算持續時間量測程序300可遞增指數「i」(亦即,遞增迴圈計數器),且接著進行至條件區塊3086。若指數「i」尚未達到N,則迴圈計算持續時間量測程序300可返回至3084且再次呼叫待量測之常式。當指數「i」達到N時,條件區塊3086將迴圈計算持續時間量測程序300發送至310以獲得結束或終止時間。進一步根據藉由讀取CPU循環計數器值來獲得「開始時間」的態樣,可藉由再次讀取(例如,在310A處)CPU循環計數器值來獲得結束時間。進一步根據藉由讀取當日時間來獲得開始時間的替代性或補充態
樣,可藉由再次讀取當日時間來獲得結束時間。
繼續參看圖3,在於310處獲得結束時間之後,迴圈計算持續時間量測程序300可在一個實施例中轉至312以調整或補償在彼310中獲得結束時間所招致的任何固定額外負擔。舉例而言,在一個態樣中,在312處,可自310A處所讀取之CPU循環計數器減去固定額外負擔。在另一態樣中,在312處,可自310B處所讀取之系統計時器減去固定之額外負擔。應理解,在312處針對額外負擔之補償調整未必係直接對310處所讀取之CPU循環計數器值執行的。在一個實施例中,例如,可將在312處針對額外負擔之補償或調整包括於在314處的CPU計數器值之減法(下文予以更詳細解釋)中。
仍參看圖3,在於312處補償或調整額外負擔之後或在一個態樣中緊接在於310處獲得結束時間之後,迴圈計算持續時間量測程序300便可轉至314以計算所量測之每迴圈計算持續時間(替代地稱為M_CDPL)。在一個實施例中,可在314處藉由自310處所獲得之結束時間或自310處所獲得的在312處針對額外負擔加以調整的結束時間減去306處所獲得之開始時間(其中「時間」可為CPU計數器值)且用N除該差來計算或獲得M_CDPL。換言之,根據此實施例,M_CDPL係平均值。在開始時間及結束時間被讀取為CPU循環計數的態樣中,M_CDPL可為CPU循環之平均量。
圖4將位於一個系統中且用於實踐根據一或多個例示性實施例之方法的一個常式計算持續時間量測模組400之邏輯方塊圖展示作為可替代或補充圖3的迴圈計算持續時間量測程序300之邏輯流程圖的表示。參看圖4,一個常式計算持續時間量測模組400可包括CPU循環計數器402,該CPU循環計數器402接收CPU CLOCK(CPU時鐘)且又饋送可(例如)由微處理器(圖4中未明確展示)實施之對計算持續時間的核心量測404。常式計算持續時間量測模組400可進一步包括電腦指令,該
等電腦指令儲存於微處理器系統之記憶體(圖4中未明確展示)中,在該微處理器系統中獲得所量測之記憶體延遲MEM_DELAY及所量測之每迴圈計算持續時間M_CDPL。在一個實施例中,可將計算持續時間之核心量測404的電腦指令組件載入或儲存於在正被量測之處理系統之CPU(圖4中未明確展示)本端的快取記憶體(圖4中未明確展示)中。在一個實施例中,計算持續時間之核心量測404的電腦指令組件可包括電腦指令,當由正被測試之處理系統的CPU讀取時該等電腦指令導致CPU執行根據迴圈計算持續時間量測程序300之方法。
仍參看圖4,在一個態樣中,CPU循環計數器402可為具有(例如)CPU循環計數器器件(未獨立展示)與電腦可讀指令之組合的CPU循環計數器模組,該等電腦可讀指令導致CPU或與CPU相關聯之控制器器件(未由圖4明確展示)讀取CPU循環計數器器件。在一個實施例中,CPU循環計數器402可實施圖3之迴圈計算持續時間量測程序300的CPU循環計數器讀取306A及310A。
繼續參看圖4,一個常式計算持續時間量測模組400可包括或可存取具有常式(將獲得該常式之所量測之每迴圈計算持續時間M_CDPL)之模組406。模組406可包括與儲存(例如)於處理系統之記憶體中的電腦可讀指令組合的處理系統(正在其中獲得M_CDPL)之CPU。在一個實施例中,一個常式計算持續時間量測模組400可包括或可存取快取記憶體模組408。快取記憶體模組408可包括資料快取記憶體模組(諸如標記為「D$」的實例)及指令快取記憶體模組(諸如標記為「I$」的實例)。在一個實施例中,可根據習知快取記憶體硬體及快取記憶體管理技術來實施快取記憶體模組,該快取記憶體模組係根據本發明而經調適以根據所揭示之實施例進行執行。在一個態樣中,快取記憶體模組408可實施在圖3之迴圈計算持續時間量測程序300之304處暖機的快取記憶體。在一個態樣中,快取記憶體模組408
可實施根據例示性實施例而被預載入之快取記憶體(諸如在本發明之稍後部分參看圖5、圖6及圖7予以更詳細描述)。
仍參看圖4,一個常式計算持續時間量測模組400可包括或可存取主記憶體410。在一個實施例中,可根據習知記憶體組構技術來實施主記憶體410,該主記憶體係根據本發明而經調適以根據所揭示之實施例進行執行。
在獲得所量測之運行時間記憶體潛時MEM_DELAY及所量測之每迴圈計算持續時間M_CDPL之後,在根據一個實施例之方法及系統中,可計算RTPD(最佳化運行時間預載入距離)。在一個實施例中,可根據以上方程式(1)藉由用M_CDPL除MEM_DELAY且若產生非整數商則應用升值捨位至下一整數之頂值運算來計算RTPD。舉例而言,若MEM_DELAY具有(例如)100之任意值且M_CDPL具有(例如)30之任意值,則商將為3.3333,其為非整數。用於MEM_DELAY及M_CDPL之此等任意值的頂值運算將因此產生為4之最佳化RTPD。
圖5展示根據一個實施例之一個最佳化預載入迴圈程序500的邏輯流程圖,該程序500包括用最佳化RTPD運行時間進行預載入。最佳化預載入迴圈程序500之實例操作將假定正執行R個反覆之迴圈,其中R為一給定整數。參看圖5,一個最佳化預載入迴圈程序500可自任意開始狀態502開始且轉至開端504,該開端504用資料或指令或資料與指令兩者來預載入快取記憶體(圖5中未展示)以用於執行等於最佳化RTPD之若干迴圈。圖5的一個最佳化預載入迴圈程序500之邏輯流程圖將最佳化RTPD標記為「PRELOAD_DIST」。在一個最佳化預載入迴圈程序500中,開端504可以5042處之初始化開始,其用以初始化(例如,設定至零)用於計數預載入之迴圈指數PRELOAD_CNT及用於計數執行常式(正獲得用於該常式之PRELOAD_DIST)之迴圈的迴圈指數LOOP_CNT。應瞭解,如參考圖2、圖3及圖4所描述之
PRELOAD_DIST在常式之特定、當前運行時間環境中針對該常式被最佳化。在5042處之初始化之後,開端504可轉至5044以針對一個迴圈反覆(亦即,常式之一次執行)而預載入資料或指令或資料與指令兩者,且接著轉至5046以遞增預載入計數指數PRELOAD_CNT。
在一態樣中,在5046處將PRELOAD_CNT遞增1之後,開端504轉至條件區塊5048。若PRELOAD_CNT小於PRELOAD_DIST,則開端504返回至5044以針對另一迴圈而預載入資料或指令或資料與指令兩者。開端504繼續直至RELOAD_CNT等於PRELOAD_DIST,隨之條件區塊5048可將最佳化預載入迴圈程序500發送至506以起始針對另一迴圈之資料或指令或資料與指令兩者的預載入,且接著發送至508以將PRELOAD_CNT遞增1。在一個實施例中,最佳化預載入迴圈程序500可自508(遞增PRELOAD_CNT)進行至510,在510處其可執行迴圈之反覆。應理解,可在不等待506處起始之預載入結束的情況下完成510處迴圈之反覆。亦應理解,如由一或多個實施例所提供,在510處所執行之常式的一個反覆可使用開端504之在5044處執行的第一預載入。
參看圖5,在於510處執行常式之一個反覆之後,一個最佳化預載入迴圈程序500可進行至512(遞增LOOP_CNT),且接著進行至條件區塊514。在一個實施例中,在條件區塊514處,若PRELOAD_CNT小於R,則最佳化預載入迴圈程序500可返回至506以執行另一預載入,接著返回至508(在508處其遞增PRELOAD_CNT),接著返回至510(在510處其執行常式之另一反覆),接著返回至512以遞增LOOP_CNT,且接著返回至條件區塊514。在一個態樣中,自514至506、接著穿過508、510、接著至512且返回至514的迴圈將繼續直至PRELOAD_CNT等於R。在一個實施例中,最佳化預載入迴圈程序500可接著轉至將LOOP_CNT與R相比較的另一條件區塊516。該條件區塊516操作以在已執行常式之R個反覆時終止最佳化預載入迴圈程序500。應瞭解,
在最佳化預載入迴圈程序500的進入條件區塊516之第一執行個體處,LOOP_CNT將小於R。原因係開端504在於510處執行常式之反覆的第一執行個體之前執行了PRELOAD_DIST預載入。因此,在進入條件區塊516之彼第一執行個體處,最佳化預載入迴圈程序500轉至510(在510處其執行常式之另一反覆),接著轉至512以遞增LOOP_CNT,穿過條件區塊514(因為PRELOAD_CNT保持處於R),且返回至條件區塊516。應瞭解,自條件區塊516至510至512至514且返回至516的此迴圈(每一迴圈遞增LOOP_CNT)將繼續直至LOOP_CNT等於R,在LOOP_CNT等於R時最佳化預載入迴圈程序500轉至邏輯結束或終止狀態518。
圖6展示CPU循環之實例關係600,該等CPU循環用於計算常式及用於根據由根據一或多個實施例之方法及系統提供的預載入距離來預載入資料及/或指令。線602表示在處理器系統之CPU與記憶體組構之介面處的CPU循環,線604表示在記憶體組構內之假設ping(偵測)介面,且線606表示與執行迴圈有關的CPU循環,每一迴圈為常式之反覆。實例關係600假定最佳化運行時間預載入距離RTPD=3,且R=9。應理解,此等為任意選擇之值而並不意欲作為對任何實施例或其任何態樣之任何限制。參看圖6,自T50至T52之CPU循環可表示在開端(例如,圖5之開端504)期間執行之3個預載入610A。在T52處,起始另一預載入610B且執行第一迴圈LOOP_1。預載入610B可(例如)為圖5的506處之預載入的第一執行個體,且LOOP_1可為圖5之在510處執行常式之反覆的第一執行個體。T54可為偵測到所執行之預載入之數目等於R的第一執行個體,且因此將不執行進一步之預載入。參看圖5之最佳化預載入迴圈程序500,圖6之T54可對應於條件區塊514處之第一執行個體,其中PRELOAD_CNT=R。
繼續參看圖6,在一個態樣中,LOOP_7…LOOP_9可參看圖5
而對應於在510處對最佳化預載入迴圈程序500之反覆的逐次執行(自條件區塊514迴圈至條件區塊516、接著迴圈至510(在510處執行常式之反覆)、接著迴圈至512以遞增LOOP_CNT且返回至條件區塊514直至由條件區塊516偵測到LOOP_CNT等於R(在此實例中為9))。如可由一般熟習此項技術者自根據最佳化預載入迴圈程序500的所描述之實例操作所見,在一態樣中,經過開端之反覆的數目可較佳地匹配經過結尾之反覆的數目。
圖7展示根據另一實施例之一個最佳化預載入迴圈程序700的邏輯流程圖,該程序700包括預載入。將在假定一常式之R個迴圈(已根據一或多個例示性實施例獲得該常式之最佳化運行時間預載入距離)的情況下描述實例。舉例而言,可假定已使用圖2之運行時間記憶體潛時量測程序200來量測運行時間記憶體潛時MEM_DELAY且使用圖3之運行時間迴圈持續時間量測程序300或圖4之常式計算持續時間量測模組400來獲得所量測之每迴圈計算持續時間M_CDPL。參看圖7,在一個實施例中,最佳化預載入迴圈程序700可在任意開始狀態702處開始且接著轉至開端710。在一個態樣中,開端710針對PRELOAD_DIST個迴圈而用資料或指令或資料與指令兩者來預載入快取記憶體。
繼續參看圖7,在一個最佳化預載入迴圈程序700中,開端710可以7102處之初始化開始,其用以初始化(例如,設定至零)用於計數預載入之迴圈指數PRELOAD_CNT及用於計數執行常式(針對該常式獲得PRELOAD_DIST)之迴圈的迴圈指數LOOP_CNT。應瞭解,如參考圖2、圖3及圖4所描述之PRELOAD_DIST在常式之特定、當前運行時間環境中針對該常式而被最佳化。在於7102處進行最佳化之後,開端710可轉至7104以針對一個迴圈反覆(亦即,常式之一次執行)而預載入資料或指令或資料與指令兩者,且接著轉至7106以遞增預載入計數
指數PRELOAD_CNT。
繼續參看圖7,且繼續描述開端710之一個實例操作,在於7106處將PRELOAD_CNT遞增1之後,一個實例最佳化預載入迴圈程序700可轉至條件區塊7108。若PRELOAD_CNT小於PRELOAD_DIST,則在一個態樣中開端710可返回至7104以針對另一迴圈而預載入資料或指令或資料與指令兩者。在一個態樣中,開端710繼續直至PRELOAD_CNT等於PRELOAD_DIST,當PRELOAD_CNT等於PRELOAD_DIST時條件區塊7108可將最佳化預載入迴圈程序700送至本體720。在本體720中,在一個態樣中,執行常式之反覆,該等反覆包括快取記憶體之預載入。進一步根據此一個態樣,本體720可繼續直至已執行R個預載入。
仍參看圖7,在一個實施例中,本體720可包括在7202處針對常式之反覆進行的預載入,接著在7204處遞增PRELOAD_CNT、在7206處執行迴圈常式、在7210處遞增LOOP_CNT,且轉至條件區塊7208。在一個態樣中,本體720可重複上述迴圈直至條件區塊7210偵測到已執行R個預載入。在一個實施例中,最佳化預載入迴圈程序700可在完成本體720之後轉至結尾730。結尾730使用自未由本體720使用之預載入所獲得的資料及指令來執行常式之反覆。在一個實施例中,結尾730可包括在7302處執行迴圈常式之反覆、在7304處進行LOOP_CNT之相關聯遞增,直至條件區塊7306偵測到LOOP_CNT等於R,換言之,直至已執行迴圈常式之R個反覆。在一個態樣中,最佳化預載入迴圈程序700可接著轉至結束或終止狀態740。
在一個實施例中,可提供對運行時間記憶體潛時及計算持續時間之量測而無需具有存取硬體計數器或進行快取記憶體管理之特權。在一個實施例中,可使用(例如)gettimeofday()呼叫及統計後處理來計算運行時間記憶體潛時。在另一實施例中,可藉由「指標追逐」來提
供對運行時間記憶體潛時之量測,概述地該「指標追逐」可包括自記憶體讀取一連串V個指標,此將需要V個充分存取時間,因為每一步驟要求在其可進行至V個存取中之下一存取之前接收被存取指標。圖8展示根據一個例示性實施例之一個指標追逐程序800。參看圖8,在一態樣中,指標追逐程序800可包括在802處以CPU將一連串V個指標儲存於記憶體中之V個位置處開始,其中V為整數。在一個態樣中,第一指標指向第二指標,第二指標指向第三指標,等等。因此,根據此態樣,CPU僅需要保持第一指標之位址。
繼續參看圖8,在一態樣中,指標追逐程序800可包括在於802處儲存一連串指標之後,CPU轉至804,在804處其可(例如)藉由用第一指標之位址(亦即,位置)載入位址暫存器(未圖示)來初始化LOCATION(位置)。在一個態樣中,指標追逐程序800可在於804處初始化LOCATION之後轉至806且開始(例如,設定至零)粗計時器。使用術語「粗計時器」係因為其將量測之持續時間近似為平均存取時間的V倍而非不得不量測單一存取之短得多的持續時間。
繼續參看圖8,在一個態樣中,在於806處初始化粗計時器之後,指標追逐程序800可轉至808且將READ COUNT設定至1。如下文予以更詳細描述,在一態樣中,在存取V個指標中之每一者之後遞增READ COUNT(讀取計數),且當該值達到V時終止反覆迴圈。在於808處將READ COUNT設定至1之後,指標追逐程序800可在進一步之態樣中轉至810,在810處CPU可使用804處所提供之第一指標之位址來起始對所量測之記憶體的讀取存取,以獲得V個指標中之第一者。指標追逐程序800之功能係量測記憶體存取延遲,且因此直到由CPU接收到810處所存取之指標(在此執行個體中為第一指標)該程序才前進至測試區塊814。進一步根據此態樣,在於812處接收到此指標時,指標追逐程序800便可轉至逸出或終止條件區塊814以判定是否已執行
該等指標讀取中之V個指標讀取。由於此時之描述係處於V個讀取之第一反覆,所以READ COUNT小於V,因此指標追逐程序800可回應於在終止條件區塊814處偵測到「否」而轉至816,在816處CPU將用於下一次讀取之LOCATION更新至該指標(在此執行個體中為在812處自記憶體接收之「第一指標」)。繼續此實例,在一個態樣中,在於816處更新LOCATION之後,指標追逐程序800可轉至818,在818處其將READ COUNT遞增1,且接著轉至810以讀取由在先前接收812處接收之指標所指向的位置,在此第一反覆中該指標為第一指標,該第一指標又可為第二指標之位址。
仍參看圖8,根據一個態樣,上述程序可繼續直至在814處所偵測到之READ COUNT為V。在滿足此條件時,逸出或終止指標追逐程序800便可轉至820(讀取粗計時器),且接著轉至822,在822處其可用V(其為反覆之數目)除由粗計時器反映之已流逝時間。除法的結果將為對記憶體存取延遲或MEM_DELAY之估計。應理解,若V為2的冪,則除法可為已流逝時間之log(基數2)的右移運算。
仍參看圖8,應瞭解,與可用以量測個別記憶體存取時間的奈秒解析度計數器存取相比,使用者應用程式可更容易使用粗計時器(例如,Getimeofday()特徵)。一般熟習此項技術者在查看本發明之後亦應理解,可使用用於偵測存取所有指標之完成的替代性構件。舉例而言,並非計數存取之數目,一連串指標中之最後指標可被指派一特定最後指標值,且在每一存取將下一指標傳回至CPU之後,可將該下一指標與上一指標值相比較。當偵測到匹配時,讀取程序終止且如先前所描述用READ_COUNT除已流逝時間。
圖9描繪處理器900之功能性方塊圖。900可體現任何類型之計算系統,諸如伺服器、個人電腦、膝上型電腦、電池供電型電腦、袖珍掌上型PC、個人數位助理(PDA)或其他行動計算器件(例如,行動電
話)。
在一個實施例中,處理器900可組態有CPU 902。在一個實施例中,CPU 902可為超純量設計,其具有多個平行管線。在另一實施例中,CPU 902可包括按管道級(pipe stage)組織之各種暫存器或鎖存器,及一或多個算術邏輯單元(ALU)。
在一個實施例中,處理器900可具有通用快取記憶體904,其中記憶體位址轉譯及權限係由主要轉譯後援緩衝器(TLB)906管理。在另一實施例中,一單獨指令快取記憶體(未圖示)及一單獨資料快取記憶體(未圖示)可代替通用快取記憶體904,或除通用快取記憶體904之外亦可具有該單獨指令快取記憶體及該單獨資料快取記憶體中之一者或兩者。在具有一單獨資料快取記憶體及一單獨指令快取記憶體中之一者或兩者之實施例的一態樣中,可由一單獨指令轉譯後援緩衝器(未圖示)或一單獨資料轉譯後援轉譯緩衝器(未圖示)或單獨指令轉譯後援緩衝器與單獨資料轉譯後援轉譯緩衝器兩者來替代或補充TLB 906。在另一實施例中,處理器900可包括一用於通用快取記憶體906或用於單獨指令快取記憶體或單獨資料快取記憶體或單獨指令快取記憶體與資料快取記憶體兩者中之任一者的二級(L2)快取記憶體(未圖示)。
在一個實施例中,通用快取記憶體904與TLB 906一起可能在偵測未命中及對應於未命中之動作方面係根據習知快取記憶體管理。舉例而言,在此一個實施例之一態樣中,通用快取記憶體中之未命中可導致在(例如)記憶體介面910之控制下存取主(例如,晶片外)記憶體或記憶體組構(諸如記憶體組構908)。類似地,在實施例之一態樣中,使用一單獨資料快取記憶體及一單獨指令中之一者或兩者。
應理解,主記憶體組構908可代表任何已知類型之記憶體及記憶體類型之任何已知組合。舉例而言,記憶體組構908可包括單列直插式記憶體模組(SIMM)、雙列直插式記憶體模組(DIMM)、快閃記憶體
(例如,NAND快閃記憶體、NOR快閃記憶體等)、隨機存取記憶體(RAM)(諸如同步RAM(SRAM)、磁性RAM(MRAM)、動態RAM(DRAM))、電可抹除可程式化唯讀記憶體(EEPROM)及磁性穿隧接面(MTJ)磁阻記憶體。
彼等熟習此項技術者應瞭解,可使用各種不同技術及技藝中之任一者來表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子或其任何組合來表示可貫穿以上描述所提及之資料、指令、命令、資訊、信號、位元、符號及碼片。
另外,彼等熟習此項技術者應瞭解,結合本文中所揭示之實施例所描述之各種說明性邏輯區塊、模組、電路及演算法步驟可實施為電子硬體、電腦軟體或兩者之組合。為了清楚地說明硬體與軟體之此可互換性,上文已大體上在功能性方面描述了各種說明性組件、區塊、模組、電路及步驟。此功能性經實施為硬體或是軟體取決於特定應用及強加於整個系統之設計約束而定。熟習此項技術者可針對每一特定應用以變化之方式實施所描述之功能性,但不應將該等實施決策解釋為導致背離本發明之範疇。
結合本文中所揭示之實施例所描述之方法、序列及/或演算法可直接體現於硬體中、由處理器執行之軟體模組中,或該兩者之組合中。軟體模組可駐存於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、抽取式碟片、CD-ROM或此項技術中已知之任何其他形式的儲存媒體中。一例示性儲存媒體耦接至處理器,使得處理器可自儲存媒體讀取資訊及將資訊寫入至儲存媒體。在替代例中,儲存媒體可整合至處理器。
因此,本發明之一實施例可包括一體現根據本文中所揭示之實施例中之任一者的方法的電腦可讀媒體。因此,本發明不限於所說明之實例且用於執行本文中所描述之功能性之任何構件皆包括於本發明
之實施例中。
雖然前述揭示內容展示本發明之說明性實施例,但是應注意,可在不脫離如由附加之申請專利範圍界定的本發明之範疇之情況下在本文中進行各種改變及修改。無需以任何特定次序執行根據本文中描述之本發明之實施例的方法請求項的功能、步驟及/或動作。此外,雖然可能以單數形式描述或主張本發明之元件,但除非明確陳述限於單數形式,否則亦預期複數形式。
200‧‧‧運行時間記憶體潛時量測程序
Claims (51)
- 一種用於在運行時間下最佳化一處理器自一記憶體之一預載入的方法,其包含:量測該記憶體之一運行時間記憶體潛時,且作為結果而產生一量測之運行時間記憶體潛時;判定在該處理器上一常式之一運行時間持續時間,且作為結果而產生一判定之運行時間持續時間;基於該量測之運行時間記憶體潛時及該判定之在該處理器上該常式之運行時間持續時間來判定一運行時間最佳化預載入距離。
- 如請求項1之方法,其中判定該運行時間最佳化預載入距離包括:用該判定之運行時間持續時間除該量測之運行時間記憶體潛時以產生一商;及將該商捨位至一整數。
- 如請求項1之方法,其中判定在該處理器上該常式之該運行時間持續時間包括:將一與該常式相關聯之快取記憶體暖機以獲得一經暖機之快取記憶體;使用該經暖機之快取記憶體執行該常式複數次;及量測執行該常式複數次所需的一時間跨距。
- 如請求項1之方法,其中量測該運行時間記憶體潛時包括:識別一記憶體載入開始時間;在一與該記憶體載入開始時間相關聯的開始時間開始,執行自該記憶體之一載入;偵測該載入之一終止;識別一與該載入之該終止相關聯的記憶體載入終止時間;及基於該記憶體載入開始時間及該記憶體載入結束時間來計算該量測之運行時間記憶體潛時。
- 如請求項4之方法,其中識別該記憶體載入開始時間包括讀取一中央處理單元(CPU)循環計數器上之一開始值,識別該記憶體載入終止時間包括讀取該CPU循環計數器上之一結束值,且其中計算該量測之運行時間記憶體潛時包括計算該結束值與該開始值之間的一差。
- 如請求項5之方法,其進一步包含:提供用於對該CPU循環計數器之該讀取的一處理系統額外負擔;基於該處理系統額外負擔來調整該量測之運行時間記憶體潛時。
- 如請求項4之方法,其中識別該記憶體載入開始時間包括讀取一系統計時器,識別該記憶體載入終止時間包括讀取該系統計時器。
- 如請求項7之方法,其進一步包含:提供用於對該系統計時器之該讀取的一處理系統額外負擔;基於該處理系統額外負擔來調整該量測之運行時間記憶體潛時。
- 如請求項1之方法,其中量測該運行時間記憶體潛時包括:將包含一最後指標及複數個中間指標之複數個指標儲存於該記憶體中,該等中間指標中之每一者指向該等指標中之另一者在該記憶體中的一位置;讀取該等指標,該讀取包含:基於該等中間指標中之一者來設定一指標存取位置;基於該指標存取位置來存取該等指標中之另一者;基於由存取該等指標中之另一者產生的一另一被存取指標來更新該指標存取位置; 重複對該等指標中之另一者的該存取及更新該指標存取位置直至偵測到對該最後指標之一存取;量測在讀取該等指標時流逝之一時間;及用所讀取的該等指標的一量除該流逝之時間以獲得一估計之運行時間記憶體潛時作為該量測之運行時間記憶體潛時。
- 如請求項9之方法,其進一步包含:與讀取該等指標之一開始相關聯地初始化一存取計數器;與存取該等指標中之另一者相關聯地遞增該存取計數器;及將該存取計數器與一終止計數相比較,其中偵測對該最後指標之該存取係基於該比較之一結果。
- 如請求項9之方法,其中該最後指標具有一最後指標值;及其中偵測對該最後指標之該存取係基於偵測匹配該最後指標值的另一被存取指標。
- 如請求項1之方法,其進一步包含提供複數個處理器操作中之每一者的一運行時間持續時間資料庫,且其中判定在該處理器上該常式之該運行時間持續時間係基於該運行時間持續時間資料庫。
- 如請求項1之方法,其進一步包含執行該常式之N個反覆,且在該執行期間,使用該運行時間最佳化預載入距離來預載入該處理器之一快取記憶體。
- 如請求項13之方法,其中預載入該快取記憶體包括針對對應於該運行時間最佳化預載入距離之該常式之若干反覆而用資料及指令來預載入該快取記憶體。
- 如請求項14之方法,其中執行該常式之該N個反覆包括:在該常式之每一反覆時對該快取記憶體之一預載入;及計數該預載入之執行個體之一數目。
- 如請求項13之方法,其中執行該常式之該N個反覆包含:執行開端反覆,每一開端反覆包括一次預載入而無該常式之執行;執行本體反覆,每一本體反覆包括一次預載入及該常式之一次執行;及執行結尾反覆,每一結尾反覆包括該常式之一次執行而無預載入。
- 如請求項16之方法,其中該等開端反覆針對該常式之一量的反覆而用資料或指令來填充該快取記憶體,該量等於該運行時間最佳化預載入距離。
- 如請求項17之方法,其中該等本體反覆執行等於自N減去該運行時間最佳化預載入距離的一量的反覆。
- 如請求項13之方法,其中判定該常式之該運行時間持續時間包括:量測執行該常式之該N個反覆的一時間跨距;產生一對應的量測之時間跨距;及用N除該量測之時間跨距。
- 一種用於在運行時間下最佳化一處理器自一記憶體之一預載入的裝置,其包含:用於量測該記憶體之運行時間記憶體潛時且作為該量測之結果而產生一量測之運行時間記憶體潛時的構件;用於判定在該處理器上一常式之一運行時間持續時間且作為結果而產生一判定之運行時間持續時間的構件;及用於基於該量測之運行時間記憶體潛時及在該處理器上該常式之該運行時間持續時間來判定一運行時間最佳化預載入距離的構件。
- 如請求項20之裝置,其中判定該運行時間最佳化預載入距離包括:用該運行時間持續時間除該量測之運行時間記憶體潛時以 產生一商;及將該商升值捨位至一整數。
- 如請求項20之裝置,其中判定在該處理器上該常式之該運行時間持續時間包括:將一與該常式相關聯之快取記憶體暖機以獲得一經暖機之快取記憶體;使用該經暖機之快取記憶體執行該常式複數次;及量測執行該常式複數次所需的一時間跨距。
- 如請求項20之裝置,其中該用於量測該運行時間記憶體潛時之構件包括:用於識別一記憶體載入開始時間的構件;用於在一與該記憶體載入開始時間相關聯的開始時間開始執行自該記憶體之一載入的構件;用於偵測該載入之終止的構件;用於識別一與該載入之該終止相關聯之記憶體載入終止時間的構件;及用於基於該記憶體載入開始時間及該記憶體載入結束時間來計算該量測之運行時間記憶體潛時的構件。
- 如請求項23之裝置,其中識別該記憶體載入開始時間包括讀取一中央處理單元(CPU)循環計數器上之一開始值,識別該記憶體載入終止時間包括讀取該CPU循環計數器上之一結束值,且其中計算該量測之運行時間記憶體潛時包括計算該結束值與該開始值之間的一差。
- 如請求項23之裝置,其進一步包含:用於基於用於對該CPU循環計數器之該讀取的一處理系統額外負擔來調整該量測之運行時間記憶體潛時的構件。
- 如請求項23之裝置,其中識別該記憶體載入開始時間包括讀取一系統計時器,且識別該記憶體載入終止時間包括讀取該系統計時器。
- 如請求項26之方法,其進一步包含:用於提供用於對該系統計時器之該讀取的一處理系統額外負擔的構件;及用於基於該處理系統額外負擔來調整該量測之運行時間記憶體潛時的構件。
- 如請求項20之裝置,其中該用於量測該運行時間記憶體潛時之構件包括:用於將包含一最後指標及複數個中間指標之複數個指標儲存於該記憶體中的構件,該等中間指標中之每一者指向該等指標中之另一者在該記憶體中的一位置;用於讀取該等指標之構件;用於量測在讀取該等指標時流逝之一時間的構件;及用於用所讀取的該等指標的一量來除該流逝之時間以獲得一估計之運行時間記憶體潛時作為該量測之運行時間記憶體潛時的構件。
- 如請求項28之裝置,其中讀取該等指標包括:基於該等中間指標中之一者來設定一指標存取位置;基於該指標存取位置來存取該等指標中之另一者以提供另一被存取指標;基於該被存取之另一指標來更新該指標存取位置;及重複對該等指標中之另一者的該存取且更新該指標存取位置直至偵測到對該最後指標之一存取。
- 如請求項29之裝置,其中讀取該等指標進一步包含:與讀取該等指標之一開始相關聯地初始化一存取計數器;與存取該等指標中之另一者相關聯地遞增該存取計數器;及將該存取計數器與一終止計數相比較, 其中偵測對該最後指標之該存取係基於該比較之一結果。
- 如請求項28之裝置,其中識別該記憶體載入開始時間包括讀取一系統計時器,其中識別該記憶體載入終止時間包括讀取該系統計時器,其中該最後指標具有一最後指標值;及其中偵測對該最後指標之該存取係基於偵測到匹配該最後指標值的該被存取之另一指標。
- 如請求項28之裝置,其進一步包含:用於提供用於對該系統計時器之該讀取的一處理系統額外負擔的構件;及用於基於該處理系統額外負擔來調整該量測之運行時間記憶體潛時的構件。
- 如請求項20之裝置,其進一步包含用於針對該常式之一數目之反覆而用資料及指令來預載入該處理器之一快取記憶體的構件,該數目對應於該運行時間最佳化預載入距離。
- 如請求項20之裝置,其中判定該常式之該運行時間持續時間包括:量測執行該常式之N個反覆的一時間跨距且作為回應而產生一量測之時間跨距;及用N除該量測之時間跨距。
- 如請求項20之裝置,其中該裝置被整合於至少一半導體晶粒中。
- 如請求項20之裝置,其進一步包含一選自由以下各者組成之群的器件:一機上盒、音樂播放器、視訊播放器、娛樂單元、導航器件、通信器件、個人數位助理(PDA)、固定位置資料單元及一電腦,該裝置被整合至該器件中。
- 一種具有一電腦可讀媒體之電腦產品,該電腦可讀媒體包含指令,當由一處理器讀取及執行時,該等指令導致該處理器執行 用於在運行時間下最佳化一處理器自一記憶體之一預載入的操作,該等指令包含:導致該處理器量測該記憶體之運行時間記憶體潛時以產生一量測之運行時間記憶體潛時的指令;導致該處理器判定在該處理器上一常式之一運行時間持續時間及產生一所得的判定之運行時間持續時間的指令;導致該處理器基於該量測之運行時間記憶體潛時及該判定之在該處理器上該常式之運行時間持續時間來判定一運行時間最佳化預載入距離的指令。
- 如請求項37之電腦產品,其中導致該處理器判定該運行時間最佳化預載入距離之指令包括導致該處理器用該判定之運行時間持續時間除該量測之運行時間記憶體潛時以產生一商且將該商捨位至一整數的指令。
- 如請求項37之電腦產品,其中導致該處理器判定在該處理器上該常式之該運行時間持續時間的指令包括導致該處理器將一與該常式相關聯之快取記憶體暖機以獲得一經暖機之快取記憶體、使用該經暖機之快取記憶體執行該常式複數次及量測執行該常式複數次所需的一時間跨距的指令。
- 如請求項37之電腦產品,其中導致該處理器判定在該處理器上該常式之該運行時間持續時間的指令包括導致該處理器量測執行該常式之N個反覆之一時間跨距且用N除執行該常式N次之該時間跨距的指令。
- 如請求項37之電腦產品,其中導致該處理器量測該運行時間記憶體潛時的指令包括:導致該處理器識別一記憶體載入開始時間的指令;導致該處理器在一與該記憶體載入開始時間相關聯的開始時 間開始執行自該記憶體之一載入的指令;導致該處理器偵測該載入之一終止的指令;導致該處理器識別一與該載入之該終止相關聯的記憶體載入終止時間的指令;及導致該處理器基於該記憶體載入開始時間及該記憶體載入結束時間來計算該量測之運行時間記憶體潛時的指令。
- 如請求項41之方法,其中識別該記憶體載入開始時間包括讀取一中央處理單元(CPU)循環計數器上之一開始值,識別該記憶體載入終止時間包括讀取該CPU循環計數器上之一結束值,且其中計算該量測之運行時間記憶體潛時包括計算該結束值與該開始值之間的一差。
- 如請求項42之電腦產品,其進一步包含:導致該處理器提供用於對該CPU循環計數器之該讀取的一處理系統額外負擔的指令;導致該處理器基於該處理系統額外負擔來調整該量測之運行時間記憶體潛時的指令。
- 如請求項41之電腦產品,其中導致該處理器識別該記憶體載入開始時間的指令包括導致該處理器讀取一系統計時器之指令,且其中導致該處理器識別該記憶體載入終止時間的指令包括導致該處理器讀取該系統計時器之指令。
- 如請求項44之方法,其進一步包含:提供用於對該系統計時器之該讀取的一處理系統額外負擔;基於該處理系統額外負擔來調整該量測之記憶體潛時。
- 如請求項37之電腦產品,其進一步包含導致該處理器基於複數個處理器操作中之每一者的一給定之運行時間持續時間資料庫來判定在該處理器上該常式之該運行時間持續時間的指令。
- 如請求項37之電腦產品,其進一步包含導致該處理器執行該常式之N個反覆及在該執行期間使用該運行時間最佳化預載入距離來預載入該處理器之一快取記憶體的指令。
- 如請求項47之電腦產品,其中導致該處理器執行該N個反覆的指令包括導致該處理器在該常式之每一反覆時預載入該快取記憶體及計數該預載入之執行個體之一數目的指令。
- 如請求項47之電腦產品,其中導致該處理器執行該N個反覆的指令包含:導致該處理器執行開端反覆之指令,每一開端反覆包括一次預載入而無該常式之執行;導致該處理器執行本體反覆之指令,每一本體反覆包括一次預載入及該常式之一次執行;及導致該處理器執行結尾反覆之指令,每一結尾反覆包括該常式之一次執行而無預載入。
- 如請求項49之電腦產品,其中該等開端反覆針對該常式的一量的反覆而用資料或指令來填充該快取記憶體,該量等於該運行時間最佳化預載入距離。
- 如請求項50之電腦產品,其中該等本體反覆執行等於自N減去該運行時間最佳化預載入距離的一量的反覆。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/369,548 US20130212334A1 (en) | 2012-02-09 | 2012-02-09 | Determining Optimal Preload Distance at Runtime |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201348964A true TW201348964A (zh) | 2013-12-01 |
Family
ID=47755000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102105641A TW201348964A (zh) | 2012-02-09 | 2013-02-18 | 在運行時間下判定最佳化預載入距離 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130212334A1 (zh) |
TW (1) | TW201348964A (zh) |
WO (1) | WO2013120000A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9043579B2 (en) | 2012-01-10 | 2015-05-26 | International Business Machines Corporation | Prefetch optimizer measuring execution time of instruction sequence cycling through each selectable hardware prefetch depth and cycling through disabling each software prefetch instruction of an instruction sequence of interest |
CN106095499A (zh) * | 2016-06-07 | 2016-11-09 | 青岛海信电器股份有限公司 | 嵌入式系统启动优化方法及装置 |
GB2564391B (en) * | 2017-07-04 | 2019-11-13 | Advanced Risc Mach Ltd | An apparatus and method for controlling use of a register cache |
CN107861812B (zh) * | 2017-10-30 | 2022-01-11 | 北京博瑞彤芸科技股份有限公司 | 一种内存清理方法 |
CN109460347A (zh) * | 2018-10-25 | 2019-03-12 | 北京天融信网络安全技术有限公司 | 一种获取程序段性能的方法及装置 |
WO2021141474A1 (en) * | 2020-01-10 | 2021-07-15 | Samsung Electronics Co., Ltd. | Method and device of launching an application in background |
CN114266058B (zh) * | 2021-12-24 | 2024-09-13 | 北京人大金仓信息技术股份有限公司 | 针对加密数据的解密预加载方法及装置 |
CN115562744B (zh) * | 2022-03-31 | 2023-11-07 | 荣耀终端有限公司 | 一种应用程序加载方法及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5964867A (en) * | 1997-11-26 | 1999-10-12 | Digital Equipment Corporation | Method for inserting memory prefetch operations based on measured latencies in a program optimizer |
US6981099B2 (en) * | 2002-12-16 | 2005-12-27 | Sun Microsystems, Inc. | Smart-prefetch |
US8990547B2 (en) * | 2005-08-23 | 2015-03-24 | Hewlett-Packard Development Company, L.P. | Systems and methods for re-ordering instructions |
US8301836B2 (en) * | 2010-02-26 | 2012-10-30 | Red Hat, Inc. | Methods for determining alias offset of a cache memory |
-
2012
- 2012-02-09 US US13/369,548 patent/US20130212334A1/en not_active Abandoned
-
2013
- 2013-02-08 WO PCT/US2013/025407 patent/WO2013120000A1/en active Application Filing
- 2013-02-18 TW TW102105641A patent/TW201348964A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20130212334A1 (en) | 2013-08-15 |
WO2013120000A1 (en) | 2013-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201348964A (zh) | 在運行時間下判定最佳化預載入距離 | |
US11656675B2 (en) | Application processor performing a dynamic voltage and frequency scaling operation, computing system including the same, and operation method thereof | |
US7941684B2 (en) | Synchronization of processor time stamp counters to master counter | |
KR101048751B1 (ko) | 누설 전력 추정 장치, 방법 및 컴퓨팅 시스템 | |
KR101497214B1 (ko) | 루프 버퍼 학습 | |
TWI702539B (zh) | 控制耗電的系統與方法 | |
US20140208075A1 (en) | Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch | |
KR101669784B1 (ko) | 메모리 대기 시간 관리 | |
EP3109761B1 (en) | Method, apparatus and system using persistent memory store commit demarcate instruction | |
CN114424144B (zh) | 自适应片上数字功率估计器 | |
US8020020B2 (en) | Fast, automatically scaled processor time stamp counter | |
JP2018536230A (ja) | キャッシュへのアクセス | |
US9367317B2 (en) | Loop streaming detector for standard and complex instruction types | |
US20200210183A1 (en) | Vectorization of loops based on vector masks and vector count distances | |
US20230266815A1 (en) | Dvfs controlling method, semiconductor device and semiconductor system using the dvfs controlling method | |
US20050223203A1 (en) | Segmented branch predictor | |
US11880231B2 (en) | Accurate timestamp or derived counter value generation on a complex CPU | |
EP3504607B1 (en) | A method and apparatus for automatic adaptive voltage control | |
CN117951072A (zh) | 片上系统及其操作方法 |