TWI364703B - Processor and early execution method of data load thereof - Google Patents
Processor and early execution method of data load thereof Download PDFInfo
- Publication number
- TWI364703B TWI364703B TW97119412A TW97119412A TWI364703B TW I364703 B TWI364703 B TW I364703B TW 97119412 A TW97119412 A TW 97119412A TW 97119412 A TW97119412 A TW 97119412A TW I364703 B TWI364703 B TW I364703B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- early
- data
- processor
- queue
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 21
- 238000011068 loading method Methods 0.000 claims description 50
- 230000036316 preload Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 8
- 239000000463 material Substances 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 claims description 2
- 238000004090 dissolution Methods 0.000 claims 1
- 238000007689 inspection Methods 0.000 claims 1
- 238000013461 design Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000013075 data extraction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002028 premature Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 102220011740 rs386833408 Human genes 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000013077 target material Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Advance Control (AREA)
Description
100-11-29 九、發明說明: 【發明所屬之技術領域】 本發明是有關於一種處理器,且特別是有關於一種管 線式(pipeline)處理器。 【先前技術】 圖1是說明傳統管線式處理器。圖1中傳統處理器僅 繪出管線(pipeline) 1〇〇。管線10〇具有指令提取級 (instruction fetch stage) 11〇、指令佇列(instruction queue) 120、指令解碼級(instructi〇n decode stage) 130、指令執行 級(instruction execution stage) 140、以及資料回寫級(data write-back stage) 150。在傳統的處理器設計中,指令提取 級110及指令解碼級130之間會用指令佇列丨2〇將兩個級 110與130隔開’藉此降低issue Rate及Fetch Rate不穩定 而造成處理器效能的損失。因此大部分指令在被提取(fetch) 進處理器後,並不會馬上進入指令解碼級13〇,它會先在 指令佇列120中等待一段時間。指令提取級n〇從指令快 取記憶體(或是從主記憶體中)提取指令,並將指令送入指 令佇列120中。指令佇列12〇以先進先出(first in fim 〇叫 FIFO)原則存放指令提取級i 10所提取的指令,並依序將指 令提供給指令解碼級130。 一般而言,處理器在執行指令前需要利用指令解碼級 130將「指令碼」進行解碼。完成解碼的指令會被傳送到 指令執行級140。指令執行級14〇包含有算數邏輯單元 (arithmetic and logic imit,ALU),可以依據指令解碼級 1364703 100-11-29 130的解碼結果而執行指令操作。若指令執行級14〇所執 行的指令操作會產生運算結果,則資料回寫級15〇負責將 此運算結果寫回資料快取記憶體(或是主記憶體)。 傳統的處理器設計中,資料載入-使用的延遲會隨著管 線洙度的增加而增加。載入_使用的延遲將嚴重影響到處理 器的效能。舉個例子來說,觀察以下的指令串: LOAD Rm, [mem_addr] ADD Rd, Rn, Rm 才曰令提取級110會依序從指令記憶體中提取上述L〇AD指 令與ADD指令,並且存入指令仔列12〇中。經由指令解 碼級130的解瑪操作後,指令執行級刚會先執行l〇ad 指令’也就是指令執行級14〇中的載入/儲存單元(未繪示) 會從資料快取記憶體(或是從主記憶體t mem—_位址處) 取出資料’然後將此資料存放在暫存器Rm卜這個資料 讀取動作將會在齡執行級14G完成。若指令執行級14〇 需要η個時脈才能完成上述L〇AD指令,這意味著下一個 指令(即ADD指令)必須等待n個時脈,直到在暫存器恤 的資枓備錢才能被執行。上料線丨⑻僅簡單地以四級 管,說明傳統管線式處理器的操作。當管線的深度(級數) 越深,則上述載入-使用的延遲將會越大。 【發明内容】 士:月提出#處理器之預载方法。此方法在指令提 Ϊ級並觸—齡,以獲得觸結果。依據判斷結 :、疋疋否在該指令進人指令執行級之前提早載入指令 6 100-11^29 對應之預载資料。若該預 令執行級執龍指令時預破正確地載人,則該指 該指令之目標資料。若預執倾依據該指令去提取 令執行級執行純令時m被正確地•,則該指 該目標資料。λ日7執仃級使用預載資料作為 '級、載包,指令提取級、指令解碼 取-指令,其,指令提取級用^ 提取級中預先靖,碼料’以便在指令 耦接至指人#7以獲得判斷結果。指令解碼級 祸接至才日4取級,用以解碼指令 令執行級墟至指令解$ 獲贿u d曰 沾果,争解碼早70,用以依據前述判斷 34Γ該指令進入該指令執行級之前提早載入 入,則該指令執行级nt ’若預載資料未被正確地載 去提取目::: !仃該指令時,指令執行級依據指令 去挺取目才承貝枓。若該預载資料已被 =則,行級執行該指令時,該指令= 用5亥預载貝料作為目標資料。 更 於-之:判斷結果表示該指令屬 狀_妥狀態,之物 載入仵列中。 對應之預載貝料载入至提早 佇列ΐίϊ:,::施例中,在指令解碼級檢查提早載人 貝枓疋否備安且合法。若提早載入符列中的資料 1364703 100-11-29 文且合法’則將該指令所指定的目的暫存器位址改為 該提早载入佇列中該預载資料的位址。 士本發明因利用指令被提取進入指令仵列中的等 =間’提早載人純令對應之預載㈣’因此可以解決 冰官線處理ϋ設計中’载人使舰遲過長的問題。 ▲為,本發明之上述特徵和優點能更明顯易懂,下文特 舉較佳貫施例’並配合所關式,作詳細說明如下。 【實施方式】 法。圖2是依照本發明實施例說明一種處理器之預載方法 OIL,圖。备私令提取級提取指令時,指令提取級會預先判 ,玄巧令’以獲得判斷結果(步驟S210)。依據判斷結果, 处理器可以決定是否提早載入該指令對應之預載資料(步 =/220)。若預載資料未被正確地載入,則指令執行級依 该指令去提取目標資料(步驟S23〇)。若預載資料已被正 地載入’則處理器便以預載資料作為目標料 S240)〇 本發明所屬領域具有通常知識者可以視其需求 ,以任 ^方式修改上述實施例。例如,目3A是依照本發明另一 把例说明處理器之預載方法流程圖。與前—實施例相 乂’本實她例在步驟S2i0與S22〇之間更進行判斷步驟(步 ,S310)。睛參照圖3A。於步驟s2i〇中’指令提取級會 处指令S己憶體(或指令快取)提取指令,並且預先判斷(或是 預先解碼)該指令。因此,在該指令進入指令佇列 1364703 100-11-29 (instruction queue)之前,步驟S210可以而提早分辨出該指 令需不需要從資料快取(或資料記憶體)提取資料。 依據步驟S210之判斷結果,步驟S310決定是否將所 述指令存進提早載入作列(early-load queue, ELQ)中。若是 所述指令不屬於目標類型(例如不需要從資料快取提取資 料)’則只將所述指令存進指令佇列(不需將所述指令存進 提早載入佇列)。因此,所述指令會經由指令解碼級 (instruction decode stage)' 指令執行級(instruction execution stage)而被執行(步驟S320)。當然,若所述指令雖然不屬於 目標類型,卻仍然需要從資料快取提取資料者,在步驟 S320中指令執行級便會依據所述指令而從資料快取提取 資料。 步驟S310亦可能依據判斷結果,決定將該指令放進 提早載入佇列與指令佇列中。若步驟S31〇將該指令放進 ,早载人糾,則倾_檢錢存器狀絲該指令所 指定的暫存器的狀H是否為備妥㈣,賴龍指令對庶 之預載減從資料快取載人至提早載人㈣中。因此, 亍級之前(在該指令還在指令仔列等待被執行 ^間=早贿早載人糾中執行該指令以載入對庫的 ,載貧料’ ^後將預載資料放進提早載人仔列中外, 列中的所述指令經過等待執行㈣間後,备 ,令’以獲得解碼結果。依據解碼結 存器狀態表,以判斷預載資料是否被正確地載人 9 1364703 100-11-29 件歹:中。若預餘料未被正祕仏,翻令執彳于級依據 該指令去資料快取提取目標資料(步驟S230)。若預載資料 已被正確地載人,賊理器便以預載資料作為目標資料(步 驟S240) ’因此指令執行級不需要花f額外的時間料 快取提取目標資料。 、 本發明所屬領域具有通常知識者可以依其需求,而於 上述實施例中以任何手段設置無效機制(invaiidati〇n mechamsm) ’以便預防上述提早載入操作存取到錯誤的資 料。例如’在齡解碼級若有第二齡(泛指任何指令)被 解碼’則在健n狀態表帽應於第二指令所指定目的暫 存器之狀態設為忙碌,以免其他指令存取相同暫存器。接 下來搜尋提早載入佇列之所有記錄。若提早载入佇列中有 -記錄指向第二指令所指定目的暫存器,赌該記錄設為 無效(不合法)。因此,可以避免發生資料相依(Data Dependency)錯誤。 又例如,在指令執行級若有第二指令(泛指任何指令) 將資料寫入記憶體某位址處,則搜尋提早载入佇列。若提 早載入仔列中有-記錄與第二指令所指定記憶體位址相 同,則將該記錄設為無效(不合法)。因此,可以避免發生 記憶體相依(Memory Dependency)錯誤。 於其他實施例中,在設置了無效機制的前提下,上述 步驟S24G更可以包括下述操作。在指令解碼級,檢查提 早載入仵列中的資料是否備妥且合法。若提早載入仔列中 1364703 100-11-29 的資料已備妥且合法,則將該指令所指定之目的暫存器位 址改為提早载入佇列中該預載資料的位址。 本發明所屬領域具有通常知識者可以搭配任何管線式 處理器之設計來實現上述實施例。例如,圖3B是依照本 發明實施例說明一種管線式處理器。圖3B所示的處理器 僅綠出管線(pipeline) 300。管線300具有指令提取級 (instruction fetch stage) 310、指令符列(instruction queue) 320、指令解碼級(instruction decode stage) 330、指令執行 級(instruction execution stage) 340、以及資料回寫級(data write-back stage) 350。指令提取級310及指令解碼級330 之間配置指令佇列320,藉此降低Issue Rate及Fetch Rate 不穩疋而造成處理器效能的損失。指令提取級31〇從指令 快取記憶體(或是從主記憶體中)提取指令。指令在被提取 (fetch)進處理器後,它會先在指令佇列32〇中等待一段時 間,才會進入指令解碼級33〇。指令仔歹n2〇以先進先出 (to ln first FIF0)原則存放指令提取級31〇所提取的 才曰令,並依序將指令提供給指令解碼級33〇。 =行指令前需要利用指令解碼級33〇將「指令碼」 進仃解碼,以獲得解碼結果。 =練跡齡經_=3=== 由指令執行級34〇執行該指令 解物作後 (例如LDR、LDRB轉資㈣=制"是1^議指令 指令執行級340中的狀/儲/^暫存11的指令類型),則 記憶體(或是從主記憶體)取出未緣示)會從資料快取 j’然後將此資料存放在 1364703 100-11-29 處理,内部的暫存器陣列(未繪示)中。指令執行級340更 包含异數邏輯單元(arithmetic and logic unit, ALU),可 以依據指令解碼級330的解碼結果而執行運算指令的操 作。若指令執行級340所執行的指令操作會產生運算結 果,則資料回寫級350負責將此運算結果寫回資料快取記 憶體(或是主記憶體)。 於本實施例中,指令提取級310包含提取單元311與 預解碼(pre-decoding)單元312。提取單元311從指令快取 記憶體(或是從主記憶體中)提取指令。預解碼單元312預 先判斷提取單元311所提取的指令,以獲得判斷結果。 官線300更具有提早載入佇列(early-load queue) 360。 對於指令流而言,提早載入佇列36〇可以是平行於指令佇 =M0的一個小型表格。提早載入佇列36〇耦接至預^石= ^元312。預解碼單元312依據其判斷結果,決定是否將 指令寫入提早載入佇列36〇。在另一實施例中,可以由提 2載入佇列360依據該判斷結果,而決定是否紀錄該指 令。在本實施例中,若該判斷結果表示提取單元311所^ 取的指令屬於目標類型(例如LDR、LDRB等將資料载入暫 存器的指令類型),則預解碼單元312會同時將指令寫入护 =仔列320與提早载入佇列360。反之,若該判斷結果夺 不提取單元311所提取的指令並不屬於目標類型,則預^ 碼單元312只會將指令寫入指令佇列32〇,而不寫入提早 12 1364703 100-11-29 依據預解碼單元312的判斷結果,處理器 預載資料抓取至提早二 =預载貝料未被正確地抓取至提早載入仔列36 級擔依據該指令去提取資料(在此稱為目標資 360目預載諸已被正確地⑽抓取至提早載入件列 理器以存放在提早載入仵列遍的預載資料作為 i ^ 咖指令為例’該指令尚在指令仔列320 次料^間令’處理器可以提早將LDR指令所指定位址的 貝科^在此稱為預载資料)抓取至提早載入俘列36〇中。因 2’^ldr指令進入指令執行級34〇時,便可以使用提早 曰仔歹〗360中的預載資料,而不用去資料快取記憶體(或 疋主記憶體)抓取目標資料。 上述提早載入資料的操作可以任何方式實現之。例 如’圖3B所示的實施例便是使用提早載入單元37〇來完 成提早载入資料的操作。提早載入佇列36〇保留 =所提供的指令,並要求提早載入單元別去提取目標 貧料。提早载入佇列360可以參照表1所示之資料結構實 現之於表1中,狀態欄位State[l:0]用來記錄提早載入仵 歹J 360中母一筆記錄(entryy指令的狀態,例如⑻表示無 效(i_id)、01表示忙綠(Busy)、1〇表示已備妥收吻)、 U表示使用中(using)。程式計數攔位pc[1:〇]用來記錄該 =錄/指令的程式計數器(program counter)内容,也就是該 指令的位址。暫存器資訊欄位Base—ID|^〇]與〇ffset[11:〇] 用來紀錄該指令欲儲存資料的目的暫存器位址(基底值與 13 100-11-29 偏移值)。攔位Adr一mode[l:0]用來紀錄該指令的定址模 式,例如前索引(pre-index)、後索引(post-index)、自動索引 (auto-index)等模式。記憶體位址攔位Adr[31:〇]用來紀錄該 才曰令欲載入 > 料的記憶體位址。預载資料搁位 Loaded_data[31:0]用來存放該指令透過提早载入單元37〇 所提取的預載資料。 指令提取級310中的預解碼單元312可以識別該指令 的類型,並且解碼出該指令的基底暫存器索引(base register index)、偏移值(〇ffset)、與定址模式。若該指令具有「哪+ 攸」之位址形式,則此指令會被放入提早載入仔列 360中,並且在提早載入佇列36〇中設定此指令之狀態為 「備妥」狀態。 — 至丄_^早載入佇列360之資料結構。 Stated〇ffsetrii;〇i ΓΑάτ ^π-η]
Adr[31 :〇1 Loaded data[3 Ί :01 ,早載入單元370耦接至提早載入佇列36〇。當提 元370閒置㈣時’提早載入符列360將會選擇最 ί被寄存於其⑽的齡,並瓶1令敎給提早载入 370執仃之。因此,在該指令(例如ldr ==之前(還在指令件列320中),由提早= 射指令,並且將該指令對應之預載資料放 妹早载人㈣的預载資料攔位Loaded—data中。 100-11-29 圖3B將提早載入單元37〇繪為處理器内部的一個專 用電路’⑽細實施範例容後詳述。然而,此範例僅以直 觀=式描述提早載人單元谓之實施方式,不應以此限制 ^實現態樣。例如’本發明所屬領域之技術人員可以利用 統^ 執行級340中的載入/儲存單元(未繪示)實現提早 載^單元370之功能’也就是將提早載入單元370與指令 執行及34G中的載人/儲存單元共用其硬體。在此實施例 中。,。提早載人單元37〇包含暫存器讀取單元371、位址產 生單兀372以及資料提取單元373。暫 36G中有無存放 =指令’然後從處理器内部的暫存器陣列(未繪示)中讀取 八基底暫存器資料,並將該指令傳遞給位址產生單元 =2。位址產生單元372負責依據該指令與其基底暫存器資 ;斗而產生?來提取純的位址。資料提取單元373便依據
St气生單元372所產生的位址’而提早去資料快取記憶 aa 體)載人資料’並且將預載 回 入佇列360。 ^ 指令解碼級330可以檢查提早載入仔列360中的資料 是否備女且合&。當該指令已經從指令仔列320送至指令 解碼級3扣,指令解碼級33G便去檢查提早載入仵列細 的紀錄狀態。若提早載人洲中的資料已備妥且合法 (vahd) ’則將該指令所指㈣目的地暫存器位址改為提早 載入^列则中該預載資料的位址。因此,該指令不再需 要去貧料快取t提取㈣,或者可以說指令執行級34〇不 15 1364703 100*11-29 需要再一次地執行該指令了。所以,接下爽 的地暫存器的指令就可以從提早載人仵列36〇J得= 料了。上述檢查提早載入㈣36〇的操作可以其他任二 式實現之。
於本實施例中,更配置輕接至指令解碼、級33〇的 益狀態表38G,时紀錄處理器内部所有暫存器的狀態。 其中,若指令提取級310的判斷結果表示該指令屬於^ :(例如皿指令或LDRB 之紀錄表示該指令所指定的暫存器之 態,則將該指令所欲提取的預載資料事先载人 仔列,中。暫存器狀態表刑可以參照表2所示之 2貫現之。於表2中’暫存器攔位紀錄處理器内部各個 位址。狀態攔位state[1寧來記錄各個暫存 狀態貝訊,例如00表示已備妥(Rea (Forwarding)、10表干爭玄π U1表不别饋 表不更名(Renammg)、U表示忙碌 ( ELQJm:〇m 暫存益被更名至提早载入佇列360中的位址。 資料結構。 --^--^ΙΓΓ^~~~~^3
Statefl:0]~~ R1 ----- R2 R3 R4 一 ----- EL〇 Π)Γ2:01 — - 檢責解碼該指令,並依據該解碼結果 否被正確地载3早,令所需的預載資料是 戰入&早狀糾中。最後,指令解碼級 1364703 100-11-29 330依據前述檢查與處理結果,將解碼後的該 指令執行級340。 7傳迗給
表3是說明以處理器說贼用上述預載方 程式段為例’各指令於管線中的處理時序表。表4=二 明以處理器沒有使用預載方法而執行與表3相_々^兄 各指令於官線巾的處理時序表。表中IF表示指^又’ 表示指令解碼,EXE表示執行指令,MEM表 j D 表示資料回^另外,虹表示發生「預載方法」 表3使指令於管線中的處代
各彳旨令騎射_ f
由表4可以看出,由於要等待指令「L〇ADr2, [r〇#〇]」 從資料快取將資料提取至暫存器r2,所以接下來的指令 「ADD r3, r3, r2」與「ADD rl, rl,#1」會被延遲數周期(如 表4中標示stall處)’直到指令rL〇AD r2, [r〇 #〇]」完成 17 1364703 100-11-29 育料提取之操作(表4令標示MEM處卜如表3所示,使 =了上述實施例之預載方法,指令「L〇ADr2, [r〇#〇]」在 指令解碼階段ID便已經透過提早載入單元370從資料快 取將預載資料提取至提早载入仔列Mo中,使得此指令資 料提取操作MEM中不需要再一次去資料快取提取資料。 ,此,接下來的指令「仙叫心2」可以不用等待,而 2成指令解碼齡仍後緊接著進行指令執行操作 二报明顯地’上述實施例利用指令被提取(fetch)進入 列中的f待時間’提早載人該指令對應之預載資 顳’=解決管線處理器設計中’载入-使用延遲過長的問 t以線㈣度(缝)魏,社咖财法對於改善 载入-使用延遲」的效果將會越明顯。 為^確疋該才日7所而的預載資料是否被正確地載入提 制,f 例的處理器可以進行無效機 入的貝料疋否正確。若指令解碼級330解 為忙綠。例 声彻由好π ㈣存盗為112,則將暫存器狀態 ㈣狀心予的狀態搁位State[1:0]設為厂11」(表示 „) ’以免其他指令存取暫存器R2。接下來,處理 器搜尋提早载入佇列360之所有— 尹有記錄(不同於第,人^有5己錄4早载入仔列360 P曰^^弟一心令的其他指令)指向該第二指令所 R2),則處理器將提早載入仔 (吻4表1)令該記錄/指令的狀態欄位staten:_ 18 1364703 100-11-29 為「00」(表示無效狀態)。因此,可以避免發生資料相依 (Data Dependency)錯誤。 另外,若在指令執行級340有第二指令(泛指任何指令) 要將資料寫入資料快取或記憶體某位址處,則處理器搜尋 提早載入佇列360。若搜尋結果顯示提早載入佇.列%〇中 有a己錄/指令與第二指令要寫入的記憶體位址相同,則處理 器將提早載入佇列3 60中該記錄/指令的狀態攔位State[ J: 〇] 6又為「00」(表示無效狀態)。因此,可以避免發生記憶體 相依(Memory Dependency)錯誤。 综上所述,本實施例中採用的機制分為兩個部份:提 早載入手段(Early Load Policy)及無效手段(Invalidati〇n
Policy)。提早載入手段是將資料從快取記憶體提早搬到提 早載入佇列360中。以下簡要說明提早載入手段的動作: 1、 在指令被放進指令仵列320前,先預先解碼 (Pre-decode)該指令,若符合提早載入條件(例如: 3亥指令是LDR、LDRB等,而其定址模式為
Immediate (pre(P〇st)-indexed) 〇ffset),並且其基底 暫存裔(Base Register)在暫存器狀態表38〇中狀態 為備妥(Ready) ’則將指令放入提早載入佇列36〇 中’然後經由提早載入單A 37〇至,j快取或是記憶 體中提前將資料載入到提早載入佇列36〇中。 2、 當該指令到達指令解碼級33〇,檢查提早載入佇列 360中的資料是否完成且合法。若是,則將該指令 19 1364703 100-11-29 之目的暫存器(Destination Register)更名(Rename) 到提早載入佇列360中對應的紀錄(Entry)或位址。 讓載入(Load)指令在指令提取級310提前到快取或記 憶體抓取資料可能會發生的錯誤有兩種情形,一種是資料 相依(Data Dependency)錯誤,一種是記憶體相依(Mem〇ry Dependency)錯誤。前者發生在因有其他指令正在運算基底 暫存器的值,使得進行「提早载入」的指令可能會取到基 底暫存器的舊值而去做記憶體存取,此時我們會到錯誤的 位址抓取到錯誤的資料。後者發生在進行「提早載入」的 指令與另一道儲存(Store)指令會存取到相同的記憶^位 址所以進行「知:早載入」的指令所抓到的資料可能是未 被更新過的◎無效手段(Invalidati〇n p〇licy)則是用來檢查載 入的資料是否正確。在無效手段中我們會檢查這兩種^形 的發生。若產生這些情泥’我們會提早將提早载入仔列細 中的對應紀錄/指令設定為無效/不合法(Invalid)。當指 行級340真正執行到該指令時,會重新從快取或是 中抓取正確㈣。以下簡要綱無效手段的動作:心… Case 1 :檢查基底暫存器是否合法: 當任一道指令通過指令解碼級33〇時, ,術子,表38"的狀態攔位設為目 作Hi搜哥提早載入仔列360 _是否有指令用龙合 =广:暫存器。若有,則將此提早載入仵 對: 紀錄(Entry)的狀態欄位設為無效/不合法。 域
Case 2 .檢查记憶體位址恤_^趣職)是否合法: 20 1364703 100-11-29 當-道儲存(St〇re)指令在指令執行級34〇產生記憶 體位址,則搜尋提早載入狩列36〇巾是否存在相同的記 憶體位址’若有,則將此提早载入仵列360中對應紀錄 的狀癌攔位設為無效/不合法。 綜上所述,本實施例設計了提早載入(£吻L〇ad)的機 ^,利用指令在指令㈣中等待的時間,提早將#料從快 取或兄憶Μ到處理H内的-個提早載人彳宁列巾,並且提 出-個有效的方法,檢麵抓取的:#料是否正確。如此, 若是管線300成功地將㈣預先載人到提早載人符列内, 那載入-使用所造成的延遲將可以有效地被減少。反之,若 提早載入㈣失敗時’也不影響處理器縣的效能。 ^本發明已啸佳實關财如上,財並非用以 限疋本發明,任何所屬技術領域中具有通常知識者,在 :離,月之精神和範圍内,當可作些許之更動與潤部, =本發明之賴朗#視_之巾料鄉_界定者 【圖式簡單說明】 圖1是說明傳統管線式處理器。 2是紐本發明實關制―爾理11之預载方法 流柱圖。 圖3Α疋依照本發明另一實施例說明處理器之預载方 法流程圖。 圖3Β是依照本發明實施例說明一種管線式處理 【主要元件符號說明】 ° 21 1364703 100-11-29 100、300 :管線 110、310 :指令提取級 120、320 :指令佇列 130、330 :指令解碼級 140、340 :指令執行級 150、350 :資料回寫級 311 :提取單元 312 :預解碼單元 360 :提早載入佇列 370 :提早載入單元 371 :暫存器讀取單元 372 :位址產生單元 373 :資料提取單元 380 :暫存器狀態表 S210〜S240、S310〜S320 :處理器預載方法之步驟 22
Claims (1)
1364703 1〇0-11·29 10°年丨丨月4曰修正本 十、申請專利範圍: 1. 一種處理器之預載方法,包括: =t在一指令提取級提取一指令,以供一指令執行級執疒 該指令; 在該指令提取級判斷該指令,以獲得一判斷結果; 依據該判斷結果,決定是否在該指令進入該指令 級之前提早载入該指令對應之一預載資料; 仃 若該預载資料未被正確地載入,則該指令執行級 該指令時’該齡執行級依職指令錢取該指 二 資料;以及 目“ 若該預載資料已被正確地載入,則該指令執行級 該指令時,該齡執行級使用該預載資料作為 仃 標資料。 如7之目 2. 如申請專利範圍第1項所述處理器之預载方法, 包括: / ’更 依據該判斷結果,決定是否將該指令放 仔列中; 徒早载入 在該指令執行級之前,執行該齡以欽 之該預載資料;以及 日7對應 將該預載資料放進該提早載入佇列中。 3. 如申請專利範圍第2項所述處理器之預 中該提早載入佇列包括一狀態欄位、一程式計法,其 暫存器資訊欄位、一記憶體位址欄位、以及一莽位、一 位。 預载資料欄 23 100-11-29 包括如申。月專利範圍第3項所述處理器之預戴方法’更 以及7解顺’解碼減令’以獲得-解竭結果; 葡次^據該解韻果,檢查-暫存器狀離丰 地飲雛早狀叫斷該預 中該暫存器;態1=第_處理器之預载方法,其 位址攔位。 狀悲謝H提早载入仵列 包括6:·如中請專利範圍第4項所述處理器之預載方法,更 器狀態Άΐ::第若有-第二指令被解碼,在該暫存 為忙碌;鴻於該第二指令所指定的目的暫存器狀態設 =^提早載人仲列之所有記錄;以及 的目記錄指向該第二指令所指定 $⑽該讀設為無效。 包括:θ專利|&圍第4項所述處理器之預載方法,更 在該指令執行級,若有 體位”搜尋該提早狀讀寫入一記憶 則將該記列中有-記錄與該記憶體位址相同, 24 100-11-29 :决疋疋否提早載入該指令對 J载方法’其 括: 頂載貧料的步驟包 ,查一暫存器狀態表;以及 。。右該判斷結果表示該指令屬於一 器狀態表中與該指令對應暫 •,且該暫存 if預載㈣載人至—提早载人抑。 中以,t請專利範圍第1項所述處理器之預载方法,並 5"預載貢料作為該目標資料的步驟包括. /、 備妥檢查―提早載入㈣中的資料是否 令所合法,則將該指 資料的位址。 為极早載人糾中該預载 10·—種處理器,包括: 勺二=ΐ級,用以提取一指令’其中該指令提取級 4早70,以便在該指令提取級中預先判斷該指 令,以獲得一判斷結果; 一指令解碼級,祕至該齡提取級,用哺碼該指 令’以獲得一解碼結果; 一指令執行級,耦接至該指令解碼級,用以依據該解 碼結果執行該指令;以及 一提早載入佇列,耦接至該預解碼單元,用以依據該 判斷結果’決定是否在該指令進入該指令執行級之前提早 25 1364703 100-11-29 載入該指令對應之一預載資料;其中若該預載資料未被正 確地載入,則該指令執行級執行該指令時,該指令執行級 依據該指令去提取一目標資料;以及若該預載資料已被正 確地載入該提早載入佇列,則該指令執行級執行該指令 時,該}曰令執行級使用該預載資料作為該目標資料。 11. 如申凊專利範圍第⑴項所述之處理器,其中該提 t載入佇列包括一狀態攔位、一程式計數欄位、一暫存器 > °孔攔位、一e憶體位址攔位、以及一預载資料欄位。 12. 如申凊專利範圍第10項所述之處理器,其中該提 早载入仵顺據該輯結果,決定是轉錄該指令。 13’如申明專利範圍第項所述之處理器,更包括: f八:提早載入單元,耦接至該提早载入佇列,用以在該 令執行級之前,提早執行該指令以將該指令對 ㈣載轉放賴提早載讀列中。 如申明專利範圍第13項所述之處理器,更包括: 處理;tiff態表,耦接至該指令解碼級,用以紀錄該 處理裔中多個暫存器之狀態; 檢查該級解碼該指令,以及依據該解碼結果 入該提以判斷該預載資料是否被正確地載 存14項麟之處㈣,其中該暫 位。 括㈣欄位、以及-提早載人件列位址攔 26 丄 JVJH· /UJ 100-11-29 於八如申請專利範圍第Η項所述之處理器,i中 定::指令,則該_狀態表= 所有記錄;以及若該提早戴入‘ 理器將指令所指定的目的暫存器,則該處 該指令執人 14項=之處理11 ’其中若在 -記錄與载入仵列;若該提早载入狩列中有 效。 己㈣位址相同’則該處理H將該記錄設為無 18_請專利範圍第13項所述 =早元與該指令執行級中的一載入/儲存單 =申請專利範園第1()項所述之處理器,更包括. 暫存器狀態=該指令屬於—目標類型,且該 則_令對應之;資===備妥: 20.如申請專利範圍 1至私早載入佇列中。 令解碼級檢4該提早载 ^述之4理器,其中該指. 若該提早載Μ宁列中=:=否備妥且合法; 貝杆已備文且合法,則將該指令所 27 1364703 100-11-29 指定的目的暫存器位址改為該提早載入佇列中該預載資料 的位址。 28
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW97119412A TWI364703B (en) | 2008-05-26 | 2008-05-26 | Processor and early execution method of data load thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW97119412A TWI364703B (en) | 2008-05-26 | 2008-05-26 | Processor and early execution method of data load thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200949690A TW200949690A (en) | 2009-12-01 |
TWI364703B true TWI364703B (en) | 2012-05-21 |
Family
ID=44871057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW97119412A TWI364703B (en) | 2008-05-26 | 2008-05-26 | Processor and early execution method of data load thereof |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI364703B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646009B (zh) | 2006-04-12 | 2016-08-17 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
WO2008061154A2 (en) | 2006-11-14 | 2008-05-22 | Soft Machines, Inc. | Apparatus and method for processing instructions in a multi-threaded architecture using context switching |
EP2616928B1 (en) | 2010-09-17 | 2016-11-02 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
CN103635875B (zh) | 2011-03-25 | 2018-02-16 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
KR101638225B1 (ko) | 2011-03-25 | 2016-07-08 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 |
CN103562866B (zh) | 2011-03-25 | 2018-03-30 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
KR101639853B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 |
CN103649931B (zh) | 2011-05-20 | 2016-10-12 | 索夫特机械公司 | 用于支持由多个引擎执行指令序列的互连结构 |
CN104040491B (zh) | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
IN2014CN03678A (zh) | 2011-11-22 | 2015-09-25 | Soft Machines Inc | |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
KR102063656B1 (ko) | 2013-03-15 | 2020-01-09 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
-
2008
- 2008-05-26 TW TW97119412A patent/TWI364703B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW200949690A (en) | 2009-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI364703B (en) | Processor and early execution method of data load thereof | |
TW563064B (en) | Decoupled fetch-execute engine with static branch prediction support | |
US6058472A (en) | Apparatus for maintaining program correctness while allowing loads to be boosted past stores in an out-of-order machine | |
TWI436272B (zh) | 微處理器及其執行之方法 | |
US7917731B2 (en) | Method and apparatus for prefetching non-sequential instruction addresses | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
US7730283B2 (en) | Simple load and store disambiguation and scheduling at predecode | |
US6622237B1 (en) | Store to load forward predictor training using delta tag | |
US8984264B2 (en) | Precise data return handling in speculative processors | |
US6651161B1 (en) | Store load forward predictor untraining | |
US7257699B2 (en) | Selective execution of deferred instructions in a processor that supports speculative execution | |
TWI417787B (zh) | 微處理器及其執行方法 | |
EP1244962B1 (en) | Scheduler capable of issuing and reissuing dependency chains | |
US20070288725A1 (en) | A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism | |
TW200525355A (en) | Microprocessor and apparatus for performing speculative load operation from a stack memory cache | |
US20090164758A1 (en) | System and Method for Performing Locked Operations | |
TW200530912A (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US6622235B1 (en) | Scheduler which retries load/store hit situations | |
TW200821924A (en) | Self prefetching L2 cache mechanism for instruction lines | |
US6728867B1 (en) | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point | |
US20030149860A1 (en) | Stalling Instructions in a pipelined microprocessor | |
US20090204791A1 (en) | Compound Instruction Group Formation and Execution | |
US8019968B2 (en) | 3-dimensional L2/L3 cache array to hide translation (TLB) delays | |
US7984272B2 (en) | Design structure for single hot forward interconnect scheme for delayed execution pipelines | |
US20160335089A1 (en) | Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |