專利名稱:總線系統(tǒng)以及其操作方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于非依序(out-of-order)執(zhí)行的總線系統(tǒng)的操作方法,且尤其是關(guān) 于在非依序執(zhí)行的總線系統(tǒng)中依據(jù)相依限制條件建立相依鏈接的方法。
背景技術(shù):
傳統(tǒng)的總線協(xié)議均以依序(in-order)的方式執(zhí)行,例如先進(jìn)高效能總線(AHB, Advanced High performance BUS),即依據(jù)各指令的先后順序來依序執(zhí)行。然而,這樣 的執(zhí)行方式會(huì)有個(gè)缺點(diǎn),就是當(dāng)有一筆較大的數(shù)據(jù)交易(transaction)時(shí)會(huì)延誤后續(xù)許 多筆數(shù)據(jù)交易,而當(dāng)系統(tǒng)越來越龐大時(shí),依序執(zhí)行的總線架構(gòu)將不敷使用。因此,目前大 型的系統(tǒng)轉(zhuǎn)而采用非依序(out-of-order)執(zhí)行的總線系統(tǒng),例如先進(jìn)延伸接口 (AXI, AdvancedeXtensible Interface)與開放核心協(xié)議(0CP,0pen Core Protocol)總線系統(tǒng)。 這些非依序執(zhí)行的總線系統(tǒng)可以使總線上的主控裝置(master)與從屬裝置(slave)能有 更多的空間去處理傳送自總線的指令。在非依序執(zhí)行的總線系統(tǒng)中,數(shù)據(jù)的順序并非依序 排列,例如通過總線系統(tǒng)的指令通道(commandcha皿el)傳送的指令,與通過總線系統(tǒng)的寫 入數(shù)據(jù)通道(write-data channel)傳送而相應(yīng)于該指令的寫入數(shù)據(jù)并非依序進(jìn)入從屬裝 置中,因此,線程識(shí)別碼(threadID)或標(biāo)簽識(shí)別碼(tagID)便經(jīng)常被用來處理這些非依序 進(jìn)入而又互相關(guān)聯(lián)的指令。然而,當(dāng)這些線程識(shí)別碼或標(biāo)簽識(shí)別碼不依序地在總線上傳送 時(shí),將無法使相關(guān)的指令被依序執(zhí)行,因而容易產(chǎn)生錯(cuò)誤。 美國(guó)公開專利第2007/0067549號(hào)案(此后簡(jiǎn)稱為549號(hào)專利案)中曾提出相關(guān)的 解決方法,其采用傳統(tǒng)的先進(jìn)先出概念解決。為了避免未完成(outstanding)的寫入指令 與其后的讀取指令可能發(fā)生數(shù)據(jù)危障(datahazard) ,549號(hào)專利案將該未完成的寫入指令 的相關(guān)信息暫存在先進(jìn)先出存儲(chǔ)器中,當(dāng)檢查出其后續(xù)的讀取操作會(huì)有數(shù)據(jù)危障發(fā)生時(shí), 則暫停該讀取操作,直到該未完成寫入指令已被完成后再執(zhí)行暫停中的讀取操作,以避免 數(shù)據(jù)危障發(fā)生。此方法仍存在一些問題,例如當(dāng)該讀取操作暫停時(shí),該讀取操作之后的所有 讀取操作亦暫停執(zhí)行,即便先執(zhí)行它們亦不會(huì)發(fā)生數(shù)據(jù)危障。從而,可得知若采用549號(hào)專 利的方法將使系統(tǒng)整體的效能降低。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提出一種應(yīng)用于非依序(out-of-order)執(zhí)行的總線系 統(tǒng)的操作方法,以提升系統(tǒng)的整體效能、避免數(shù)據(jù)危障。該方法包括依據(jù)相依限制條件將 使用總線系統(tǒng)的指令鏈接成具有先后順序的相依鏈接;以及依據(jù)各相依鏈接對(duì)該些指令進(jìn) 行先后順序的處理。 本發(fā)明還提出一種總線系統(tǒng),包括指令暫存器,接收并暫存新進(jìn)指令,其中該新 進(jìn)指令至少包括一鏈接標(biāo)記;以及相依鏈接產(chǎn)生器,耦接至該指令暫存器,依據(jù)該新進(jìn)指令 N個(gè)鏈接標(biāo)記的相依限制條件產(chǎn)生N個(gè)相依鏈接,且N為任意正整數(shù);其中,該新進(jìn)指令所 包括的每一鏈接標(biāo)記皆是用以表示該新進(jìn)指令與多個(gè)先前尚未執(zhí)行的新進(jìn)指令之間的先后順序的鏈接關(guān)系。
圖1是依據(jù)本發(fā)明的一實(shí)施例的總線系統(tǒng)的操作方法的流程圖。 圖2是依據(jù)本發(fā)明的一實(shí)施例的存儲(chǔ)器調(diào)度器的方塊圖。 圖3是顯示利用單一相依限制條件所建立的相依指令鏈接中一指令的結(jié)構(gòu)。 圖4是說明存儲(chǔ)器調(diào)度器在不同時(shí)間接收到的各指令之間的鏈接關(guān)系。 圖5是顯示利用單一相依限制條件所建立的相依指令鏈接中一指令的另一結(jié)構(gòu)。 圖6是顯示利用單一相依限制條件所建立的相依指令鏈接中一指令的又另一結(jié)構(gòu)。 圖7是顯示利用兩個(gè)相依限制條件所建立的相依指令鏈接中各指令的結(jié)構(gòu)。 圖8是說明存儲(chǔ)器調(diào)度器200在不同時(shí)間接收到的各指令之間的鏈接關(guān)系。 圖9是依據(jù)本發(fā)明的一實(shí)施例來對(duì)總線上傳輸?shù)臄?shù)據(jù)進(jìn)行追蹤除錯(cuò)的示意圖。
[主要元件標(biāo)號(hào)說明]
110、120、130步驟200存儲(chǔ)器調(diào)度器
210指令暫存器220相依鏈接產(chǎn)生器
230指令選擇器240鏈接關(guān)系移除器
300、500、600、 700指令310、710、720末端標(biāo)記
320、520、620、 730指令內(nèi)容330、530、740、 750鏈接標(biāo)記
510起始標(biāo)記610優(yōu)先權(quán)標(biāo)記
具體實(shí)施例方式
圖1是依據(jù)本發(fā)明的一實(shí)施例的總線系統(tǒng)的操作方法的流程圖??偩€系統(tǒng)的操作 方法100包含下列步驟 步驟110 :依據(jù)至少一相依限制條件將使用該總線系統(tǒng)的多個(gè)指令鏈接成具有先 后順序的至少一相依鏈接; 步驟120 :依據(jù)每一相依鏈接對(duì)該些指令進(jìn)行該先后順序的處理;以及 步驟130 :依據(jù)相關(guān)鏈接標(biāo)記重設(shè)已執(zhí)行的指令所屬的相依鏈接。
總線系統(tǒng)的操作方法100將搭配以下各圖與各實(shí)施例詳細(xì)說明如下。 圖2是依據(jù)本發(fā)明的一實(shí)施例的存儲(chǔ)器調(diào)度器的方塊圖。存儲(chǔ)器調(diào)度器200包含
指令暫存器(request queue) 210、相依鏈接產(chǎn)生器220、指令選擇器230以及鏈接關(guān)系移除器240。其中,相依鏈接產(chǎn)生器220是耦接至指令暫存器210,指令選擇器230是耦接至指令暫存器210,而鏈接關(guān)系移除器240是耦接至指令暫存器210與指令選擇器230。存儲(chǔ)器調(diào)度器200是耦接至非依序執(zhí)行總線(未顯示于圖2),依據(jù)至少一相依限制條件將使用該總線系統(tǒng)的多個(gè)指令彼此鏈接成具有先后順序的至少一個(gè)相依鏈接,再依據(jù)各相依鏈接選出有資格被執(zhí)行(serve)的指令,以使得可依據(jù)該先后順序?qū)υ撔┲噶钸M(jìn)行處理。
總線上的指令是非依序地被傳遞,為了避免發(fā)生數(shù)據(jù)危障等錯(cuò)誤,一些有相依性(d印endency)的指令應(yīng)依序地被執(zhí)行,而各指令彼此之間是否有相依性,得從各指令的線程識(shí)別碼(thread ID)、存儲(chǔ)器頁(yè)碼(memory pagenumber)等消息來判斷。例如,根據(jù)總線協(xié)議(bus protocol),具有相同線程識(shí)別碼(例如線程識(shí)別碼均為0)的各指令具有相依性,又如存取同一存儲(chǔ)器頁(yè)碼的各指令間亦有相依性,此規(guī)定可避免數(shù)據(jù)危障的發(fā)生。因此,得以根據(jù)線程識(shí)別碼或存儲(chǔ)器頁(yè)碼作為相依限制條件以建立相依鏈接,請(qǐng)注意到,上述僅作為范例說明之用,而本領(lǐng)域技術(shù)人員當(dāng)?shù)靡圆捎闷渌嘁老拗茥l件以判斷各指令間的相依性。 指令暫存器210自總線上接收并儲(chǔ)存指令R。圖3是顯示利用單一相依限制條件所建立的相依指令鏈接中一指令的結(jié)構(gòu)。儲(chǔ)存在指令暫存器210的指令300具有多個(gè)字段,分別用以記錄末端標(biāo)記310、指令內(nèi)容320與鏈接標(biāo)記330,請(qǐng)注意到圖3所示的指令300的各字段順序僅為說明之用,不應(yīng)視為本發(fā)明的限制。末端標(biāo)記310用以說明該指令是否為所屬相依鏈接的末端,指令內(nèi)容320儲(chǔ)存該指令欲執(zhí)行的內(nèi)容,鏈接標(biāo)記330用以指示該指令與儲(chǔ)存在指令暫存器210的多個(gè)先前尚未執(zhí)行的指令之間的依先后順序的鏈接關(guān)系,在一實(shí)施例中,當(dāng)鏈接標(biāo)記330顯示指令300與其它指令皆無鏈接關(guān)系時(shí),則指令300是至少一相依鏈接的起始端。 圖4是說明存儲(chǔ)器調(diào)度器200在不同時(shí)間接收到的各指令之間的鏈接關(guān)系。假設(shè)在時(shí)間T5時(shí),指令暫存器210中已經(jīng)儲(chǔ)存了線程識(shí)別碼為0且分別在時(shí)間T0、T1、T3收到的指令R0 (0) 、 Rl (0) 、 R3 (0),以及儲(chǔ)存了線程識(shí)別碼為1且分別在時(shí)間T2、 T4收到的指令R2 (1) 、 R4 (1),其中指令R0 (0)的鏈接標(biāo)記是說明其并不向前鏈接至任何指令,換言之,其為線程識(shí)別碼為0的相依鏈接(簡(jiǎn)稱為第一鏈接)的起始端,R1(0)的鏈接標(biāo)記是說明其是鏈接在指令R0(0)之后,R3(0)的鏈接標(biāo)記是說明其是鏈接在指令Rl(O)之后,而R3(0)的末端標(biāo)記是說明其是其為第一鏈接的末端;此外,指令R2(1)的鏈接標(biāo)記是說明其并不向前鏈接至任何指令,亦即,其為線程識(shí)別碼為1的相依鏈接(簡(jiǎn)稱為第二鏈接)的起始端,R4(1)的鏈接標(biāo)記是說明其是鏈接在指令R2(1)之后,而R2(1)的末端標(biāo)記是說明其是其為第二鏈接的末端。在時(shí)間T5時(shí),存儲(chǔ)器調(diào)度器200又接收到線程識(shí)別碼為0的新進(jìn)指令R5,并將其儲(chǔ)存在指令暫存器210之中。依據(jù)相依限制條件(如線程識(shí)別碼0、1),相依鏈接產(chǎn)生器220尋找線程識(shí)別碼為0的鏈接的末端,即指令R3 (0),使新進(jìn)指令R5鏈接于第一鏈接的末端,設(shè)定指令R5的鏈接標(biāo)記為鏈接至指令R3 (0)(如步驟110),并設(shè)定其末端標(biāo)記為第一鏈接的末端,且更改指令R3(0)的末端標(biāo)記使其不再為第一鏈接的末端。請(qǐng)注意到,若指令R5的線程識(shí)別碼為l,則相依鏈接產(chǎn)生器220以類似于上述的方法將其鏈接至第二鏈接的末端;若指令暫存器210中并無任何指令與指令R5的線程識(shí)別碼相同,即新進(jìn)指令R5不符任一相依限制條件時(shí),相依鏈接產(chǎn)生器220設(shè)定指令R5的鏈接標(biāo)記使其成為新建鏈接的起始端,并設(shè)定指令R5的末端標(biāo)記使其同時(shí)成為新建鏈接的末端。
至于執(zhí)行指令方面,指令選擇器230依據(jù)儲(chǔ)存在指令暫存器210中尚未被執(zhí)行的各指令與相應(yīng)的相依鏈接選出有資格被執(zhí)行的指令,指令選擇器230必須從各個(gè)鏈接的起始指令當(dāng)中,挑選出一個(gè)予以執(zhí)行,如指令R0 (0),指令選擇器230輸出有資格被執(zhí)行的指令RO(O),代表指令RO(O)已得以被執(zhí)行(如步驟120),而鏈接關(guān)系移除器240則依據(jù)各指令的鏈接標(biāo)記尋找鏈接至指令RO(O)的指令Rl(O),如指令Rl(O)的鏈接標(biāo)記是指出其是鏈接在指令R(O)之后,則鏈接關(guān)系移除器240移除指令R1(0)并重設(shè)指令Rl(O)的鏈接標(biāo)記,使其取代指令選擇器230已執(zhí)行的指令RO(O)而遞補(bǔ)成為第一鏈接的起始指令(如步驟130)。當(dāng)指令選擇器230再次挑選得被執(zhí)行的指令時(shí),則指令選擇器230得依據(jù)指令Rl(O)的鏈接標(biāo)記將指令Rl (0)選為得被執(zhí)行的指令,并輸出指令Rl(O)以供執(zhí)行。
圖5是顯示利用單一相依限制條件所建立的相依指令鏈接中一指令的另一結(jié)構(gòu)。儲(chǔ)存在指令暫存器210的指令500具有多個(gè)字段,分別記錄起始標(biāo)記510、指令內(nèi)容520與鏈接標(biāo)記530,請(qǐng)注意到,圖5所示的指令500的各字段順序僅為說明之用,不應(yīng)視為本發(fā)明的限制。起始標(biāo)記510是用以說明該指令是否為相依鏈接的起始指令,指令內(nèi)容520則儲(chǔ)存該指令欲執(zhí)行的內(nèi)容,而鏈接標(biāo)記530是用以指示該指令與儲(chǔ)存在指令暫存器210的其它指令的鏈接關(guān)系,例如總線系統(tǒng)中有第一指令與第二指令,而該第一指令的鏈接標(biāo)記是指出該第一指令是鏈接在該第二指令之前。本領(lǐng)域技術(shù)人員當(dāng)可在前述指令300的相依鏈接建立與選擇執(zhí)行指令的相關(guān)說明的教導(dǎo)之下,以指令500形式的指令進(jìn)行相依鏈接建立與選擇執(zhí)行指令,因此為求簡(jiǎn)潔起見,于此將不再贅述。 圖6是顯示利用單一相依限制條件所建立的相依指令鏈接中一指令的又另一結(jié)構(gòu)。儲(chǔ)存在指令暫存器210的指令600具有多個(gè)字段,分別記錄優(yōu)先權(quán)標(biāo)記610與指令內(nèi)容620,請(qǐng)注意到圖6所示的指令600的各字段順序僅為說明之用,不應(yīng)視為本發(fā)明的限制。優(yōu)先權(quán)標(biāo)記610是用以說明該指令在所屬的任一相依鏈接中的該先后順序,而指令內(nèi)容620為該指令欲執(zhí)行的內(nèi)容。本領(lǐng)域技術(shù)人員當(dāng)可在前述指令300的相依鏈接建立與選擇執(zhí)行指令的相關(guān)說明的教導(dǎo)之下,以具有指令600形式的指令進(jìn)行相依鏈接建立與選擇執(zhí)行指令,因此為求簡(jiǎn)潔起見,于此將不再贅述。 除了使用單一個(gè)相依限制條件建立使用總線系統(tǒng)的各指令間的相依性之外,亦可
使用多個(gè)相依限制條件來建立相依性,例如一并依據(jù)線程識(shí)別碼與存儲(chǔ)器頁(yè)碼來建立相依性。圖7是顯示利用兩個(gè)相依限制條件所建立的相依指令鏈接中各指令的結(jié)構(gòu)。儲(chǔ)存在指令暫存器210的指令700具有多個(gè)字段,分別記錄第一末端標(biāo)記710、第二末端標(biāo)記720、指令內(nèi)容730、第一鏈接標(biāo)記740與第二鏈接標(biāo)記750,請(qǐng)注意到,圖7所示的指令700的各字段順序僅為說明之用,不應(yīng)視為本發(fā)明的限制。第一末端標(biāo)記710是用以說明該指令是否為依據(jù)第一相依限制條件(例如線程識(shí)別碼)而建立的第一相依鏈接的第一末端指令,第二末端標(biāo)記720是用以說明該指令是否為依據(jù)第二相依限制條件(例如存儲(chǔ)器頁(yè)碼)而建立的第二相依鏈接的第二末端指令,指令內(nèi)容730是儲(chǔ)存該指令欲執(zhí)行的內(nèi)容,第一鏈接標(biāo)記740是用以說明該指令與儲(chǔ)存在指令暫存器210的其它指令的在第一相依限制條件方面的鏈接關(guān)系,以及第二鏈接標(biāo)記750是用以說明該指令與儲(chǔ)存在指令暫存器210的其它指令的在第二相依限制條件方面的鏈接關(guān)系。 圖8是說明存儲(chǔ)器調(diào)度器200在不同時(shí)間接收到的各指令之間的鏈接關(guān)系。假設(shè)在時(shí)間T3時(shí),指令暫存器210中已經(jīng)儲(chǔ)存了分別在時(shí)間TO、 Tl、 T2收到的指令RO(O)PO、R1(0)P1、R2(1)P0。指令R0(0)P0、R1(0)P1的線程識(shí)別碼為0,指令RO (0) P1、R2 (1) Pl的存 儲(chǔ)器頁(yè)碼為0,而指令Rl (O)Pl的存儲(chǔ)器頁(yè)碼為1,其中指令RO (O)PO的第一鏈接標(biāo)記是說 明其先前并無鏈接任何線程識(shí)別碼為0的指令,故其為線程識(shí)別碼為0的相依鏈接(簡(jiǎn)稱 為第一鏈接)的起始指令,而指令RO(O)PO的第二鏈接標(biāo)記說明其先前并無鏈接任何存儲(chǔ) 器頁(yè)碼為0的指令,其為存儲(chǔ)器頁(yè)碼為0的相依鏈接(簡(jiǎn)稱為第二鏈接)的起始指令。
指令R1(0)P1的第一鏈接標(biāo)記指出,在線程識(shí)別碼的相依限制條件方面,其是鏈 接在指令R0(0)P0之后,而指令R1(0)P1的第一末端標(biāo)記說明其亦為第一鏈接的末端指令; 而指令R1(0)P1的第二鏈接標(biāo)記指出,在存儲(chǔ)器頁(yè)碼的相依限制條件方面,其先前并無鏈 接任何存儲(chǔ)器頁(yè)碼為1的指令,其為存儲(chǔ)器頁(yè)碼為1的相依鏈接(簡(jiǎn)稱為第三鏈接)的起 始指令,而指令R1(0)P1的第二末端標(biāo)記說明其亦為第三鏈接的末端指令。
指令R2(1)P0的第一鏈接標(biāo)記是說明其先前并無鏈接任何線程識(shí)別碼為1的指 令,故其為線程識(shí)別碼為1的相依鏈接(簡(jiǎn)稱為第四鏈接)的起始指令,而指令R2(1)P0的 第一末端標(biāo)記說明其亦為第四鏈接的末端指令。而指令R2(1)P0的第二鏈接標(biāo)記說明在存 儲(chǔ)器頁(yè)碼的相依限制條件方面,其是鏈接在指令RO (0)PO之后,而指令R2 (1)P2的第二末端 標(biāo)記說明其亦為第二鏈接的末端指令。 第一、二、三、四鏈接是相依鏈接產(chǎn)生器220依據(jù)新進(jìn)指令鏈接標(biāo)記的相依限制條 件所產(chǎn)生的四個(gè)相依鏈接,請(qǐng)注意到,相依鏈接產(chǎn)生器220得依據(jù)新進(jìn)指令N個(gè)鏈接標(biāo)記的 相依限制條件產(chǎn)生N個(gè)相依鏈接,且N為任意正整數(shù),而相依鏈接產(chǎn)生器220更得依據(jù)該新 進(jìn)指令所包括的N個(gè)末端標(biāo)記來表示該新進(jìn)指令為該N個(gè)相依鏈接的末端指令,以下將以 新進(jìn)指令詳細(xì)說明之。 在時(shí)間T3時(shí),存儲(chǔ)器調(diào)度器200又接收到線程識(shí)別碼為0且存儲(chǔ)器頁(yè)碼為0的指 令R3(0)P0,并將其儲(chǔ)存在指令暫存器210之中。依據(jù)各相依限制條件(如線程識(shí)別碼0、 1),相依鏈接產(chǎn)生器220尋找線程識(shí)別碼為0的鏈接的末端指令,即指令Rl (0) Pl,使新進(jìn)指 令R3 (0) P0鏈接于第一鏈接的末端,設(shè)定指令R3 (0) P0的第一鏈接標(biāo)記為鏈接至指令Rl (0) Pl,并設(shè)定其第一末端標(biāo)記為第一鏈接的末端指令,且更改指令Rl (O)Pl的第一末端標(biāo)記 使其不再為第一鏈接的末端指令。依據(jù)各相依限制條件(如存儲(chǔ)器頁(yè)碼0、1),相依鏈接產(chǎn) 生器220尋找存儲(chǔ)器頁(yè)碼為0的鏈接的末端指令,即指令R2(1)P0,使新進(jìn)指令R3(0)P0鏈 接于第二鏈接的末端,設(shè)定指令R3 (0) P0第二鏈接標(biāo)記為鏈接至指令R2 (1) P0,并設(shè)定其第 二末端標(biāo)記為第二鏈接的末端指令,且更改指令R2(1)P2的第二末端標(biāo)記使其不再為第二 鏈接的末端指令。 請(qǐng)注意到,若指令暫存器210中并無任何指令與新進(jìn)指令的線程識(shí)別碼相同,即 該新進(jìn)指令不符任一相依限制條件時(shí),則相依鏈接產(chǎn)生器220設(shè)定新進(jìn)指令的第一鏈接標(biāo) 記以使其在線程識(shí)別碼的相依限制條件方面成為新建鏈接的起始端,并設(shè)定新進(jìn)指令的第 一末端標(biāo)記以使其成為該新建鏈接的末端;若指令暫存器210中并無任何指令與新進(jìn)指令 的存儲(chǔ)器頁(yè)碼相同,則相依鏈接產(chǎn)生器220設(shè)定新進(jìn)指令的第二鏈接標(biāo)記使其在存儲(chǔ)器頁(yè) 碼的相依限制條件方面成為新建鏈接的起始端,并設(shè)定新進(jìn)指令的第二末端標(biāo)記使其成為 該新建鏈接的末端。 至于執(zhí)行指令方面,指令選擇器230依據(jù)儲(chǔ)存在指令暫存器210中尚未被執(zhí)行的 各指令與多個(gè)相依鏈接選出有資格被執(zhí)行的指令,指令選擇器230判讀多個(gè)(如N個(gè))相依鏈接所包含的N個(gè)鏈接標(biāo)記,根據(jù)所屬的鏈接標(biāo)記判斷該指令是否為起始指令,并找出N 個(gè)相依鏈接起始端的M個(gè)起始指令,并挑選出其中之一予以執(zhí)行,其中M個(gè)起始指令皆至少 包含一鏈接標(biāo)記表示其為已可被執(zhí)行的起始指令,且M、 N為正整數(shù),M小于N。例如,指令 R0(0)P0在各相依限制條件方面(線程識(shí)別碼與存儲(chǔ)器頁(yè)碼)的鏈接標(biāo)記均指出其為起始 指令,則指令R0 (0)P0即為有資格被執(zhí)行的指令,而指令Rl (0)Pl在存儲(chǔ)器頁(yè)碼方面則為起 始指令,但是在線程識(shí)別碼方面并非是起始指令,故指令Rl (0)Pl不是有資格被執(zhí)行的指 令。在另一實(shí)施例中,若指令R1(0)P1在各相依限制條件方面的鏈接標(biāo)記有多數(shù)指出其為 起始指令,則指令R0 (0)P0亦為有資格被執(zhí)行的指令。在又一實(shí)施例中,若指令Rl (0)Pl在 各相依限制條件方面的鏈接標(biāo)記至少一個(gè)鏈接標(biāo)記指出其為起始指令,則指令R0(0)P0亦 為有資格被執(zhí)行的指令。假設(shè)指令選擇器230輸出有資格被執(zhí)行的指令R0 (0)P0,而鏈接關(guān) 系移除器240則依據(jù)各指令的各鏈接標(biāo)記尋找在各相依限制條件方面鏈接在指令R0(0)P0 后的指令,在線程識(shí)別碼方面,指令Rl (0)Pl的第一鏈接標(biāo)記是指出其是鏈接在指令R0 (0) P0之后,鏈接關(guān)系移除器240重設(shè)指令Rl (O)Pl的第一鏈接標(biāo)記,使其取代已執(zhí)行的指令 R0(0)P0成為第一鏈接的起始指令;在存儲(chǔ)器頁(yè)碼方面,指令R2(1)P0的第二鏈接標(biāo)記是指 出其是鏈接在指令RO (0) PO之后,鏈接關(guān)系移除器240重設(shè)指令R2 (1) PO的第二鏈接標(biāo)記, 使其取代已執(zhí)行的指令RO(O)PO成為第二鏈接的起始指令。 此外,指令700得具有類似于指令500的形式,即具有對(duì)應(yīng)多個(gè)相依限制條件的多 個(gè)起始標(biāo)記以及對(duì)應(yīng)多個(gè)相依限制條件的多個(gè)鏈接標(biāo)記,而其中的鏈接標(biāo)記是說明該指令 是鏈接在哪些指令之前,本領(lǐng)域技術(shù)人員當(dāng)可在前述實(shí)施例的教導(dǎo)之下,輕易地了解此種 形式的指令要如何建立相依鏈接與執(zhí)行,因此為求簡(jiǎn)潔起見,于此將不再贅述。
再者,指令700得具有類似于指令600的形式,即具有對(duì)應(yīng)多個(gè)相依限制條件的多 個(gè)優(yōu)先權(quán)標(biāo)記,而其中的優(yōu)先權(quán)標(biāo)記是說明該指令在各相依限制條件方面所建立的相依鏈 接中的先后順序,本領(lǐng)域技術(shù)人員當(dāng)可在前述實(shí)施例的教導(dǎo)之下,輕易地了解此種形式的 指令要如何建立相依鏈接與執(zhí)行,因此為求簡(jiǎn)潔起見,于此將不再贅述。
要在多線程且非依序執(zhí)行的總線上進(jìn)行傳輸對(duì)齊(transfer alignment)也是一 項(xiàng)很困難的工作,然而,若欲對(duì)總線上傳輸?shù)臄?shù)據(jù)進(jìn)行除錯(cuò)追蹤(debugtracing),又非得進(jìn) 行傳輸對(duì)齊不可。本發(fā)明的一實(shí)施例是利用建立指令間相依性的技術(shù)來對(duì)總線上傳輸?shù)?數(shù)據(jù)進(jìn)行除錯(cuò)追蹤。圖9是依據(jù)本發(fā)明的一實(shí)施例對(duì)總線上傳輸?shù)臄?shù)據(jù)進(jìn)行除錯(cuò)追蹤的 示意圖。如圖所示,總線具有指令通道(command channel)CC、寫入數(shù)據(jù)通道(write data channel)WC與響應(yīng)通道(response channel) DC。在指令通道CC上,從時(shí)間TO到T5分別出 現(xiàn)了指令R0到R5,其中指令R0(0)、R5(0)的線程識(shí)別碼均為0,指令R1 (1) 、R2 (1) 、R4 (1)的 線程識(shí)別碼均為1,以及指令R3(2)的線程識(shí)別碼為2。線程識(shí)別碼相同的指令必須依序執(zhí) 行,因而將線程識(shí)別碼作為相依限制條件,在時(shí)間T2時(shí),除錯(cuò)追蹤模塊(未顯示于圖9)發(fā) 現(xiàn)總線上的指令R2(1)與指令Rl(l)有相同的線程識(shí)別碼,故在其指令暫存器(未顯示于 圖9)中設(shè)定指令R2(1)的鏈接標(biāo)記以說明其是鏈接至指令R1(1),設(shè)定R2(1)的末端標(biāo)記 以說明其是線程識(shí)別碼為1的相依鏈接(簡(jiǎn)稱為第一鏈接)的末端指令,并重設(shè)指令Rl(l) 的末端標(biāo)記以說明其不再是第一鏈接的末端指令;在時(shí)間T4時(shí),除錯(cuò)追蹤模塊發(fā)現(xiàn)總線上 的指令R4(1)與指令R1(1)、指令R2(1)的線程識(shí)別碼均為l,便根據(jù)上述的類似操作來使 指令R4(1)成為第一鏈接的末端指令,并修改第一鏈接的鏈接關(guān)系。
在時(shí)間T5時(shí),響應(yīng)通道DC出現(xiàn)一筆響應(yīng)數(shù)據(jù)Dl (1),其線程識(shí)別碼為1,且總線 中未完成(outstanding)的指令Rl (1)、指令R2 (1)、指令R4 (1)的線程識(shí)別碼均為l,而依 據(jù)前述關(guān)于利用末端標(biāo)記與鏈接標(biāo)記的方法得以判定出這三個(gè)指令中只得執(zhí)行起始指令 Rl(l),因此可以判定指令Rl(l)與響應(yīng)數(shù)據(jù)Dl(l)為同一筆交易,故通過上述方法即可完 成追蹤并記錄總線的數(shù)據(jù)交易。請(qǐng)注意到,本領(lǐng)域技術(shù)人員當(dāng)可在前述各實(shí)施例的教導(dǎo)下, 利用多個(gè)相依限制條件對(duì)總線進(jìn)行除錯(cuò)追蹤,或者利用有關(guān)起始標(biāo)記、鏈接標(biāo)記、優(yōu)先權(quán)標(biāo) 記等方法對(duì)總線進(jìn)行除錯(cuò)追蹤,于此不再贅述。 綜上所述,本發(fā)明的實(shí)施例提供了利用至少一相依限制條件在非依序執(zhí)行的多線 程總線系統(tǒng)中建立各指令間相依性的方法,從而在對(duì)各指令進(jìn)行相關(guān)處理時(shí),得以依據(jù)各 指令間的相依性進(jìn)行,以減少數(shù)據(jù)危障發(fā)生的機(jī)率。 以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明權(quán)利要求范圍所做的均等變化與 修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
一種總線系統(tǒng)的操作方法,包含有依據(jù)至少一相依限制條件將使用該總線系統(tǒng)的多個(gè)指令鏈接成具有先后順序的至少一相依鏈接;以及依據(jù)每一相依鏈接對(duì)該些指令進(jìn)行該先后順序的處理。
2. 根據(jù)權(quán)利要求1所述的方法,還包括依據(jù)每一相依限制條件,使新進(jìn)指令鏈接于至少一相依鏈接的末端,或在該新進(jìn)指令 不符任一相依限制條件時(shí),將該新進(jìn)指令設(shè)定為第一相依鏈接的起始端,而該新進(jìn)指令亦 同時(shí)為該第一相依鏈接的末端。
3. 根據(jù)權(quán)利要求1所述的方法,其中該些指令各自至少包含一標(biāo)記,用以代表每一指 令是否為所屬相依鏈接的末端。
4. 根據(jù)權(quán)利要求1所述的方法,其中該些指令各自至少包含一標(biāo)記,用以代表每一指 令與另一指令的鏈接關(guān)系。
5. 根據(jù)權(quán)利要求4所述的方法,其中當(dāng)該標(biāo)記顯示第一指令與其它指令皆無鏈接關(guān)系 時(shí),該第一指令則是至少一相依鏈接的起始端。
6. 根據(jù)權(quán)利要求1所述的方法,其中依據(jù)每一相依鏈接對(duì)該些指令進(jìn)行該先后順序的 處理,包括若第一指令為第一相依鏈接的起始指令,執(zhí)行該第一指令;以及重設(shè)該第一相依鏈接,使第二指令取代已執(zhí)行的該第一指令成為該第一相依鏈接的起 始指令。
7 根據(jù)權(quán)利要求6所述的方法,其中該第一指令至少包含一第一標(biāo)記,用以指出該第 一指令鏈接在該第二指令之前,或該第二指令至少包含一第二標(biāo)記,用以指出該第二指令 鏈接在該第一指令之后。
8. 根據(jù)權(quán)利要求1所述的方法,其中該些指令各自至少包含一標(biāo)記,用以代表每一指 令在所屬的任一相依鏈接中的該先后順序。
9. 根據(jù)權(quán)利要求3所述的方法,其中依據(jù)至少一相依限制條件將使用該總線系統(tǒng)的多 個(gè)指令鏈接成具有先后順序的至少一相依鏈接,包括尋找第一指令,其中該第一指令所包含的第一標(biāo)記表示該第一指令位于第一相依鏈接 的末端;將對(duì)應(yīng)于該第一相依鏈接的新進(jìn)指令鏈接至該第一指令之后; 設(shè)定該新進(jìn)指令的標(biāo)記為該第一相依鏈接的末端。
10. 根據(jù)權(quán)利要求7所述的方法,其中當(dāng)該第一標(biāo)記或該第二標(biāo)記表示該第一指令為 該第一相依鏈接的起始指令時(shí),執(zhí)行該第一指令。
11. 根據(jù)權(quán)利要求6所述的方法,還包括尋找表示該第一指令為該第一相依鏈接的起始指令的標(biāo)記。
12. 根據(jù)權(quán)利要求6所述的方法,還包括判讀多個(gè)相依鏈接所包含的多個(gè)標(biāo)記;以及 根據(jù)該些標(biāo)記判斷該第一指令是否執(zhí)行;其中,該些標(biāo)記是用以表示該第一指令是否為該些相依鏈接的起始指令,且該些相依 鏈接包括該第一相依鏈接。
13. 根據(jù)權(quán)利要求12所述的方法,其中若該些標(biāo)記均表示該第一指令為該第一相依鏈 接的起始指令,則執(zhí)行該第一指令。
14. 根據(jù)權(quán)利要求12所述的方法,其中若該些標(biāo)記多數(shù)表示該第一指令為該第一相依 鏈接的起始指令,則執(zhí)行該第一指令。
15. 根據(jù)權(quán)利要求1所述的方法,其中該相依限制條件包括線程識(shí)別碼、存儲(chǔ)器頁(yè)碼以 及數(shù)據(jù)危障等至少其中之一。
16. 根據(jù)權(quán)利要求1所述的方法,其中該總線系統(tǒng)依據(jù)該先后順序?qū)υ撔┲噶钸M(jìn)行存 儲(chǔ)器調(diào)度以及進(jìn)行除錯(cuò)追蹤等至少其中之一。
17. 根據(jù)權(quán)利要求1所述的方法,應(yīng)用于非依序執(zhí)行的總線系統(tǒng)。
18. —種總線系統(tǒng),包括指令暫存器,接收并暫存新進(jìn)指令,其中該新進(jìn)指令至少包括一鏈接標(biāo)記;以及 相依鏈接產(chǎn)生器,耦接至該指令暫存器,依據(jù)該新進(jìn)指令N個(gè)鏈接標(biāo)記的相依限制條件產(chǎn)生N個(gè)相依鏈接,且N為任意正整數(shù);其中,該新進(jìn)指令所包括的每一鏈接標(biāo)記皆是用以表示該新進(jìn)指令與多個(gè)先前尚未執(zhí)行的新進(jìn)指令之間的先后順序的鏈接關(guān)系。
19. 根據(jù)權(quán)利要求18所述的總線系統(tǒng),其中該相依鏈接產(chǎn)生器還依據(jù)該新進(jìn)指令所包 括的N個(gè)末端標(biāo)記來表示該新進(jìn)指令為該N個(gè)相依鏈接的末端指令。
20. 根據(jù)權(quán)利要求18所述的總線系統(tǒng),還包括指令選擇器,耦接至該指令暫存器,用以從該些尚未執(zhí)行的新進(jìn)指令中找出該N個(gè)相 依鏈接起始端的M個(gè)起始指令,并挑選出其中之一予以執(zhí)行,其中該M個(gè)起始指令皆至少包 括一鏈接標(biāo)記表示該M個(gè)起始指令已可執(zhí)行,且M為小于等于N的正整數(shù)。
21. 根據(jù)權(quán)利要求20所述的總線系統(tǒng),還包括鏈接關(guān)系移除器,耦接至該指令暫存器以及該指令選擇器,用以移除該指令選擇器所 執(zhí)行的第一起始指令,并依據(jù)該第一起始指令的相依限制條件遞補(bǔ)至少一新的起始指令。
22. 根據(jù)權(quán)利要求18所述的總線系統(tǒng),是非依序執(zhí)行的總線系統(tǒng)。
全文摘要
一種應(yīng)用于非依序執(zhí)行的總線系統(tǒng)的操作方法,包含有依據(jù)相依限制條件將使用總線系統(tǒng)的指令鏈接成具有先后順序的相依鏈接;以及依據(jù)各相依鏈接對(duì)該些指令進(jìn)行先后順序的處理。
文檔編號(hào)G06F13/28GK101739370SQ20081017482
公開日2010年6月16日 申請(qǐng)日期2008年11月5日 優(yōu)先權(quán)日2008年11月5日
發(fā)明者張育銘 申請(qǐng)人:瑞昱半導(dǎo)體股份有限公司