TWI507990B - 多核心指令集模擬之高平行化同步方法 - Google Patents
多核心指令集模擬之高平行化同步方法 Download PDFInfo
- Publication number
- TWI507990B TWI507990B TW100111618A TW100111618A TWI507990B TW I507990 B TWI507990 B TW I507990B TW 100111618 A TW100111618 A TW 100111618A TW 100111618 A TW100111618 A TW 100111618A TW I507990 B TWI507990 B TW I507990B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction set
- simulation
- synchronization
- synchronization point
- core
- Prior art date
Links
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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本發明大體上屬於一種指令集之模擬方法。具體言之,其係一種多核心指令集模擬之高平行化同步方法。
隨著科技的發展,指令集模擬器(instruction set simulator,ISS)已成為系統層級設計不可或缺之工具。硬體設計者可事先利用指令集模擬器於設計實作實體化之前進行前期的探索與/或驗證,故可降低開發過程中之一次性費用(non-recurring engineering cost,NRE cost);而軟體設計者則可透過指令集模擬器測試程式而不需採用實體客端機(real target machines),進而大幅縮短設計之循環週期(turnaround time)。
經過多年的發展,傳統應用於單核心系統之指令集模擬器已近趨於理想(快速且準確)。然而,隨著半導體製程之演進,目前之晶片設計趨向於將兩個或更多個獨立處理器封裝於單晶片中,傳統單核心架構已逐漸被多核心架構所取代。為將多核心架構之效能發揮至極致,越來越多的軟體係以平行程式設計模型(parallel programming model)撰寫。然而,傳統單核心指令集模擬器無法有效管理不同核心間之同步,以致無法準確地模擬出不同核心上所執行程式之行為。
於一多核心系統中,多個程式係同時且同步地執行。目前所提出之多核心指令集模擬(multi-core instruction-set simulation,MCISS)方法即是針對欲於多核心系統上執行之程式所設計。就直覺而言,多核心指令集模擬應可藉由多個指令集模擬器而建立,然而,如果缺少完善之同步機制則本端作業系統(host operating system)將把指令集模擬器隨機安排至閒置之本端核心(host core)。
模擬時間係指於本端核心執行指令集模擬器之時間,而客端時間則係指模擬程式於客端上執行之實際時間。需進行同步的時間點稱為“同步點”(sync point),故每一時脈啟動均為一同步點。指令集模擬器需於每一個同步點停下並進行同步。因此,鎖步法之最大缺點即在於同步化所需之龐大負擔(overhead)。
隨著多核心系統正在逐漸取代單核心系統,相對應的多核心指令集模擬亦越來越關鍵。直覺上,為了得到多核心指令集模擬,單核心指令集模擬器可以用於模擬客端核心及執行共同模擬而依平行方式操作所有的指令集模擬器以得到模擬效能。
時間同步係用以維持時間一致性以確保多模擬組件之準確的平行行為。一個直覺的方法係於每個週期同步化所有的組件。此方法通常稱為基於週期或鎖步(lock-step)方法。雖然其提供準確的模擬,然而同步化所需之龐大負擔將大大地減慢模擬。擴大同步間隔當然可以提高效能,而其也將導致不準確的模擬。
為了得到快速且準確之共同模擬,提出了偏序(partial order)同步的方法。此概念關鍵在於維持正確的資料流,亦即資料相依。實際上,程式只能通過其共享記憶體存取而相互影響。只要維持所有的共享記憶體存取之時間次序,將可得到程式之間一致的資料相依。如此,僅需要於每一共享記憶體存取執行時間同步。由於共享記憶體存取之數目大大地小於總執行週期之數目,輕量(light-weight)同步工作使得這種基於共享記憶體的方法比鎖步方法以更有效率。同時,這種方法可以保證精確的多核心指令集模擬之模擬結果。
然而,傳統的共同模擬方法,例如SystemC,通常採取集中式排程器(centralized scheduler)100以處理每一指令集模擬器間的時序同步化,如第一圖所示。為了維持時序一致性,集中式排程方法總是選定最慢的指令集模擬器來執行。即使它允許平行模擬,實際上只有一個指令集模擬器是可以執行於大部分時間。因此,此方法大大地限制了多核心指令集模擬之平行度。考慮到用於模擬之核心數目持續增加的事實,有必要充分利用平行度以從本端多核心計算機之計算能力而得到更好的模擬效能。
集中式排程機制可以為依序或平行執行。其差別在於依序的版本一次僅執行一個工作。相反地,在平行的版本中,超過一個工作可以平行地執行。
一般而言,多核心指令集模擬應該平行執行以提高模擬效能。然而,傳統的低平行度集中式排程器大大地限制了模擬效能。為了解決此問題,是以本發明提出了一種高平行度集中式排程機制以利於多核心指令集模擬。
在這些方面,本發明係針對一種多核心指令集模擬之高平行化同步方法。
為了解決上述問題,本發明係針對一種多核心指令集模擬之高平行化同步方法,以能夠執行一更快速的指令集模擬。
本發明之一優點在於使得多核心指令集模擬提供同步化功能及保持精確性。
本發明之另一優點在於保持速度在一個良好水平及有效地以降低同步化負擔。
本發明所揭露之一種多核心指令集模擬之高平行化同步方法,包含:藉由一靜態模組而分析一模擬程式之控制流程圖,以執行多核心指令集模擬之每一指令集模擬器的未來同步點之最佳情況預測。然後,藉由靜態模組以評估每一基本區塊之最佳情況執行時間及/或控制流程圖中的多核心指令集模擬之每一指令集模擬器之路徑。接下來,藉由一動態模組而基於未來同步點之最佳情況預測及最佳情況執行時間,利用分散式排程多核心指令集模擬之每一指令集模擬器以縮短每一指令集模擬器花費於同步化上的等待時間。
本發明之方法更包含檢查每一指令集模擬器之下一同步點是否屬於同一區塊,若是,計算至下一同步點之相對的執行時間,否則,遍歷其後續的區塊而基於最短路徑以作最佳情況預測。
其中每一指令集模擬器之下一同步點之最佳情況預測係藉由遞回地檢查後續的區塊直到達到一同步點。其中每一指令集模擬器之下一同步點之最佳情況預測包含預先計算至該每一指令集模擬器之該下一同步點的最佳情況延遲之步驟,其中該預先計算該最佳情況延遲包含二型態點,其一為該下一同步點之一尾部及另一為該毎一基本區塊之一頭部。其中指令集模擬器之下一同步點的預測執行時序可以藉由總和其目前本地時間及最佳情況預測時間而得到。
本發明之方法更包含更新關於其預測該下一同步點之資料,以及基於資料當遇到同步點時,決定是否等待或繼續執行。
其中該分散式排程允許毎一指令集模擬器自動地與其他指令集模擬器進行排程以運作於相同時間。其中當多核心指令集模擬之第一指令集模擬器遇到下一同步點,若第一指令集模擬器之預測該下一同步點係發生於未來時間,則多核心指令集模擬之第二指令集模擬器無需等待;而當第一指令集模擬器之預測下一同步點係早於真實的下一同步點,由於虛假預測時間關係而多核心指令集模擬之第二指令集模擬器必須等待。其中當第一指令集模擬器持續進行,將更新最佳情況預測以達至真實下一同步點;只要第一指令集模擬器之預測下一同步點係較晚於第一指令集模擬器之目前同步點,第二指令集模擬器可以同步地恢復其執行。
關於本發明之優點與精神,可以藉由以下的發明實施例及所附圖式得到進一步之瞭解。
下列描述係提供本發明特定的施行細節,俾使閱者徹底瞭解這些實施例之實行方式。然熟習該領域之技藝者須瞭解本發明亦可在不具備這些細節之條件下實行。此外,本發明特定實施例細節描述中使用之術語將以最廣義的合理方式解釋。
為了有效解決先前技術所無法解決之多核心指令集模擬之同步問題,本發明可以辨識出各個核心(處理器)之間的相關性,並依據此相關性對每個核心之指令集模擬器進行同步以取得正確之模擬結果。
於共享記憶體模型中,於不同核心上執行之程式係透過記憶體讀/寫之存取而進行間接的互動。因此,為了確保正確的模擬結果,任兩個針對同一資料位址之記憶體存取如具有下列任一之相依關係(dependency relationship),則記憶體之存取必須要照順序執行。上述相依關係包含:(1)寫入後寫入(write after write,WAW),(2)讀取後寫入(write after read,WAR)以及(3)寫入後讀取(read after write,RAW)。於本發明中所提及之「同步」係指檢查或維持上述相依關係之程序,而相應之記憶體存取點則稱為「同步點」。
由於指令集模擬器係按照先後順序執行程式,因此同一程式內之記憶體存取將永遠按順序執行。因此,本發明之同步方法僅需確認並維持不同程式間之記憶體存取,使其依照正確之執行次序進行。理論上來說,僅需針對同一位址之記憶體存取確認其是否具有上述相依關係之問題;但實際執行時,由於記憶體空間(memory space)過於龐大將使得每一個不同位址之追蹤(tracking)變得無法實行。此外,由於間接定址模式(indirect addressing mode)係較常用的,因此經常無法預知確切之存取位址。假設將每個記憶體之存取均視為一同步點,則其將因大量之記憶體存取而使模擬速度變得非常緩慢。
以軟體之觀點而言,僅有小部份之共享變數(shared variable)具有記憶體存取之資料相依關係(data dependency)。因此,如僅將共享變數納入考量即可大幅縮減同步點之數目。
第二a圖顯示出利用集中式排程方法之一依序的多核心指令集模擬之模擬時序圖之例子。當一指令集模擬器遇到一同步點,一集中式排程器100將被採用以確定下一個進行的指令集模擬器。此處,一同步點係被標註在每個共享記憶體存取之前面,如前所述。為了確保同步點之時間次序,其總是選擇最慢的指令集模擬器來操作。在此例子中,包含二個指令集模擬器(ISS1
及ISS2
)。排程器100使用廣域時鐘(global clock)而維持廣域時間(global time),而每一指令集模擬器具有本地時鐘(local clock)以記錄其本身的本地時間(local time)。舉例而言,廣域時間及時脈時間係由(廣域時鐘、本地時鐘1、本地時鐘2)來表示。最初的開始,本地時鐘及廣域時鐘二者係初始化為零,其表示為(0,0,0)。只有在其本地時間與廣域時間是相同值,一指令集模擬器才為就緒狀態(ready)。對於依序的模擬而言,排程器100一次配合地選擇就緒的指令集模擬器之一來執行。對於被選擇的指令集模擬器,相對應的本地時間隨著執行的進行而推進。然後,於下一同步點,所執行的指令集模擬器被推回到一等待序列並且排程器100選擇下一就緒的指令集模擬器來執行。一旦不再有就緒的指令集模擬器,排程器100將推進廣域時鐘直到一指令集模擬器準備就緒。值得注意的是,本地時鐘及廣域時鐘二者表示從客端角度觀看的模擬時間。相較之下,模擬時間係為於本端上操作之模擬的時間。理想地,其可以藉由平行地操作指令集模擬器而縮短整體模擬時間。
在另一例子中,如第二b圖所示,其顯示利用集中式排程方法之一平行的多核心指令集模擬之模擬時序圖。在此集中式排程機制中,僅有就緒的指令集模擬器可以實際地於同一時間執行。這意謂著指令集模擬器必須於一同步點具有相同的本地時鐘時間,否則其無法同時地執行。不幸地,程式很少於完全相同時間存取共享記憶體,因此這個情況罕見地發生於基於同步的具有共享記憶體之多核心指令集模擬中。換言之,當排程器100執行時,一般地僅有一個指令集模擬器係就緒的。舉例而言,於第二b圖中,指令集模擬器(ISS1
及ISS2
)二者係於一開始(開始於相同時間)即就緒。除此之外,他們只有一個於其他同步點就緒,從而導致低平行。結果,利用集中式排程方法的多核心指令集模擬之平行模擬幾乎不能提高實際上的模擬效能。
為了進一步提升集中式排程方法的模擬效能,而提出一種高平行化分散式排程機制以利於較佳的多核心指令集模擬之平行化。如第三圖所示,其顯示分散式排程機制,藉由允許毎一指令集模擬器自動地與其他指令集模擬器(例如4指令集模擬器:ISS1
,ISS2
,ISS3
及ISS4
)進行排程,其可以運作於相同時間。分散式排程係藉由允許毎一工作(指令集模擬器)自動地排程而達成其高平行化。毎一工作(指令集模擬器)將追蹤在其本身的同步點之其他工作之本地時鐘。再者,根據多核心指令集模擬之特性,所提出的方法預測未來同步點之可能的時間(亦即同步化的時間點)。基於此預測,花費於同步決定的時間可以有效地縮短,如此方法能夠使得多核心指令集模擬得到高的模擬效能。
第二c圖顯示於本發明分散式排程之下的相同例子之模擬時序圖,其中包含二個指令集模擬器(ISS1
及ISS2
)。類似集中式排程,當遇到一同步點時,若一指令集模擬器具有最慢的本地時鐘,則可以安全地繼續其執行。分散式排程之特徵及優點在於只要一個指令集模擬器具有最慢的本地時鐘,則其能夠立刻繼續執行而無需再等待排程器。舉例而言,當ISS1
在給定的同步點(即20處)暫停時,在其發現ISS2
的本地時鐘也前進至20之後將繼續往右。相較之下,對於集中式排程而言,一個指令集模擬器繼續執行之決定必須藉由集中式排程器100來完成。因為集中式排程器100只有在當一指令集模擬器遇到一同步點時才會涉入,一等待的指令集模擬器仍必須等待直到排程器100之下一次啟用,即使它的確是最慢的一個。明顯地,分散式排程使得指令集模擬器可以得到比集中式排程更高的平行度。換言之,本發明所採取的分散式排程方法係為多核心指令集模擬之高平行同步化的方法。藉由放寬一要求可以獲得進一步性能提升,該要求係僅有當其於分散式排程方法時是最慢的指令集模擬器,一進行中的指令集模擬器於一同步點可以推進其執行。
基於同步方法而依循共享記憶體之相同的排程方法,若所有的共享記憶體存取之時間次序(即同步點)可以維持,則模擬結果仍是正確的。換言之,只要其他的下一同步點之計時係不遲於局部進行的同步點之計時,甚至其可以不是最慢的指令集模擬器,一進行中的指令集模擬器可以安全地繼續。為了實施此方法,同步點的時間關係必須首先被決定。因為一般的程式包含不確定的執行路徑,所以直到它實際執行很難確定一個同步點的確切執行時間。然而,一個預測到下一最早可能的同步點是可行的,並且可用以大大提高排程效能。
基於利用同步化共享記憶體而編譯的多核心指令集模擬之特性,底下部分將敘述如何進一步優化分散式排程。
簡略而言,本發明所提出之多核心模擬方法可大略分為兩個狀態:靜態(static status)與動態(dynamic status),其中靜態係指編譯時間而動態則係指運行時間。於編譯時間時,客端執行檔(target executables)將被轉譯成原生碼,而於運行時間時,指令集模擬器將與其他指令集模擬器進行同步,並執行原生碼以模擬出程式之行為。
第四圖顯示根據本發明之多核心指令集模擬之高平行化同步方法之一實施例之流程圖。
首先,在步驟200中,藉由一靜態模組以執行一未來同步點之靜態預測。
舉例而言,在步驟201中,多核心指令集模擬之每一指令集模擬器的未來同步點之最佳情況預測係藉由一靜態模組而靜態分析一模擬程式之控制流程圖(control flow graphs:CFG)來執行。模擬程式之控制流程圖可以於編譯的指令集模擬器之轉譯階段而取得。藉由控制流程圖,從一點至任一其他點之最短路徑可以得到決定,並且藉由靜態模組,該最短路徑可以用於評估每一基本區塊之最佳情況執行時間及/或控制流程圖中的多核心指令集模擬之每一指令集模擬器之路徑。基於此方法,底下演算法係設計以確認從任一給定點p至其下一可能同步點之最佳情況執行時間。
PREDICT_NEXT_SYNC_POINT(p)
DEFINITION
p:=a given point
bp
:=the basic block that p belongs to
TIMEbect
(x):=for a particular point x,the best-case relative execution time from the head of bx
to x.
1 if p’s next sync point s is also with in bp
2 then return TIMEbect
(s)-TIMEbect
(p)
3 bcet=infinite
4 for each succeeding basic block bi
of bp
do
5 The head of bi
is hi
6 bcet’=PREDICT_NEXT_SYNC_POINT(hi
)
7 if bcet>bcet’
8 then bcet=bcet’
9 end for
10 the end point of bp
is e
11 return bcet+TIMEbect
(e)-TIMEbect
(p)
第五圖顯示下一同步點之最佳情況預測。它執行任何特定點至通過區塊(b1
~b4
)之一共享存取(另一點)的模擬時序預測。它假設檢驗第五圖中之基本區塊b1
的頭部。為了預測其下一可能的同步點,在步驟202中,其首先檢查下一同步點是否屬於同一區塊,若是,直接計算至下一同步點之相對的執行時間;否則,遍歷其後續的區塊而基於該最短路徑以作最佳情況預測。對於此實施例而言,其必須檢查b1
的後續的區塊b2
及b3
,其中b2
具有同步點s1,而b3
沒有同步點。因此,其將遞回地檢查後續的區塊直到達到一同步點。在本實施例中,區塊b3
的後續區塊,在區塊b4
中的同步點s2得到確認。然後,比較二個路徑
b1
(3)→b2
(5)→s1(總延遲8)
及b1
(3)→b3
(2)→b4
(2)→s2(總延遲7)
發現相對的最佳情況執行時間為7。
接下來,在步驟210中,藉由一動態模組以執行下一同步點之動態更新。
為了達到同步化,必須取得每一指令集模擬器之下一同步點的執行時序之相關資料。理想情況下,其可以執行每一指令之預測及更新執行一指令之後的資料,但這會產生龐大的負擔。結果,在步驟211中,一實際的方法係為僅於二型態的點中預先計算至多核心指令集模擬之每一指令集模擬器之下一同步點的最佳情況延遲,此二型態點為(1).毎一同步點之尾部;(2).毎一基本區塊之頭部。如第五圖所示,同步點s1及s2之尾部至其下一可能同步點之最佳情況預測分別為4及11。此外,基本區塊b1
、b2
、b3
及b4
之頭部之最佳情況預測分別為7、5、4及2。於模擬期間遇到這些更新點之後,指令集模擬器之下一同步點的預測執行時序可以迅速地藉由總和其目前本地時間及最佳情況預測時間而得到。在此方法中,在步驟212中,毎一指令集模擬器可以動態地更新關於其預測下一同步點之最新資料。基於該資料,在步驟213中,當遇到一同步點時,可以決定是否等待或繼續執行。
然後,在步驟220中,藉由一動態模組而基於此預測以執行運作時間排程。
第六a圖顯示執行多核心指令集模擬之基於預測的排程之一例子,其中ISS2
於時間25遇到一同步點。若ISS1
之預測下一同步點係發生於未來時間,則ISS2
無需等待。如上所述原始的分散式排程機制,由於ISS2
在於ISS1
之前面,ISS2
係假定需等待ISS1
,其仍停於時間點20。假定ISS1
之下一同步點之最佳情況預測為15。換言之,真實執行時間係至少35,所以ISS2
之目前同步點(亦即25)必須較早。根據此時間關係,ISS2
可以安全地繼續其執行而無需停止。
然而,有時最佳情況預測可能太早,如第六b圖所示。第六b圖顯示執行多核心指令集模擬之基於預測的排程之另一例子。由於最佳情況分析而產生一虛假預測時間關係。在這例子中,ISS1
之預測下一同步點係早於真實的下一同步點,所以由於虛假預測時間關係而ISS2
必須等待。有幸地,當ISS1
持續進行,將更新最佳情況預測以達至真實的同步點。只要ISS1
之預測下一同步點係較晚於ISS1
之目前同步點,其時間關係是正確的,而ISS2
可以立即恢復其執行(同步地)。相較之下,原始的分散式排程機制必須保持ISS2
等待直到ISS1
之本地時間較晚於ISS2
之本地時間為止。
結果,本發明之分散式排程機制將有效地縮短這二個例子的同步化時間,並且因此得到較高平行度之多核心指令集模擬。
參照第七圖,其係多核心指令集模擬裝置之較佳實施例的方塊圖。為了實施多核心指令集模擬之高平行化同步方法,本發明提供一多核心指令集模擬(MCISS)裝置。在一實施例中,多核心指令集模擬(MCISS)裝置300包含一靜態模組310及一動態模組330。
靜態模組310包含一第一轉碼模組312、一控制流程圖(CFG)模組314、一時序估算模組316、一同步點模組318、一同步處理程序模組320以及一第二轉碼模組322。第一轉碼模組312係用以將一客端架構之二進位程式轉譯為中間碼。控制流程圖模組314係耦合至第一轉碼模組312,用以分析中間碼之控制流程指令(jump、call與return等)並藉以建立二進位程式之控制流程圖。時序估算模組316係耦合至控制流程圖模組314,用以預估控制流程圖中每一個基本區塊之執行時間、預估每一個讀取或寫入記憶體之指令的相對時間(自基本區塊開始算起),並找出每一個基本區塊結束執行後最早可能遇到之讀取或寫入記憶體之指令。同步點模組318係耦合至第一轉碼模組312,用以將每一個讀取或寫入記憶體之指令設置為同步點,其中若用以標示讀取或寫入記憶體之指令之位址的暫存器係一堆疊指標暫存器或一資料框指標暫存器,則可移除讀取或寫入記憶體之指令之同步點。同步處理程序模組320係與第一轉碼模組312、控制流程圖模組314、時序估算模組316及同步點模組318耦合,以依照每一個同步點係讀取或寫入分別插入相應之同步處理程序。而第二轉碼模組322則係耦合至同步處理程序模組320,其利用中間碼、基本區塊結束執行後最早可能遇到之讀取或寫入記憶體之指令、同步點與同步處理程序產出對應模擬二進位程式之原生碼。另一方面,動態模組330則包含一模擬模組332、一判斷模組334及一同步模組336。模擬模組332係耦合至靜態模組310之第二轉碼模組322,藉由執行原生碼進行模擬程序,於模擬程序中,當一指令集模擬器遇到同步點時將停止並進入同步處理程序。判斷模組334係耦合至模擬模組332,用以檢查進入同步處理程序後之指令集模擬器之讀取或寫入記憶體之位址,若不屬於一共享記憶體區塊之範圍則跳出同步處理程序並接續執行模擬程序。而同步模組336則係與判斷模組332及模擬模組334耦合,若判斷模組334認定指令集模擬器之讀取或寫入記憶體之位址係屬於共享記憶體區塊之範圍,則與其他指令集模擬器進行同步,完成與其他指令集模擬器同步後,指令集模擬器將接續執行模擬程序。
底下敘述結合於一開發編譯多核心指令集模擬中之不同的排程機制之實驗結果。其設定如下。用於模擬之客端架構為AndesStar 16/32-位元混合長度RISC ISA(參考:AndeStarTM
ISA,available atwww.andestech.com/p2-2.htm
,2010)。平行程式Radix,FMM,FFT,Ocean,LU,and Barnes from SPLASH-2(參考:S. Woo,M. Ohara,E. Torrie,J. P. Singh,and A. Gupta,"The splash-2 programs: characterization and methodological considerations,"in Proc. of international Symposium on Computer Architecture(ISCA),pp. 24-36,1995)係用於作為測試程式。本端機器係配備一Intel Xeon 2.6 GHz四核心。在本端所允許的最大平行度之下,為了測試模擬效能,分別評估二個及四個模擬核心之例子。表一顯示顯示加速效能,比對其他前面提到的三種方法。
值得注意的是,表一的共享記憶體比率係遍及所有的記憶體存取之共享記憶體存取之數目。
第一實驗與鎖步法作比較。具有相當少的同步點之優勢,本發明之機制超過其36至54倍的因子。一般而言,由於本發明的方法是當共享記憶體存取之數目較低時需要較少的同步工時,而具有較低分享記憶體比率的測試程式導致較大的效能提升。
此外,比較相同的共享記憶體,基於同步化而平行的集中式排程,本發明之分散式排程機制仍達到6至20倍的顯著改善。在本發明中,由於未來同步點之預測,其加速程度甚至比模擬核心之數目所允許的最大平行度還大。因此,其可以證實本發明所提的機制達到高的平行度。再者,對照無同步點預測之分散式排程,如上所述,本發明所提之機制仍具有2至5倍的加速效能。隨著一般的共享記憶體比率的增加而效能增強變大。這是因為本發明之預測方法有效地縮短一同步點上之等待時間。相應地,若有更多同步點(亦即更多分享記憶體存取),其加速變的更顯著。
整體而言,由於模擬核心之數目增加,本發明之分散式排程機制達到更好的改善,其意謂著本發明之機制比傳統的集中式排程機制具有較佳的可擴展性。
第八圖顯示根據本發明藉由不同的測試程式之所提方法的絕對模擬速度,其亦對於共享記憶體比率敏感。具有較低共享記憶體比率的測試情況往往達到更高的速度。給定不同的測試程式,其可以執行150至600 MIPS,其意謂本發明所提方法對於一高速度多核心指令集模擬是可行的。在本發明之實驗中,預測方法花費12.4%額外的轉譯時間。然而,其總轉譯時間係低於一般的編譯指令集模擬器之總模擬時間。結果,由於本發明之機制的緣故,對於整體模擬而言其負擔是很小的。
底下表二之實驗結果證實本發明之多核心指令集模擬之高平行化同步方法可以推進模擬效率及大大地縮短模擬時間。
表二顯示利用不同方法之模擬速度。
總結而言,本發明所揭露之多核心指令集模擬方法可以有效地降低同步化負擔,並且達到同時的精確模擬。
上述敘述係本發明之較佳實施例。此領域之技藝者應得以領會其係用以說明本發明而非用以限定本發明所主張之專利權利範圍。其專利保護範圍當視後附之申請專利範圍及其同等領域而定。凡熟悉此領域之技藝者,在不脫離本專利精神範圍內,所作之更動或潤飾,均屬於本發明所揭示精神下所完成之等效改變或設計,且應包含在下述之申請專利範圍內。
100...集中式排程器
200...步驟
201...步驟
202...步驟
210...步驟
211...步驟
212...步驟
213...步驟
220...步驟
300...多核心指令集模擬裝置
310...靜態模組
312...第一轉碼模組
314...控制流程圖模組
316...時序估算模組
318...同步點模組
320...同步處理程序模組
322...第二轉碼模組
330...動態模組
332...模擬模組
334...判斷模組
336...同步模組
本發明可藉由說明書中若干較佳實施例之詳細敘述以及下列圖式得以瞭解。然而,此領域之技藝者應得以領會所有本發明之較佳實施例係用以說明而非用以限制本發明之申請專利範圍,其中:
第一圖顯示集中式排程機制;
第二a圖顯示利用集中式排程方法之一依序的多核心指令集模擬之模擬時序圖;
第二b圖顯示利用集中式排程方法之一平行的多核心指令集模擬之模擬時序圖;
第二c圖顯示於本發明分散式排程之下包含二個指令集模擬器之模擬時序圖;
第三圖顯示本發明之分散式排程機制;
第四圖顯示根據本發明之多核心指令集模擬之高平行化同步方法之一實施例之流程圖;
第五圖顯示下一同步點之最佳情況預測;
第六a圖顯示執行多核心指令集模擬之基於預測的排程之一例子;
第六b圖顯示執行多核心指令集模擬之基於預測的排程之另一例子;
第七圖顯示多核心指令集模擬裝置之較佳實施例的方塊圖;
第八圖顯根據本發明所提方法的絕對模擬速度。
200...步驟
201...步驟
202...步驟
210...步驟
211...步驟
212...步驟
213...步驟
220...步驟
Claims (7)
- 一種多核心指令集模擬之高平行化同步方法,該方法包含:藉由一靜態模組而分析一模擬程式之控制流程圖,以執行多核心指令集模擬之每一指令集模擬器的未來同步點之最佳情況預測;藉由該靜態模組以評估每一基本區塊之最佳情況執行時間及/或該控制流程圖中的該多核心指令集模擬之該每一指令集模擬器之路徑;以及藉由一動態模組而基於該未來同步點之該最佳情況預測及該最佳情況執行時間,利用分散式排程該多核心指令集模擬之該每一指令集模擬器以縮短該每一指令集模擬器花費於同步化上的等待時間;檢查該每一指令集模擬器之下一同步點是否屬於同一區塊,若是,計算至該下一同步點之相對的執行時間,否則,遍歷其後續的區塊而基於該最短路徑以作該最佳情況預測;其中該每一指令集模擬器之該下一同步點之該最佳情況預測係藉由遞迴地檢查該後續的區塊直到達到一同步點;其中該每一指令集模擬器之該下一同步點之該最佳情況預測包含預先計算至該每一指令集模擬器之該下一同步點的最佳情況延遲之步驟,其中該預先計算該最佳情況延遲包含二型態點,其一為該下一同步點之一尾部 及另一為該每一基本區塊之一頭部。
- 如請求項1所述之多核心指令集模擬之高平行化同步方法,其中該指令集模擬器之該下一同步點的該預測執行時序可以藉由總和其目前本地時間及最佳情況預測時間而得到。
- 如請求項1所述之多核心指令集模擬之高平行化同步方法,其中更包含更新關於其預測該下一同步點之資料。
- 如請求項3所述之多核心指令集模擬之高平行化同步方法,其中更包含基於該資料當遇到該同步點時,決定是否等待或繼續執行。
- 如請求項1所述之多核心指令集模擬之高平行化同步方法,其中該分散式排程允許該每一指令集模擬器自動地與其他指令集模擬器進行排程以運作於相同時間。
- 如請求項1所述之多核心指令集模擬之高平行化同步方法,其中當該多核心指令集模擬之第一指令集模擬器遇到下一同步點,若該第一指令集模擬器之預測該下一同步點係發生於未來時間,則該多核心指令集模擬之第二指令集模擬器無需等待;而當該第一指令集模擬器之 該預測下一同步點係早於真實的下一同步點,由於虛假預測時間關係而該多核心指令集模擬之該第二指令集模擬器必須等待。
- 如請求項6所述之多核心指令集模擬之高平行化同步方法,其中當該第一指令集模擬器持續進行,將更新該最佳情況預測以達至該真實下一同步點;只要該第一指令集模擬器之預測下一同步點係較晚於該第一指令集模擬器之目前同步點,該第二指令集模擬器可以同步地恢復其執行。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/011,942 US8423343B2 (en) | 2011-01-24 | 2011-01-24 | High-parallelism synchronization approach for multi-core instruction-set simulation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201232411A TW201232411A (en) | 2012-08-01 |
TWI507990B true TWI507990B (zh) | 2015-11-11 |
Family
ID=46544821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100111618A TWI507990B (zh) | 2011-01-24 | 2011-04-01 | 多核心指令集模擬之高平行化同步方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8423343B2 (zh) |
TW (1) | TWI507990B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9063735B2 (en) * | 2010-10-19 | 2015-06-23 | Samsung Electronics Co., Ltd. | Reconfigurable processor and method for processing loop having memory dependency |
KR20130089418A (ko) * | 2012-02-02 | 2013-08-12 | 삼성전자주식회사 | Asip를 포함하는 연산장치 및 설계 방법 |
US9817771B2 (en) * | 2013-08-20 | 2017-11-14 | Synopsys, Inc. | Guarded memory access in a multi-thread safe system level modeling simulation |
GB201318473D0 (en) | 2013-10-18 | 2013-12-04 | Imperas Software Ltd | P7 |
US9652286B2 (en) | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
FR3021433B1 (fr) * | 2014-05-21 | 2016-06-24 | Kalray | Systeme de synchronisation inter-processeurs |
CN105468817B (zh) * | 2015-11-12 | 2019-04-12 | 上海科梁信息工程股份有限公司 | 一种多模型实时仿真系统 |
JP6239212B1 (ja) * | 2016-03-17 | 2017-11-29 | 三菱電機株式会社 | シミュレーション装置、シミュレーション方法及びシミュレーションプログラム |
DE102016211286A1 (de) * | 2016-06-23 | 2017-12-28 | Siemens Aktiengesellschaft | Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren |
CN113094260B (zh) * | 2021-03-18 | 2024-04-05 | 西北工业大学 | 一种分布式系统时序关系建模与仿真分析方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW571206B (en) * | 2000-02-17 | 2004-01-11 | Tensilica Inc | Automated processor generation system for designing a configurable processor and method for the same |
US7779393B1 (en) * | 2005-05-25 | 2010-08-17 | Oracle America, Inc. | System and method for efficient verification of memory consistency model compliance |
US20100229036A1 (en) * | 2009-03-04 | 2010-09-09 | Suresh Goyal | Method and apparatus for system testing using multiple instruction types |
TW201039142A (en) * | 2009-04-21 | 2010-11-01 | Nat Univ Tsing Hua | Method and device for multi-core instruction-set simulation |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615357A (en) * | 1994-12-29 | 1997-03-25 | Sun Microsystems, Inc. | System and method for verifying processor performance |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6230114B1 (en) * | 1999-10-29 | 2001-05-08 | Vast Systems Technology Corporation | Hardware and software co-simulation including executing an analyzed user program |
US7133820B2 (en) * | 2000-03-15 | 2006-11-07 | Arc International | Method and apparatus for debugging programs in a distributed environment |
US20030105620A1 (en) * | 2001-01-29 | 2003-06-05 | Matt Bowen | System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architetures |
US20030074177A1 (en) * | 2001-01-29 | 2003-04-17 | Matt Bowen | System, method and article of manufacture for a simulator plug-in for co-simulation purposes |
US20020152061A1 (en) * | 2001-04-06 | 2002-10-17 | Shintaro Shimogori | Data processing system and design system |
US7331040B2 (en) * | 2002-02-06 | 2008-02-12 | Transitive Limted | Condition code flag emulation for program code conversion |
US6892286B2 (en) * | 2002-09-30 | 2005-05-10 | Sun Microsystems, Inc. | Shared memory multiprocessor memory model verification system and method |
US7873506B2 (en) * | 2003-06-30 | 2011-01-18 | Agere Systems Inc. | Simulation framework with support for multiple integrated circuits having potentially differing characteristics |
US7725848B2 (en) * | 2005-01-27 | 2010-05-25 | Wolfgang Nebel | Predictable design of low power systems by pre-implementation estimation and optimization |
US7493606B2 (en) * | 2004-08-03 | 2009-02-17 | Université du Québec à Chicoutimi (UQAC) | Method for compiling and executing a parallel program |
JP4717492B2 (ja) * | 2005-04-12 | 2011-07-06 | 富士通株式会社 | マルチコアモデルシミュレータ |
US8447580B2 (en) * | 2005-05-31 | 2013-05-21 | The Mathworks, Inc. | Modeling of a multiprocessor system |
US7770050B2 (en) * | 2006-05-03 | 2010-08-03 | Sony Computer Entertainment Inc. | Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code |
US20080189528A1 (en) * | 2007-02-02 | 2008-08-07 | Mips Technologies, Inc. | System, Method and Software Application for the Generation of Verification Programs |
US20110295587A1 (en) * | 2010-06-01 | 2011-12-01 | Eeckhout Lieven | Methods and systems for simulating a processor |
-
2011
- 2011-01-24 US US13/011,942 patent/US8423343B2/en active Active
- 2011-04-01 TW TW100111618A patent/TWI507990B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW571206B (en) * | 2000-02-17 | 2004-01-11 | Tensilica Inc | Automated processor generation system for designing a configurable processor and method for the same |
US7779393B1 (en) * | 2005-05-25 | 2010-08-17 | Oracle America, Inc. | System and method for efficient verification of memory consistency model compliance |
US20100229036A1 (en) * | 2009-03-04 | 2010-09-09 | Suresh Goyal | Method and apparatus for system testing using multiple instruction types |
TW201039142A (en) * | 2009-04-21 | 2010-11-01 | Nat Univ Tsing Hua | Method and device for multi-core instruction-set simulation |
Non-Patent Citations (1)
Title |
---|
Meng-Huan Wu etc.,An Effective Synchronization Approach for Fast and Accurate Multi-core Instruction-set Simulation,EMSOFT ’09 Proceedings of the 17th ACM international conference on Embedded Software,P.197-204 * |
Also Published As
Publication number | Publication date |
---|---|
TW201232411A (en) | 2012-08-01 |
US8423343B2 (en) | 2013-04-16 |
US20120191441A1 (en) | 2012-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI507990B (zh) | 多核心指令集模擬之高平行化同步方法 | |
Lv et al. | Combining abstract interpretation with model checking for timing analysis of multicore software | |
JP5711853B2 (ja) | 異種コアの自動カーネル移行 | |
US8352924B2 (en) | Method and device for multi-core instruction-set simulation | |
US20150363230A1 (en) | Parallelism extraction method and method for making program | |
Srinivas et al. | IBM POWER7 performance modeling, verification, and evaluation | |
Bobrek et al. | Stochastic contention level simulation for single-chip heterogeneous multiprocessors | |
US20190146893A1 (en) | Simulation device, simulation system, simulation method, and simulation program | |
Burguiere et al. | A contribution to branch prediction modeling in WCET analysis | |
Daoudi et al. | somp: Simulating openmp task-based applications with numa effects | |
CN108021563B (zh) | 一种指令间数据依赖的检测方法和装置 | |
Puschner et al. | Towards composable timing for real-time programs | |
Diaz et al. | VIPPE, parallel simulation and performance analysis of multi-core embedded systems on multi-core platforms | |
Plyaskin et al. | Context-aware compiled simulation of out-of-order processor behavior based on atomic traces | |
Lázaro-Muñoz et al. | A tasks reordering model to reduce transfers overhead on GPUs | |
Wu et al. | A distributed timing synchronization technique for parallel multi-core instruction-set simulation | |
Roloff et al. | Approximate time functional simulation of resource-aware programming concepts for heterogeneous MPSoCs | |
Wu et al. | A high-parallelism distributed scheduling mechanism for multi-core instruction-set simulation | |
Yuan et al. | Automatic enhanced CDFG generation based on runtime instrumentation | |
Rethinagiri et al. | Dessert: Design space exploration tool based on power and energy at system-level | |
Lee et al. | Parallel gpu architecture simulation framework exploiting architectural-level parallelism with timing error prediction | |
JP6776914B2 (ja) | 並列化方法、並列化ツール | |
Hapka et al. | Controlling high-performance platform uncertainties with timing diversity | |
Herbegue et al. | Formal architecture specification for time analysis | |
Widerspick et al. | Latency measurements for an emulation platform on autonomous driving platform nvidia drive px2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |