TWI587218B - 記憶體事務層級模型模擬方法及系統 - Google Patents
記憶體事務層級模型模擬方法及系統 Download PDFInfo
- Publication number
- TWI587218B TWI587218B TW105129513A TW105129513A TWI587218B TW I587218 B TWI587218 B TW I587218B TW 105129513 A TW105129513 A TW 105129513A TW 105129513 A TW105129513 A TW 105129513A TW I587218 B TWI587218 B TW I587218B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- output
- queue
- time
- level model
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
- Memory System (AREA)
- Debugging And Monitoring (AREA)
Description
本揭露是有關於一種事務層級模型模擬方法及系統,且特別是有關於一種記憶體事務層級模型模擬方法及系統。
因應系統設計複雜度不斷提高,ITRS(International Technology Roadmap for Semiconductors)建議採用電子系統層級設計方法進行架構探索與分析,以改善系統性能。在此設計方法中,將提升設計抽象層級,例如是依序從電晶體、閘極、暫存器級提升至事務層級。
事務層級模型的其中一項設計重點在於模擬效率。因應於系統複雜度的提高,研究人員均致力於提出各種創新的模擬方法來提升模擬效率。
本揭露係有關於一種記憶體事務層級模型模擬方法及系統,其利用部份更新命令輸出時間表(bank status table)的
方式,使得記憶體事務層級模型模擬方法的效率大幅增進。
根據本揭露之一實施例,提出一種記憶體事務層級模型模擬方法。記憶體事務層級模型模擬方法用以模擬輸出至少一命令至一記憶體。記憶體包括數個儲存區(bank)。各個儲存區對應於一命令輸出時間表(bank status table)。記憶體事務層級模型模擬方法包括以下步驟:等待一事件(event)。判斷命令輸出時間表之其中之一是否需回溯更新(recovery)。若有命令輸出時間表需回溯更新,則根據一已輸出命令佇列(TMP queue)回溯更新此命令輸出時間表。依據一欲執行命令佇列(bank status table)輸出至少一命令至記憶體及並記錄至少一命令於已輸出命令佇列。更新部份之命令輸出時間表,其餘之命令輸出時間表維持不變。
根據本揭露之另一實施例,提出一種記憶體事務層級模型模擬系統。記憶體事務層級模型模擬系統用以模擬輸出至少一命令至一記憶體。記憶體包括數個儲存區(bank)。各個儲存區對應於一命令輸出時間表(bank status table)。記憶體事務層級模型模擬系統包括一回溯更新判斷單元、一回溯單元、一輸入與輸出單元、一佇列管理單元及一部份更新單元。回溯更新判斷單元用以判斷命令輸出時間表是否需回溯更新(recovery)。若有命令輸出時間表需回溯更新,則回溯單元根據一已輸出命令佇列(TMP queue)回溯更新此命令輸出時間表。輸入與輸出單元係依據一欲執行命令佇列(command queue)輸出至少一命令至記
憶體。佇列管理單元用以記錄該至少一命令於已輸出命令佇列。部份更新單元更新部份之命令輸出時間表,其餘之命令輸出時間表維持不變。
為了對本揭露之上述及其他方面有更佳的瞭解,下文特舉較佳實施例,並配合所附圖式,作詳細說明如下:
100、200‧‧‧記憶體事務層級模型模擬系統
110‧‧‧輸入與輸出單元
120‧‧‧佇列管理單元
130‧‧‧部份更新單元
140‧‧‧回溯更新判斷單元
150‧‧‧回溯單元
160‧‧‧同步單元
270‧‧‧衝突偵測單元
280‧‧‧排程單元
A、A0、A1、A2‧‧‧啟動命令(active command)
B0‧‧‧第0儲存區
B1‧‧‧第1儲存區
B7‧‧‧第2儲存區
B3‧‧‧第3儲存區
B15‧‧‧第15儲存區
MR‧‧‧記憶體
P‧‧‧預充電命令(pre-charge command)
Q1‧‧‧欲執行命令佇列(command queue)
Q2‧‧‧已輸出命令佇列(TMP queue)
R‧‧‧讀取命令(read command)
RF‧‧‧暫存列(row buffer)
RP、RP0、RP1、RP2‧‧‧讀取與預充電命令(read with pre-charge command)
R’、R0’、R1’‧‧‧讀取請求事件(read request event)
S110、S120、S130、S140、S150、S160、S1701、S180、S190、S210、S220、S230、S240、S250、S251、S260、S261、S270、S280、S290、S291、S310、S320、S330、S340、S350、S351、S360、S370、S380、S390、S391、S410、S420、S430、S450、S460、S470、S480、S490、S491、S910、S920、S930、S940、S950‧‧‧流程步驟
T0、T1、T2‧‧‧命令輸出時間表(bank status table)
W‧‧‧寫入命令(write command)
WP、WP0、WP1、WP2‧‧‧寫入與預充電命令(write with pre-charge command)
W’、W0’、W1’、W2’‧‧‧寫入請求事件(write request event)
第1圖繪示記憶體之架構示意圖。
第2圖繪示請求事件(request event)與命令之關係圖。
第3圖繪示依據一實施例之以週期為更新基礎(cycle based)之記憶體事務層級模型模擬方法的示意圖。
第4圖繪示依據另一實施例之以週期為更新基礎之記憶體事務層級模型模擬方法的示意圖。
第5A圖繪示記憶體事務層級模型模擬系統的方塊圖。
第5B圖繪示記憶體事務層級模型模擬方法的流程圖。
第6圖繪示以週期為更新基礎之記憶體事務層級模型模擬方法的流程圖。
第7圖繪示依據一實施例之以請求事件為更新基礎(event based)之記憶體事務層級模型模擬方法的示意圖。
第8圖繪示以請求事件為更新基礎之記憶體事務層級模型模擬系統的方塊圖。
第9圖繪示以請求事件為更新基礎之記憶體事務層級模型模
擬方法的流程圖。
第10圖繪示依據另一實施例之以請求事件為更新基礎之記憶體事務層級模型模擬方法的示意圖。
第11圖繪示以請求事件為更新基礎之記憶體事務層級模型模擬方法的流程圖。
第12圖繪示以視窗為更新基礎(window based)之記憶體事務層級模型模擬方法的流程圖。
請參照第1圖,其繪示記憶體MR之架構示意圖。記憶體MR例如是動態存取記憶體(DRAM)。本實施例所述之記憶體MR可以是實際/實體上的記憶體,也可以是記憶體的軟/硬體模型。記憶體MR包含數個儲存區(bank),例如是第0儲存區(bank 0)B0、第1儲存區(bank 1)B1、第2儲存區(bank 2)B2、第3儲存區(bank 3)B3、…、第15儲存區(bank 15)B15。在各個儲存區(例如是第1儲存區B0~第15儲存區B15)中,存在數行(column)及數列(row)的儲存單元。第1儲存區B0~第15儲存區B15另有一暫存列(row buffer)RF。在記憶體MR進行寫入(write)時,係將欲寫入之資料暫存於暫存列RF中,接著再轉送到指定之儲存單元。同樣地,在記憶體MR進行讀取(read)時,係將欲讀取之資料暫存於暫存列RF中,接著再予以輸出。
由於記憶體MR的寫入或讀取動作均需要透過暫存列RF來進行,故需進一步提供對暫存列RF的操作控制。請參照第2圖,其繪示請求事件(request event)與命令(command)之關係圖。當接收到對記憶體MR進行讀取動作之讀取請求事件R’(read request event)時,根據讀取請求事件R’,需執行啟動命令(active command)A、讀取命令(read command)R及預充電命令(pre-charge command)P。啟動命令A用以開啟暫存列RF的存取路徑。讀取命令R用以進行讀取的動作。預充電命令P用以把暫存列RF的值存回第1儲存區B0~第15儲存區B15,以供下次使用。根據一命令順序限制,啟動命令A的執行時間早於讀取命令R,讀取命令R的執行時間早於預充電命令P。在另一命令順序限制中,預充電命令P可省略。
在另一實施例中,當接收到對記憶體MR進行讀取動作之讀取請求事件R’時,根據讀取請求事件R’,可執行啟動命令A、讀取與預充電命令(read with pre-charge command)RP。啟動命令A用以開啟暫存列RF的存取路徑。讀取與預充電命令RP用以進行讀取及清空暫存列RF的動作。根據命令順序限制,啟動命令A的執行時間早於讀取與預充電命令RP。
當接收到對記憶體MR進行寫入動作之寫入請求事件W’時,根據寫入請求事件W’,需執行啟動命令A、寫入命令(write command)W及預充電命令P。啟動命令A用以開啟暫存列RF的存取路徑。寫入命令W用以進行寫入的動作。預充電
命令P用以清空暫存列RF,以供下次使用。根據一命令順序限制,啟動命令A的執行時間早於寫入命令W,寫入命令W的執行時間早於預充電命令P。在另一命令順序限制中,預充電命令P可省略。
在另一實施例中,當接收到對記憶體MR進行寫入動作之寫入請求事件W’時,根據寫入請求事件W’,可執行啟動命令A、寫入與預充電命令(write with pre-charge command)WP。啟動命令A用以開啟暫存列RF的存取路徑。寫入與預充電命令WP用以進行寫入及清空暫存列RF的動作。根據一命令順序限制,啟動命令A的執行時間早於寫入與預充電命令WP。
以下說明之讀取請求事件R’,係以執行啟動命令A及讀取與預充電命令RP為例作說明;寫入請求事件W’,係以執行啟動命令A及寫入與預充電命令WP為例作說明。
如上所述,每一儲存區具有一暫存列RF。當第0儲存區B0收到讀取請求事件R0’且第1儲存區B1也收到讀取請求事件R1’時,對於第0儲存區B0需執行啟動命令A0及讀取與預充電命令RP0,對於第1儲存區B1需要執行啟動命令A1及讀取與預充電命令RP1。由於第0儲存區B0的暫存列RF與第1儲存區B1的暫存列RF相互獨立,故讀取與預充電命令RP1並不一定要等待讀取與預充電命令RP0執行完畢才可執行。只要滿足互不影響的一限制條件下,即可適當地安排啟動命令A0、讀取與預充電命令RP0、啟動命令A1及讀取與預充電命令RP1等四
個命令的執行順序,以增進系統效率。
請參照下表一,其示例性表示命令執行時間限制條件。舉例而言,根據表一第3行所述,執行啟動命令A後,在同一儲存區欲執行讀取與預充電命令RP(或讀取命令R)時,需間隔4週期以上。根據表一第7行所述,執行讀取與預充電命令RP後,在同一儲存區欲執行讀取與預充電命令RP(或讀取命令R)時,需間隔7週期以上。根據表一第14行所述,執行啟動命令A後,在不同儲存區欲執行啟動命令A時,需間隔3週期以上。其餘內容如表一所示。未列於表一之情況,則需間隔1週期以上即可。
本揭露所述之記憶體事務層級模型模擬方法係可以是以週期為更新基礎(cycle based)之記憶體事務層級模型模擬方法、以視窗為更新基礎(window based)之記憶體事務層級模型模擬方法、或以請求事件為更新基礎(event based)之記憶體事務層級模型模擬方法。以下先說明以週期為更新基礎(cycle based)之記憶體事務層級模型模擬方法。請參照第3圖,其繪示
依據一實施例之以週期為更新基礎(cycle based)之記憶體事務層級模型模擬方法的示意圖。以週期為更新基礎(cycle based)之記憶體事務層級模型模擬方法可以模擬接收事件,並輸出對應於接收事件的命令至記憶體。在第3圖之實施例中,於第10週期收到讀取請求事件R1’。讀取請求事件R1’係為請求對第1儲存區B1的讀取動作。根據讀取請求事件R1’,對第1儲存區B1的啟動命令A1、讀取與預充電命令RP1儲存於欲執行命令佇列(command queue)Q1中。在本實施例中,欲執行命令佇列(command queue)Q1儲存待執行的命令。
在第10週期時,由於欲執行命令佇列Q1所儲存之命令僅相關於第1儲存區B1,且未輸出任何命令,故只需更新第1儲存區B1之命令輸出時間表(bank status table)T1,而無須更新第0儲存區B0之命令輸出時間表T0及第2儲存區B2之命令輸出時間表T2,也無需更新其他儲存區之命令輸出時間表。在本實施例中,命令輸出時間表T1記錄了可以對第1儲存區B1輸出各個命令(例如啟動命令A1、讀取與預充電命令RP1或寫入與預充電命令WP1)的最早時間,命令輸出時間表T0及命令輸出時間表T2的內容可依此類推,在此不再贅述。第3圖以實線表示需更新之命令輸出時間表T1,並以虛線表示無需更新之命令輸出時間表T0、T2。為方便理解,第3圖仍顯示出無需要更新之命令輸出時間表T0、T2的內容。但在實際實施過程中,於第10週期的時間點,不需要更新之命令輸出時間表T0、T2並未儲存任
何內容。
根據上表一,前一時間未執行任何命令,故於第1儲存區B1欲執行任何命令時,僅需間隔1週期以上即可。因此,於命令輸出時間表T1,啟動命令A1可輸出時間為第11(10+1)週期,讀取與預充電命令RP1可輸出時間為第11(10+1)週期,寫入與預充電命令WP1可以輸出之時間為第11(10+1)週期。
在第10週期時,欲執行命令佇列Q1記錄著啟動命令A1、讀取與預充電命令RP1,根據命令輸出時間表T1的查詢結果,兩者的可輸出時間均為第11週期。根據命令順序限制,啟動命令A1的執行時間早於讀取與預充電命令RP1,故於第11週期可優先執行的是啟動命令A1。
接著,時間來到第11週期時,輸出啟動命令A1、將啟動命令A1從欲執行命令佇列Q1中移除,並將啟動命令A1及其輸出時間儲存於已輸出命令佇列(TMP queue)Q2。於第11週期更進一步收到寫入請求事件W0’。寫入請求事件W0’係為請求對第0儲存區B0的寫入動作。根據寫入請求事件W0’,對第0儲存區B0的啟動命令A0、寫入與預充電命令WP0將儲存於欲執行命令佇列Q1中。因此,欲執行命令佇列Q1儲存了未輸出的讀取與預充電命令RP1、啟動命令A0、寫入與預充電命令WP0。
在第11週期時,由於欲執行命令佇列Q1所儲存之命令僅相關於第0儲存區B0及第1儲存區B1,且輸出之命令僅
相關於第1儲存區B1,故只需更新第0儲存區B0之命令輸出時間表T0及第1儲存區B1之命令輸出時間表T1,而無須更新第2儲存區B2之命令輸出時間表T2,也無需更新其他儲存區之命令輸出時間表。
根據上表一之第14行,前一時間已執行啟動命令A1,故欲執行啟動命令A0時,需間隔3週期以上。因此,於命令輸出時間表T0,啟動命令A0可輸出時間為第14(11+3)週期。欲執行讀取與預充電命令RP0及寫入與預充電命令WP0則未列於表一,故欲執行讀取與預充電命令RP0及寫入與預充電命令WP0時僅需間隔1週期以上。因此,於命令輸出時間表T0,讀取與預充電命令RP0可輸出時間為第12(11+1)週期,寫入與預充電命令WP0可以輸出之時間為第12(11+1)週期。
根據上表一之第5行,前一時間已執行啟動命令A1,故欲執行啟動命令A1時,需間隔18週期以上。因此,於命令輸出時間表T1,啟動命令A1可輸出時間為第29(11+18)週期。根據上表一之第3行,欲執行讀取與預充電命令RP1,需間隔4週期以上。因此,於命令輸出時間表T1,讀取與預充電命令RP1可輸出時間為第15(11+4)週期。根據上表一之第4行,欲執行寫入與預充電命令WP1,需間隔4週期以上。於命令輸出時間表T1,寫入與預充電命令WP1可以輸出之時間為第15(11+4)週期。
在第11週期時,欲執行命令佇列Q1記錄著讀取與
預充電命令RP1、啟動命令A0、寫入與預充電命令WP0,根據命令輸出時間表T0、T1的查詢結果,三者的可輸出時間之最早者為寫入與預充電命令WP0的第12週期,其次為啟動命令A0的第14週期,再其次為讀取與預充電命令RP1的第15週期。根據命令順序限制,啟動命令A0的執行時間早於寫入與預充電命令WP0,故於第14週期可優先執行的是啟動命令A0。
接著,時間來到第14週期時,輸出啟動命令A0、將啟動命令A0從欲執行命令佇列Q1中移除、並將啟動命令A0及其輸出時間儲存於已輸出命令佇列Q2。因此,欲執行命令佇列Q1儲存了未輸出的讀取與預充電命令RP1、寫入與預充電命令WP0;已輸出命令佇列Q2儲存了啟動命令A1、啟動命令A0。
在第14週期時,由於欲執行命令佇列Q1所儲存之命令僅相關於第0儲存區B0及第1儲存區B1,且輸出之命令僅相關於第0儲存區B0,故只需更新第0儲存區B0之命令輸出時間表T0及第1儲存區B1之命令輸出時間表T1,而無須更新第2儲存區B2之命令輸出時間表T2,也無需更新其他儲存區之命令輸出時間表。
根據上表一之第5行,前一時間已執行啟動命令A0,故欲執行啟動命令A0時,需間隔18週期以上。因此,於命令輸出時間表T0,啟動命令A0可輸出時間為第32(14+18)週期。根據上表一之第3行,欲執行讀取與預充電命令RP0,需間隔4週期以上。因此,於命令輸出時間表T0,讀取與預充電命令RP0
可輸出時間為第18(14+4)週期。根據上表一之第4行,欲執行寫入與預充電命令WP0,需間隔4週期以上。於命令輸出時間表T0,寫入與預充電命令WP0可以輸出之時間為第18(14+4)週期。
根據上表一之第14行,前一時間已執行啟動命令A0,故欲執行啟動命令A1時,需間隔3週期以上。第14週期間隔3週期為第17週期,早於命令輸出時間表T1原本所記錄之第29週期。因此,於命令輸出時間表T1,啟動命令A1可輸出時間仍為第29週期。根據上表一,欲執行之讀取與預充電命令RP1未列示於表一,故僅需間隔1週期以上。因此,於命令輸出時間表T1,讀取與預充電命令RP1可輸出時間為第15(14+1)週期。根據上表一,欲執行之寫入與預充電命令WP1未列示於表一,故僅需間隔1週期以上。因此,於命令輸出時間表T1,寫入與預充電命令WP1可以輸出之時間為第15(14+1)週期。
在第14週期時,欲執行命令佇列Q1記錄著讀取與預充電命令RP1、寫入與預充電命令WP0,根據命令輸出時間表T0、T1的查詢結果,兩者的可輸出時間之最早者為讀取與預充電命令RP1的第15週期。根據命令順序限制,讀取與預充電命令RP1、寫入與預充電命令WP0兩者沒有順序限制,故可於第15週期執行可輸出時間最早的讀取與預充電命令RP1。
接著,時間來到第15週期時,輸出讀取與預充電命令RP1、將讀取與預充電命令RP1從欲執行命令佇列Q1中移除、
並將讀取與預充電命令RP1及其輸出時間儲存於已輸出命令佇列Q2。因此,欲執行命令佇列Q1儲存了未輸出的寫入與預充電命令WP0;已輸出命令佇列Q2儲存了啟動命令A1、啟動命令A0、讀取與預充電命令RP1。
在第15週期時,由於欲執行命令佇列Q1所儲存之命令僅相關於第0儲存區B0,且輸出之命令僅相關於第1儲存區B1,故只需更新第0儲存區B0之命令輸出時間表T0及第1儲存區B1之命令輸出時間表T1,而無須更新第2儲存區B2之命令輸出時間表T2,也無需更新其他儲存區之命令輸出時間表。
根據上表一,前一時間已執行讀取與預充電命令RP1,欲執行之啟動命令A0未列示於表一,因此僅需間隔1週期以上。第15週期間隔1週期為第16週期,早於命令輸出時間表T0原本所記錄之第32週期。因此,於命令輸出時間表T0,啟動命令A0可輸出時間仍為第32週期。根據上表一之第15行,欲執行讀取與預充電命令RP0,需間隔2週期以上。第15週期間隔2週期為第17週期,早於命令輸出時間表T0原本所記錄之第18週期。因此,於命令輸出時間表T0,讀取與預充電命令RP0可輸出時間仍為第18週期。根據上表一之第16行,欲執行寫入與預充電命令WP0,需間隔4週期以上。於命令輸出時間表T0,寫入與預充電命令WP0可以輸出之時間為第19(15+4)週期。
根據上表一之第6行,前一時間已執行讀取與預充電命令RP1,欲執行啟動命令A1,需間隔7週期以上。第15週
期間隔7週期為第22週期,早於命令輸出時間表T1原本所記錄之第29週期。因此,於命令輸出時間表T1,啟動命令A1可輸出時間仍為第29週期。根據上表一之第7行,欲執行讀取與預充電命令RP1,需間隔7週期以上。因此,於命令輸出時間表T1,讀取與預充電命令RP1可輸出時間為第22(15+7)週期。根據上表一之第8行,欲執行寫入與預充電命令WP1,需間隔7週期以上。於命令輸出時間表T1,寫入與預充電命令WP1可以輸出之時間為第22(15+7)週期。
在第15週期時,欲執行命令佇列Q1僅記錄著寫入與預充電命令WP0,根據命令輸出時間表T0的查詢結果,寫入與預充電命令WP0的可輸出時間為第19週期。
接著,時間來到第19週期時,輸出寫入與預充電命令WP0、將寫入與預充電命令WP0從欲執行命令佇列Q1中移除、並將寫入與預充電命令WP0及其輸出時間儲存於已輸出命令佇列Q2。因此,欲執行命令佇列Q1未儲存任何命令;已輸出命令佇列Q2儲存了啟動命令A1、啟動命令A0、讀取與預充電命令RP1、寫入與預充電命令WP0。
在第19週期時,由於欲執行命令佇列Q1未儲存任何命令,且輸出之命令僅相關於第0儲存區B0,故只需更新第0儲存區B0之命令輸出時間表T0,而無須更新第1儲存區B1之命令輸出時間表T1及第2儲存區B2之命令輸出時間表T2,也無需更新其他儲存區之命令輸出時間表。
根據上表一之第9行,前一時間已執行寫入與預充電命令WP0,欲執行之啟動命令A0需間隔14週期以上。因此,於命令輸出時間表T0,啟動命令A0可輸出時間為第33(19+14)週期。根據上表一之第10行,欲執行之讀取與預充電命令RP0需間隔14週期以上。因此,於命令輸出時間表T0,讀取與預充電命令RP0可輸出時間為第33(19+14)週期。根據上表一之第11行,欲執行之寫入與預充電命令WP0需間隔14週期以上。因此,於命令輸出時間表T0,寫入與預充電命令WP0可以輸出之時間為第33(19+14)週期。
接著,時間來到第21週期時,進一步收到寫入請求事件W2’。寫入請求事件W2’係為請求對第2儲存區B2的寫入動作。根據寫入請求事件W2’,對第2儲存區B2的啟動命令A2、寫入與預充電命令WP2儲存於欲執行命令佇列Q1中。因此,欲執行命令佇列Q1儲存了啟動命令A2、寫入與預充電命令WP2。
在第21週期時,由於欲執行命令佇列Q1所儲存之命令僅相關於第2儲存區B2,且沒有輸出任何命令,故只需更新第2儲存區B2之命令輸出時間表T2,而無須更新第0儲存區B0之命令輸出時間表T0及第1儲存區之命令輸出時間表T1,也無需更新其他儲存區之命令輸出時間表。
在最近一次有對任何命令輸出時間表進行更新動作中(第19週期),第2儲存區B2之命令輸出時間表T2並未進行
更新,故需要藉由已輸出命令佇列Q2進行回溯更新。也就是說,依據已輸出命令佇列(TMP queue)Q2已儲存的啟動命令A1、啟動命令A0、讀取與預充電命令RP1、寫入與預充電命令WP0將虛線之各個命令輸出時間表T2回溯建立起來,以得到第21週期之命令輸出時間表T2。
如上所述,在各個時間點並未針對所有的儲存區更新所有的命令輸出時間表,而只有更新部份的命令輸出時間表。在有需要時,未更新的命令輸出時間表可以根據已輸出命令佇列Q2來進行回溯更新。如此一來,可以大幅增進記憶體事務層級模型模擬方法的效率。
另外,請再參照第4圖,其繪示依據另一實施例之以週期為更新基礎之記憶體事務層級模型模擬方法的示意圖。第4圖之實施例與第3圖之實施例不同之處在於寫入請求事件W2’是在第40週期才接收到。
時間來到第40週期時,進一步收到寫入請求事件W2’。寫入請求事件W2’係為請求對第2儲存區B2的寫入動作。根據寫入請求事件W2’,對第2儲存區B2的啟動命令A2、寫入與預充電命令WP2儲存於欲執行命令佇列Q1中。因此,欲執行命令佇列Q1儲存了啟動命令A2、寫入與預充電命令WP2。
在第40週期時,由於欲執行命令佇列Q1所儲存之命令僅相關於第2儲存區B2,且沒有輸出任何命令,故只需更新第2儲存區B2之命令輸出時間表T2,而無須更新第0儲存區B0
之命令輸出時間表T0及第1儲存區之命令輸出時間表T1,也無需更新其他儲存區之命令輸出時間表。
在最近一次有對任何命令輸出時間表進行更新動作中(第19週期),第2儲存區B2之命令輸出時間表T2並未進行更新,故需要藉由已輸出命令佇列Q2進行回溯更新。請參照表一,所需間隔週期數最大值為18,此數值即為相依時間間隔(dependence interval)。也就是說,間隔週期數在18以內,都可能具有相依性,而需要依據表一進行回溯更新。
換句話說,已輸出命令佇列Q2內所儲存的命令需保留的週期數為相依時間間隔(即18),超過相依時間間隔之後,則可刪除,而無保留之必要。
在第40週期時,第40週期與前次更新之第19週期已超過相依時間間隔(即18),故已輸出命令佇列Q2的所有命令均已被刪除。因此,在第40週期時,可直接視為前一時間未執行任何命令,故於第2儲存區B2欲執行任何命令時,僅需間隔1週期以上即可。因此,於命令輸出時間表T2,啟動命令A2可輸出時間為第41(40+1)週期,讀取與預充電命令RP2可輸出時間為第41(40+1)週期,寫入與預充電命令WP2可以輸出之時間為第41(40+1)週期。
也就是說,已輸出命令佇列Q2可以適當地進行縮減,即依據相依時間間隔刪除已輸出命令佇列Q2之部份內容,以增進回溯更新命令輸出時間表的效率。
請參照第5A圖,其繪示記憶體事務層級模型模擬系統100的方塊圖。記憶體事務層級模型模擬系統100包括一輸入與輸出單元110、一佇列管理單元120、一部份更新單元130、一回溯更新判斷單元140、一回溯單元150及一同步單元160。
輸入與輸出單元110用以輸入或輸出各種資料,可以包括一匯流排界面(bus interface),例如從屬匯流排界面(slave bus interface),並可選擇性的包括請求佇列(request queue)及/或回應佇列(response queue),請求佇列可以接收匯流排界面傳來的請求(request)並將請求儲存在請求佇列中,回應佇列可以儲存事務層級模型模擬系統100的回應(response)並將回應傳送到匯流排界面;在一實施例中,輸入與輸出單元110也可以包括輸出命令至記憶體之一界面(interface);在另一實施例中,輸入與輸出單元110可以包括一傳輸電路。佇列管理單元120用以管理欲執行命令佇列Q1及已輸出命令佇列Q2。部份更新單元130用以對部份之命令輸出時間表進行更新之動作。回溯更新判斷單元140用以判斷是否有需要回溯更新之命令輸出時間表。回溯單元150用以對命令輸出時間表進行回溯更新之動作。同步單元160用以管控更新基礎,例如是採用以週期為更新基礎、以視窗為更新基礎、或以請求事件為更新基礎。佇列管理單元120、部份更新單元130、回溯更新判斷單元140、回溯單元150及同步單元160例如是一晶片、一電路、一電路板或儲存數組程式碼之儲存裝置,或是可由處理器、電腦或伺服器執行的程式碼。
以下更搭配流程圖說明上述第5A圖之記憶體事務層級模型模擬系統100的運作。請參照第5B圖,其繪示記憶體事務層級模型模擬方法的流程圖。在步驟S910中,等待一事件(event)。事件例如是對計時器進行更新之事件、接收到新的請求事件(request event)、同步時間到達、或視窗時間到達。
當事件發生後,在步驟S920中,回溯更新判斷單元140判斷此些命令輸出時間表之其中之一是否需回溯更新(recovery)。
若此些命令輸出時間表之其中之一需回溯更新,則進入步驟S930。在步驟S930中,回溯單元150根據已輸出命令佇列(TMP queue)Q2回溯更新此命令輸出時間表。
若沒有命令輸出時間表需回溯更新,則進入步驟S940。在步驟S940中,輸入與輸出單元110依據欲執行命令佇列(command queue)Q1輸出至少一命令至記憶體,佇列管理單元120並記錄此至少一命令於已輸出命令佇列Q2。
接著,在步驟S950中,部份更新單元130更新部份之命令輸出時間表,其餘之命令輸出時間表維持不變。
上述記憶體事務層級模型模擬方法係可以是以週期為更新基礎(cycle based)之記憶體事務層級模型模擬方法、以請求事件為更新基礎(event based)之記憶體事務層級模型模擬方法、或以視窗為更新基礎(window based)之記憶體事務層級模型模擬方法。以下分別說明各種更新基礎之記憶體事務層級模
型模擬方法。本揭露雖以流程圖說明記憶體事務層級模型模擬方法,然而並不限制各步驟的執行順序。以第5B圖為例,也可在執行步驟S910後,先執行步驟S940、S950,再執行步驟S920、S930,而後再回到步驟S910。
請參照第6圖,其繪示以週期為更新基礎之記憶體事務層級模型模擬方法的流程圖。在步驟S110中,等待同步單元160對計時器進行更新之事件,例如等待某一週期的時間到達。
當計時器更新,例如某一週期的時間到達時,在步驟S180中,回溯更新判斷單元140判斷維持不變之命令輸出時間表之其中之一是否需回溯更新。舉例來說,在上述第3圖之第21週期時,收到了寫入請求事件W2’。在最近一次有對任何命令輸出時間表進行更新動作中(第19週期),第2儲存區B2之命令輸出時間表T2並未進行更新,故需要進行回溯更新。具體而言,對應於欲執行命令佇列Q1且維持不變之命令輸出時間表需回溯更新,或者是,對應於輸出之命令且維持不變之命令輸出時間表需回溯更新。在一實施例中,當計時器更新時,若是收到新的請求事件,可將對應於新的請求事件的命令加入欲執行命令佇列Q1。
若維持不變之命令輸出時間表皆不需回溯更新,則進入步驟S120。若維持不變之命令輸出時間表之其中之一需回溯更新,則進入步驟S190。在步驟S190中,回溯單元150根據已
輸出命令佇列Q2回溯更新此命令輸出時間表。具體而言,回溯單元150按照已輸出命令佇列Q2之命令及/或命令之輸出時間依序更新需回溯更新之命令輸出時間表。
接著,在步驟S120中,佇列管理單元120自欲執行命令佇列Q1選擇一命令。舉例來說,於上述第3圖之例子中,在進入第14週期時,欲執行命令佇列Q1依序記錄著讀取與預充電命令RP1、啟動命令A0、寫入與預充電命令WP0。故可優先選擇讀取與預充電命令RP1。
然後,在步驟S130中,佇列管理單元120判斷所選擇之命令是否能夠輸出。接續於上例,在進入第14週期時,若步驟S120所選擇的命令是讀取與預充電命令RP1,則因命令輸出時間表T1記錄著讀取與預充電命令RP1最早需在第15週期才能輸出,故所選擇的讀取與預充電命令RP1無法輸出。因此,進入步驟S140。
若所選擇之命令不能夠輸出,則進入步驟S140。在步驟S140中,佇列管理單元120判斷欲執行命令佇列Q1之命令是否皆已選擇過。
若欲執行命令佇列Q1之命令皆已選擇過,則到步驟S110。若欲執行命令佇列Q1之命令並非皆已選擇過,則回至步驟S120。接續於上例,欲執行命令佇列Q1中尚有啟動命令A0、寫入與預充電命令WP0,故進入步驟S120選擇可選擇啟動命令A0。於步驟S130中,命令輸出時間表T0記錄著啟動命令A0在
第14週期可以輸出,故所選擇的啟動命令A0可以輸出,而進入步驟S150。
在步驟S150中,輸入與輸出單元110輸出所選擇之命令至記憶體,佇列管理單元120記錄此命令及其輸出時間於已輸出命令佇列Q2。
在步驟S160中,若已輸出命令佇列Q2所儲存之命令已超過相依時間間隔,則佇列管理單元120刪除已輸出命令佇列Q2之部份內容,以縮減已輸出命令佇列Q2。詳細的說,佇列管理單元120刪除輸出時間與目前時間之間隔大於相依時間間隔之已輸出命令佇列Q2之命令。
在步驟S170中,部份更新單元130更新部份之命令輸出時間表,其餘之命令輸出時間表維持不變。詳細的說,更新對應於欲執行命令佇列Q1及目前輸出之命令的部份之命令輸出時間表。接續於上例,在第14週期時,由於欲執行命令佇列Q1所儲存之命令僅相關於第0儲存區B0及第1儲存區B1,且輸出之命令僅相關於第0儲存區B0,故只需更新第0儲存區B0之命令輸出時間表T0及第1儲存區B1之命令輸出時間表T1,而無須更新第2儲存區B2之命令輸出時間表T2,也無需更新其他儲存區之命令輸出時間表。
根據上述流程圖,步驟S170並未在各個時間點針對所有的儲存區更新所有的命令輸出時間表,而只有更新部份的命令輸出時間表。在步驟S180判斷出有需要時,未更新的命令輸
出時間表可以在步驟S190根據已輸出命令佇列來進行回溯更新。如此一來,可以大幅增進記憶體事務層級模型模擬方法的效率。
請參照第7圖,其繪示依據一實施例之以請求事件為更新基礎(event based)之記憶體事務層級模型模擬方法的示意圖。第7圖之實施例係以請求事件來驅動同步動作(Request Driven)。如第7圖之上方圖表,依據第21週期收到的讀取請求事件R0’,啟動命令A0、讀取與預充電命令RP0排定之預計輸出時間分別為第33週期、第37週期。根據上方圖表,讀取與預充電命令RP0是最後一個命令,其預計輸出時間為第37週期。
如第7圖之下方圖表,在第22週期進一步收到寫入請求事件W1’。由於第22週期之時間早於上方圖表原訂之最後一個命令的預計輸出時間(即第37週期),故發生了衝突(schedule conflict)。因此,在第7圖之下方圖表中,需要重新排列預計輸出時間,而將預計輸出時間晚於第22週期的部份進行調整,直到排到寫入請求事件W1’的最後一個命令為止。經過調整後,啟動命令A1、啟動命令A0、寫入與預充電命令WP1之預計輸出時間分別為第29週期、第33週期、第34週期(讀取與預充電命令RP0之預計輸出時間由第37週期調整為第42週期)。
請參照第8圖,其繪示以請求事件為更新基礎之記憶體事務層級模型模擬系統200的方塊圖。相較於第5A圖之記憶體事務層級模型模擬系統100,以請求事件為更新基礎之記憶體事務層級模型模擬系統200更包括一衝突偵測單元270及一排
程單元280。衝突偵測單元270用以偵測是否發生衝突。排程單元280用以重新排列預計輸出時間。衝突偵測單元270及排程單元280例如是一晶片、一電路、一電路板、或儲存數組程式碼之儲存裝置,或是可由處理器、電腦或伺服器執行的程式碼。
以下更搭配流程圖說明上述第8圖之以請求事件為更新基礎之記憶體事務層級模型模擬系統200的運作。請參照第9圖,其繪示以請求事件為更新基礎之記憶體事務層級模型模擬方法的流程圖。第9圖之實施例係以請求事件來驅動同步動作(Request Driven)。在步驟S210中,等待事件。事件可為新的請求事件或同步時間到達(例如時間已到達欲執行命令佇列Q1中預計輸出時間的最小值)。以第7圖為例,在第22週期收到了寫入請求事件W1’。
當事件發生後,例如收到新的請求事件,佇列管理單元120將對應於新的請求事件的命令加入欲執行命令佇列Q1,以第7圖為例,例如收到在第22週期收到了寫入請求事件W1’,佇列管理單元120將啟動命令A1及寫入與預充電命令WP1加入欲執行命令佇列Q1,在步驟S220中,回溯更新判斷單元140判斷維持不變之命令輸出時間表之其中之一是否需回溯更新。
若有維持不變之命令輸出時間表需回溯更新,則進入步驟S230。在步驟S230中,回溯單元150根據已輸出命令佇列Q2回溯更新此命令輸出時間表。
若沒有維持不變之命令輸出時間表需回溯更新,則
直接進入步驟S240。在步驟S240中,衝突偵測單元270依據此請求事件,判斷請求事件是否與命令之預計輸出時間發生衝突。
若請求事件與命令之預計輸出時間發生衝突,則進入步驟S250。在步驟S250中,將已排列之命令送回欲執行命令佇列Q1。接續於第7圖之例子,由於第22週期之時間早於第7圖之上方圖表原訂之最後一個命令的預計輸出時間(即第37週期),故發生了衝突。因此,在第7圖之下方圖表中,將已排列之命令送回欲執行命令佇列Q1(未繪示)。
若請求事件與預計輸出時間未發生衝突,則進入步驟S251。在步驟S251中,排程單元280對欲執行命令佇列Q1的命令排列預計輸出時間。
接著,在步驟S260中,部份更新單元130更新部份之命令輸出時間表,其餘之命令輸出時間表維持不變。
然後,在步驟S261中,判斷是否為欲執行命令佇列Q1中第一個完整排完命令之請求事件的最後一個命令。
若不是欲執行命令佇列Q1中第一個完整排完命令之請求事件的最後一個命令,則回到步驟S251。若為欲執行命令佇列Q1中第一個完整排完命令之請求事件的最後一個命令,則進入步驟S270。在本實施例中,排程單元280對欲執行命令佇列Q1的命令排列預計輸出時間,直到排到欲執行命令佇列Q1中第一個完整排完命令之請求事件的最後一個命令為止。例如,在第7圖之下方圖表中,記錄著排列啟動命令A1、啟動命令A0、寫
入與預充電命令WP1的預計輸出時間,在此例中,第一個完整排完命令之請求事件為寫入請求事件W1’。需說明的是,若是重新排列後,排列順序為啟動命令A1、啟動命令A0、讀取與預充電命令RP0,則排到讀取與預充電命令RP0為止,在此例中,第一個完整排完命令之請求事件為讀取請求事件R0’。在步驟S270中,判斷是否接收到另一請求事件或時間已到達欲執行命令佇列Q1中預計輸出時間的最小值。
若接收到另一請求事件,則回至步驟S220。
若時間已到達欲執行命令佇列Q1中預計輸出時間的最小值,則進入步驟S280。在步驟S280中,輸入與輸出單元110輸出命令直到欲執行命令佇列Q1中第一個完整排完命令之請求事件的最後一個命令輸出為止,佇列管理單元120記錄輸出的命令及其輸出時間於已輸出命令佇列Q2。例如,在第7圖之下方圖表中,輸出啟動命令A1、啟動命令A0及寫入與預充電命令WP1,並記錄啟動命令A1、啟動命令A0及寫入與預充電命令WP1,以及啟動命令A1、啟動命令A0及寫入與預充電命令WP1的輸出時間於已輸出命令佇列Q2。
然後,在步驟S290中,若已輸出命令佇列Q2所儲存之命令已超過相依時間間隔,則佇列管理單元120刪除已輸出命令佇列Q2之部份內容,以縮減已輸出命令佇列Q2。
接著,在步驟S291中,判斷欲執行命令佇列Q1是否沒有任何命令。若欲執行命令佇列Q1沒有任何命令,則進入
步驟S210;若欲執行命令佇列Q1存在至少一命令,則進入步驟S220。
根據上述流程圖,步驟S260並未針對所有的儲存區更新所有的命令輸出時間表,而只有更新部份的命令輸出時間表。在步驟S220判斷出有需要時,未更新的命令輸出時間表可以在步驟S230根據已輸出命令佇列來進行回溯更新。如此一來,可以大幅增進記憶體事務層級模型模擬方法的效率。
請參照第10圖,其繪示依據另一實施例之以請求事件為更新基礎之記憶體事務層級模型模擬方法的示意圖。相較於第7圖之實施例,第10圖之實施例係以命令來驅動同步動作(Command Driven)。在命令來驅動同步動作的實施例中,一次僅排定一個命令的預計輸出時間。如第10圖之上方圖表,依據第21週期收到的讀取請求事件R0’,啟動命令A0排定之預計輸出時間為第33週期。
如第10圖之下方圖表,在第22週期進一步收到寫入請求事件W1’。由於第22週期之時間早於上方圖表原訂之預計輸出時間(即第33週期),故發生了衝突。因此,在第10圖之下方圖表中,需要重新排列預計輸出時間,而將預計輸出時間晚於第22週期的部份進行調整。經過調整後,啟動命令A1之預計輸出時間排定為第29週期(讀取與預充電命令RP0之預計輸出時間則未排定)。
請參照第11圖,其繪示以請求事件為更新基礎之記
憶體事務層級模型模擬方法的流程圖。第11圖之實施例係以命令事件來驅動同步動作(Command Driven)。在步驟S310中,等待事件,事件可為新的請求事件或同步時間到達(例如時間已到達欲執行命令佇列Q1中預計輸出時間的最小值)。以第10圖為例,在第22週期收到了寫入請求事件W1’。
當事件發生後,例如收到新的請求事件,佇列管理單元120將對應於新的請求事件的命令加入欲執行命令佇列Q1,以第10圖為例,例如收到在第22週期收到了寫入請求事件W1’,佇列管理單元120將啟動命令A1及寫入與預充電命令WP1加入欲執行命令佇列Q1,在步驟S320中,回溯更新判斷單元140判斷維持不變之命令輸出時間表之其中之一是否需回溯更新。
若有維持不變之命令輸出時間表需要回溯更新,則進入步驟S330。在步驟S330中,回溯單元150根據已輸出命令佇列Q2回溯更新此命令輸出時間表。
若沒有維持不變之命令輸出時間表需要回溯更新,則直接進入步驟S340。在步驟S340中,衝突偵測單元270依據此請求事件,判斷請求事件是否與命令之預計輸出時間發生衝突。
若請求事件與命令之預計輸出時間發生衝突,則進入步驟S350。在步驟S350中,將已排列之命令送回欲執行命令佇列Q1。接續於第10圖之例子,由於第22週期之時間早於第10圖上方圖表原訂之預計輸出時間(即第33週期),故發生了衝
突。因此,將已排列之命令送回欲執行命令佇列Q1(未繪示)。
若請求事件與命令之預計輸出時間沒有發生衝突,則進入步驟S351。在步驟S351中,排程單元280排列欲執行命令佇列之一個命令。
接著,在步驟S360中,判斷是否接收到另一請求事件或時間已到達欲執行命令佇列Q1中預計輸出時間的最小值。
若接收到另一請求事件,則回至步驟S320。
若時間已到達欲執行命令佇列Q1中預計輸出時間的最小值,則進入步驟S370。在步驟S370中,輸入與輸出單元110輸出對應於預計輸出時間之最小值的命令至記憶體,佇列管理單元120記錄此命令及其輸出時間於已輸出命令佇列Q2。
然後,在步驟S380中,若已輸出命令佇列Q2所儲存之命令已超過相依時間間隔,則佇列管理單元120刪除已輸出命令佇列Q2之部份內容,以縮減已輸出命令佇列Q2。
接著,在步驟S390中,部份更新單元130更新部份之命令輸出時間表,其餘之命令輸出時間表維持不變。
接著,在步驟S391中,判斷欲執行命令佇列Q1是否沒有任何命令。若欲執行命令佇列Q1沒有任何命令,則進入步驟S310;若欲執行命令佇列Q1存在至少一命令,則進入步驟S320。
根據上述流程圖,步驟S390並未針對所有的儲存區更新所有的命令輸出時間表,而只有更新部份的命令輸出時間表。
在步驟S320判斷出有需要時,未更新的命令輸出時間表可以在步驟S330根據已輸出命令佇列來進行回溯更新。如此一來,可以大幅增進記憶體事務層級模型模擬方法的效率。
請參照第12圖,其繪示以視窗為更新基礎(window based)之記憶體事務層級模型模擬方法的流程圖。第12圖之實施例係以固定的時間週期數來驅動同步動作。在步驟S410中,等待視窗時間到達之事件,在一實施例中,一個視窗例如是固定的週期數,一個視窗時間例如是固定的週期數的時間,例如一個視窗是20個週期數,則一個視窗時間為20個週期數的時間,視窗時間到達則是每20個週期數的時間到達,例如第20個週期、第40個週期等。在一實施例中,一個視窗是可以動態調整的固定週期數,例如,原先設定一個視窗是20個週期數,但經過一段時間後,可能為了增加精確度,而將一個視窗調小為10個週期數;而另一方面,也可能為了加快模擬速度,而將一個視窗調大為50個週期數。
當視窗時間到達,在步驟S420中,回溯更新判斷單元140判斷維持不變之命令輸出時間表之其中之一是否需回溯更新。在一實施例中,當視窗時間到達,若是收到新的請求事件,可將對應於新的請求事件的命令加入欲執行命令佇列Q1。
若有維持不變之命令輸出時間表需要回溯更新,則進入步驟S430。在步驟S430中,回溯單元150根據已輸出命令佇列Q2回溯更新此命令輸出時間表。
若沒有維持不變之命令輸出時間表需要回溯更新,則直接進入步驟S450。
在步驟S450中,排程單元280排列欲執行命令佇列之命令。一個視窗時間可能排列一或多個命令,例如一個視窗是20個週期數,若是在第10個週期和第15個週期各可以輸出一個命令,則將這兩個命令排程在第20個週期。
接著,在步驟S460中,判斷視窗時間是否到達。
若視窗時間未到達,則回至步驟S420。
若視窗時間到達,則進入步驟S470。在步驟S470中,輸出所有排程在視窗時間的命令,佇列管理單元120記錄輸出的命令及其輸出時間於已輸出命令佇列Q2。
然後,在步驟S480中,若已輸出命令佇列Q2所儲存之命令已超過相依時間間隔,則佇列管理單元120刪除已輸出命令佇列Q2之部份內容,以縮減已輸出命令佇列Q2。
接著,在步驟S490中,部份更新單元130更新部份之命令輸出時間表,其餘之命令輸出時間表維持不變。
接著,在步驟S491中,判斷欲執行命令佇列Q1是否沒有任何命令。若欲執行命令佇列Q1沒有任何命令,則進入步驟S410;若欲執行命令佇列Q1存在至少一命令,則進入步驟S420。
根據上述流程圖,步驟S490並未針對所有的儲存區更新所有的命令輸出時間表,而只有更新部份的命令輸出時間表。
在步驟S420判斷出有需要時,未更新的命令輸出時間表可以在步驟S430根據已輸出命令佇列來進行回溯更新。如此一來,可以大幅增進記憶體事務層級模型模擬方法的效率。
綜上所述,雖然本揭露已以各種實施例揭露如上,然其並非用以限定本揭露。本揭露所屬技術領域中具有通常知識者,在不脫離本揭露之精神和範圍內,當可作各種之更動與潤飾。因此,本揭露之保護範圍當視後附之申請專利範圍所界定者為準。
S910、S920、S930、S940、S950‧‧‧流程步驟
Claims (30)
- 一種記憶體事務層級模型模擬方法,用以模擬輸出至少一命令至一記憶體,該記憶體包括複數個儲存區(bank),各該儲存區對應於一命令輸出時間表(band status table),該記憶體事務層級模型模擬方法包括:等待一事件(event);判斷該些命令輸出時間表之其中之一是否需回溯更新(recovery);若該些命令輸出時間表之其中之一需回溯更新,則根據一已輸出命令佇列(TMP queue)回溯更新該些命令輸出時間表之其中之一;依據一欲執行命令佇列(command queue)輸出該至少一命令至該記憶體及並記錄該至少一命令於該已輸出命令佇列;以及更新部份之該些命令輸出時間表,其餘之該些命令輸出時間表維持不變。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中該至少一命令及該至少一命令之一輸出時間係記錄於該已輸出命令佇列。
- 如申請專利範圍第2項所述之記憶體事務層級模型模擬方法,其中根據該已輸出命令佇列回溯更新該些命令輸出 時間表之其中之一之步驟係按照已輸出命令佇列之該至少一命令及該至少一命令之該至少一輸出時間依序更新需回溯更新之該些命令輸出時間表之其中之一。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中在更新部份之該些命令輸出時間表之步驟中,對應於該欲執行命令佇列及目前輸出之該至少一命令的部份之該些命令輸出時間表被更新。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,更包括:縮減該已輸出命令佇列。
- 如申請專利範圍第5項所述之記憶體事務層級模型模擬方法,其中在縮減該已輸出命令佇列之步驟中,係依據一相依時間間隔(dependence interval)刪除該已輸出命令佇列之部份內容。
- 如申請專利範圍第6項所述之記憶體事務層級模型模擬方法,其中在縮減該已輸出命令佇列之步驟中,刪除一輸出時間與一目前時間之間隔大於該相依時間間隔之該已輸出命令佇列之該至少一命令。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中各該至少一命令對應於一預計輸出時間,該記憶體事務層級模型模擬方法更包括:依據該事件,判斷該事件與該至少一預計輸出時間是否發生衝突;以及若該事件與該至少一預計輸出時間發生衝突,將該至少一命令送回該欲執行命令佇列,並排列該欲執行命令佇列中的該至少一命令的該預計輸出時間,直到排到該欲執行命令佇列中第一個完整排完命令之一請求事件的最後一個命令為止。
- 如申請專利範圍第8項所述之記憶體事務層級模型模擬方法,更包括:判斷時間是否已到達該欲執行命令佇列中的該至少一預計輸出時間之最小值;以及若時間已到達該欲執行命令佇列的該至少一預計輸出時間之最小值,則輸出該至少一命令直到該欲執行命令佇列中第一個完整排完命令之該請求事件的最後一個命令輸出為止。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中各該至少一命令對應於一預計輸出時間,該記憶體事務層級模型模擬方法更包括: 依據該事件,判斷該事件與該至少一預計輸出時間是否發生衝突;以及若該事件與該至少一預計輸出時間發生衝突,將該至少一命令送回該欲執行命令佇列,並排列該至少一命令的該預計輸出時間。
- 如申請專利範圍第10項所述之記憶體事務層級模型模擬方法,更包括:判斷時間是否已到達該欲執行命令佇列中的該至少一預計輸出時間之最小值;以及若時間已到達欲執行命令佇列的該至少一預計輸出時間之最小值,則輸出該至少一命令。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中各該至少一命令對應於一預計輸出時間,該記憶體事務層級模型模擬方法更包括:判斷時間是否已到達一視窗時間;以及若時間已到達該視窗時間,則輸出排程在該視窗時間之所有該至少一命令。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中判斷該些命令輸出時間表之其中之一是否需 回溯更新之步驟中,對應於該欲執行命令佇列且維持不變之該些命令輸出時間表之其中之一需回溯更新。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中判斷該些命令輸出時間表之其中之一是否需回溯更新之步驟中,對應於輸出之該至少一命令且維持不變之該些命令輸出時間表之其中之一需回溯更新。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中該記憶體事務層級模型模擬方法係為以週期為更新基礎(cycle based)之記憶體事務層級模型模擬方法、以視窗為更新基礎(window based)之記憶體事務層級模型模擬方法、或以請求事件為更新基礎(event based)之記憶體事務層級模型模擬方法。
- 如申請專利範圍第1項所述之記憶體事務層級模型模擬方法,其中該欲執行命令佇列儲存待執行的該至少一命令。
- 一種記憶體事務層級模型模擬系統,用以模擬輸出至少一命令至一記憶體,該記憶體包括複數個儲存區(bank),各該儲存區對應於一命令輸出時間表(bank status table),該記憶 體事務層級模型模擬系統包括:一回溯更新判斷單元,用以判斷該些命令輸出時間表之其中之一是否需回溯更新(recovery);一回溯單元,若該些命令輸出時間表之其中之一需回溯更新,則該回溯單元根據一已輸出命令佇列(TMP queue)回溯更新該些命令輸出時間表之其中之一;一輸入與輸出單元,係依據一欲執行命令佇列(command queue)輸出該至少一命令至該記憶體;一佇列管理單元,用以記錄該至少一命令於該已輸出命令佇列;以及一部份更新單元,更新部份之該些命令輸出時間表,其餘之該些命令輸出時間表維持不變。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中該佇列管理單元記錄該至少一命令及該至少一命令之一輸出時間於該已輸出命令佇列。
- 如申請專利範圍第18項所述之記憶體事務層級模型模擬系統,其中該回溯單元係按照已輸出命令佇列之該至少一命令及該至少一命令之該至少一輸出時間依序更新需回溯更新之該些命令輸出時間表之其中之一。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中該部份更新單元更新對應於該欲執行命令佇列及目前輸出之該至少一命令的部份之該些命令輸出時間表。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中該佇列管理單元更用以縮減該已輸出命令佇列。
- 如申請專利範圍第21項所述之記憶體事務層級模型模擬系統,其中該佇列管理單元係依據一相依時間間隔(dependence interval)刪除該已輸出命令佇列之部份內容。
- 如申請專利範圍第22項所述之記憶體事務層級模型模擬系統,其中該佇列管理單元刪除一輸出時間與一目前時間之間隔大於該相依時間間隔之該已輸出命令佇列之該至少一命令。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中該輸入與輸出單元更等待一事件(event),各該至少一命令對應於一預計輸出時間,該記憶體事務層級模型模擬系統更包括:一衝突偵測單元,依據該事件,判斷該事件與該至少一預計 輸出時間是否發生衝突;以及一排程單元,若該事件與該至少一預計輸出時間發生衝突,將該至少一命令送回該欲執行命令佇列,並排列該欲執行命令佇列中的該至少一命令的該預計輸出時間,直到排到該欲執行命令佇列中第一個完整排完命令之一請求事件的最後一個命令為止。
- 如申請專利範圍第24項所述之記憶體事務層級模型模擬系統,其中若時間已到達欲執行命令佇列的該至少一預計輸出時間之最小值,則該輸入與輸出單元輸出該至少一命令直到該欲執行命令佇列中第一個完整排完命令之該請求事件的最後一個命令輸出為止。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中該輸入與輸出單元更等待一事件(event),各該至少一命令對應於一預計輸出時間,該記憶體事務層級模型模擬系統更包括:一衝突偵測單元,依據該事件,判斷該事件與該至少一預計輸出時間是否發生衝突;以及一排程單元,若該事件與該至少一預計輸出時間發生衝突,將該至少一命令送回該欲執行命令佇列,並排列該至少一命令的該預計輸出時間。
- 如申請專利範圍第26項所述之記憶體事務層級模型模擬系統,其中若時間已到達欲執行命令佇列的該至少一預計輸出時間之最小值,則該輸入與輸出單元輸出該至少一命令。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中若時間已到達一視窗時間,則該輸入與輸出單元輸出排程在該視窗時間之所有該至少一命令。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中該回溯更新判斷單元判定對應於該欲執行命令佇列且維持不變之該些命令輸出時間表之其中之一需回溯更新。
- 如申請專利範圍第17項所述之記憶體事務層級模型模擬系統,其中該回溯更新判斷單元判定對應於輸出之該至少一命令且維持不變之該些命令輸出時間表之其中之一需回溯更新。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105129513A TWI587218B (zh) | 2016-09-10 | 2016-09-10 | 記憶體事務層級模型模擬方法及系統 |
CN201611107634.2A CN107818192B (zh) | 2016-09-10 | 2016-12-06 | 存储器事务层级模型模拟方法及*** |
US15/391,082 US10365829B2 (en) | 2016-09-10 | 2016-12-27 | Memory transaction-level modeling method and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105129513A TWI587218B (zh) | 2016-09-10 | 2016-09-10 | 記憶體事務層級模型模擬方法及系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI587218B true TWI587218B (zh) | 2017-06-11 |
TW201810033A TW201810033A (zh) | 2018-03-16 |
Family
ID=59688285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105129513A TWI587218B (zh) | 2016-09-10 | 2016-09-10 | 記憶體事務層級模型模擬方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10365829B2 (zh) |
CN (1) | CN107818192B (zh) |
TW (1) | TWI587218B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102485411B1 (ko) * | 2018-03-02 | 2023-01-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11341063B2 (en) * | 2019-01-31 | 2022-05-24 | Dell Products L.P. | Systems and methods for safely detecting indeterminate states of ranges in a self-encrypting storage resource |
US11775197B2 (en) * | 2021-03-25 | 2023-10-03 | Kyocera Document Solutions Inc. | Single command for reading then clearing dynamic random access memory |
WO2023000212A1 (en) * | 2021-07-21 | 2023-01-26 | Micron Technology, Inc. | Memory command aggregation to improve sequential memory command performance |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6970852B1 (en) * | 1999-04-28 | 2005-11-29 | Imx Solutions, Inc. | Methods and apparatus for conducting secure, online monetary transactions |
TW201224748A (en) * | 2010-12-06 | 2012-06-16 | Ind Tech Res Inst | Transaction level system power estimation method and system |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4943913A (en) * | 1988-02-10 | 1990-07-24 | International Business Machines Corporation | Operating system accessing control blocks by using home address space segment table to control instruction and operand fetch and store operations |
US6053948A (en) | 1995-06-07 | 2000-04-25 | Synopsys, Inc. | Method and apparatus using a memory model |
US6035389A (en) * | 1998-08-11 | 2000-03-07 | Intel Corporation | Scheduling instructions with different latencies |
US7130990B2 (en) * | 2002-12-31 | 2006-10-31 | Intel Corporation | Efficient instruction scheduling with lossy tracking of scheduling information |
US20050188275A1 (en) | 2004-02-03 | 2005-08-25 | Maly John W. | Systems and methods for error tracking and recovery in an expectation-based memory agent checker |
US7788078B1 (en) | 2004-02-27 | 2010-08-31 | Synopsys, Inc. | Processor/memory co-exploration at multiple abstraction levels |
US7609567B2 (en) | 2005-06-24 | 2009-10-27 | Metaram, Inc. | System and method for simulating an aspect of a memory circuit |
US8275597B1 (en) | 2008-01-28 | 2012-09-25 | Cadence Design Systems, Inc. | High speed memory simulation |
US8627014B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Memory model for hardware attributes within a transactional memory system |
CN101685427B (zh) * | 2009-09-02 | 2011-11-02 | 龙芯中科技术有限公司 | 一种根据应用的时间裕量对动态内存调度的装置及方法 |
US20110307847A1 (en) | 2010-06-10 | 2011-12-15 | Global Unichip Corporation | Hybrid system combining TLM simulators and HW accelerators |
US9015649B2 (en) | 2010-07-19 | 2015-04-21 | Taiwan Semiconductor Manufacturing Co., Ltd. | Method and apparatus for electronic system model generation |
TW201216163A (en) | 2010-10-12 | 2012-04-16 | Ind Tech Res Inst | Memory modeling method and model generator |
TW201220195A (en) | 2010-11-02 | 2012-05-16 | Global Unichip Corp | A method for synchronizing and synthesizing bus transaction traces record in un-timed environment |
CN103093016B (zh) | 2011-11-04 | 2016-06-08 | 上海华虹宏力半导体制造有限公司 | 简化存储器后仿网表来实现大容量存储器仿真的方法 |
KR101962874B1 (ko) * | 2012-04-24 | 2019-03-27 | 삼성전자주식회사 | 메모리 장치, 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법 |
US8793628B1 (en) | 2013-03-11 | 2014-07-29 | Cadence Design Systems, Inc. | Method and apparatus of maintaining coherency in the memory subsystem of an electronic system modeled in dual abstractions |
US8943449B1 (en) | 2013-07-15 | 2015-01-27 | Cadence Design Systems, Inc. | Method and apparatus of enabling direct memory access into a target system memory modeled in dual abstractions while ensuring coherency |
US9471726B2 (en) | 2013-07-25 | 2016-10-18 | Netspeed Systems | System level simulation in network on chip architecture |
CN103778970A (zh) | 2014-01-24 | 2014-05-07 | 华为技术有限公司 | 闪存存储器工作性能仿真方法和装置 |
CN103810123B (zh) * | 2014-02-18 | 2017-12-29 | 龙芯中科技术有限公司 | 内存控制装置及方法 |
TWI614686B (zh) * | 2015-12-15 | 2018-02-11 | 財團法人工業技術研究院 | 系統模擬方法 |
-
2016
- 2016-09-10 TW TW105129513A patent/TWI587218B/zh active
- 2016-12-06 CN CN201611107634.2A patent/CN107818192B/zh active Active
- 2016-12-27 US US15/391,082 patent/US10365829B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6970852B1 (en) * | 1999-04-28 | 2005-11-29 | Imx Solutions, Inc. | Methods and apparatus for conducting secure, online monetary transactions |
TW201224748A (en) * | 2010-12-06 | 2012-06-16 | Ind Tech Res Inst | Transaction level system power estimation method and system |
Also Published As
Publication number | Publication date |
---|---|
CN107818192A (zh) | 2018-03-20 |
CN107818192B (zh) | 2022-01-21 |
US20180074702A1 (en) | 2018-03-15 |
US10365829B2 (en) | 2019-07-30 |
TW201810033A (zh) | 2018-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI587218B (zh) | 記憶體事務層級模型模擬方法及系統 | |
JP3984786B2 (ja) | 異なる待ち時間を伴う命令のスケジューリング | |
US7827167B2 (en) | Database management system and method including a query executor for generating multiple tasks | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
KR101515568B1 (ko) | 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치 | |
US8250557B2 (en) | Configuring a dependency graph for dynamic by-pass instruction scheduling | |
JP2009536766A (ja) | 依存レベルを用いたマルチスレッドスプレッドシートの処理 | |
JP5058167B2 (ja) | メモリアクセス要求の遅延アービトレーション | |
US20160117118A1 (en) | System and methods for processor-based memory scheduling | |
JP4206653B2 (ja) | タスクスケジューリングシステムおよび方法、プログラム | |
KR102205899B1 (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
JP5108690B2 (ja) | Dma装置及びdma転送方法 | |
CN112767978B (zh) | 一种ddr命令调度方法、装置、设备及介质 | |
US7761280B2 (en) | Data processing apparatus simulation by generating anticipated timing information for bus data transfers | |
JP4644142B2 (ja) | クリティカルパス推定プログラム、推定装置、推定方法、および集積回路設計プログラム。 | |
Kohútka | A new FPGA-based architecture of task scheduler with support of periodic real-time tasks | |
Andreozzi et al. | A MILP approach to DRAM access worst-case analysis | |
TW200931443A (en) | Apparatus for predicting memory access and method thereof | |
JPH11353291A (ja) | マルチプロセッサシステム及びタスク交換プログラムを記録した媒体 | |
JP6926681B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP2020135524A (ja) | 演算装置 | |
US7216194B2 (en) | Methods and systems for improving delayed read handling | |
CN110383248A (zh) | 控制多核处理器的方法和相关计算机 | |
KR20180093875A (ko) | 플립 큐 관리에 기초한 그래픽스 컨텍스트 스케줄링 | |
JP6761182B2 (ja) | 情報処理装置、情報処理方法及びプログラム |