国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      嵌入式同構(gòu)對稱雙核risc微處理器的設(shè)計(jì)方法

      文檔序號:6481391閱讀:289來源:國知局
      專利名稱:嵌入式同構(gòu)對稱雙核risc微處理器的設(shè)計(jì)方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于超大規(guī)模集成電路設(shè)計(jì)技術(shù)領(lǐng)域,具體涉及一種應(yīng)用于多核CPU 的嵌入式同構(gòu)對稱雙核RISC微處理器的設(shè)計(jì)方法。
      背景技術(shù)
      微處理器性能上的飛躍,首先是工藝改進(jìn)的結(jié)果,其次是處理器核心體系結(jié) 構(gòu)改進(jìn)的結(jié)果。從工藝上看,目前半導(dǎo)體技術(shù)經(jīng)歷了硅晶體管、集成電路、超大 規(guī)模集成電路、甚大規(guī)禾莫集成電路的高速發(fā)展,帶來了微處理器計(jì)算性能和應(yīng)用 能力的飛速提高。從體系結(jié)構(gòu)上看,自1946年計(jì)算機(jī)問世以來,其體系結(jié)構(gòu)經(jīng)歷 了多次重要的變革,其中最有意義的是從復(fù)雜指令集計(jì)算機(jī)(CISC)體系結(jié)構(gòu)過 渡到精簡指令集計(jì)^m (RISC)體系結(jié)構(gòu)。CISC指令格式不固定,操作數(shù)可多可 少,尋址方式復(fù)雜多樣,操作數(shù)既可能來自寄存器也可能來自存儲器,每條指令 需要花費(fèi)若干周期才能完成。正是針對CISC指令種類多、指令格式不規(guī)范、尋址 方式太多的缺點(diǎn)開發(fā)出RISC體系結(jié)構(gòu)微處理器。RISC的設(shè)計(jì)哲學(xué)就是簡單性與 有效性,也就是說RISC通過簡化處理器指令集合的語意以及指令集合的編碼來獲 得芯片資源的有效利用。RISC大多數(shù)指令單周期完成,面向寄存器的操作和^A /存儲型訪問,采用硬連線代替微控制禾,控制,相比較CISC有較少的指令和操 作方式,有固定的指令格式和三操作數(shù)操作。同CISC系統(tǒng)相比,使用相同的工藝 和運(yùn)行時(shí)鐘下,RISC的運(yùn)行速度是CISC的2 4倍。
      但隨著最小線寬極限的逐漸接近,目前單純依靠提高主頻和優(yōu)化結(jié)構(gòu)來改善 處理器的計(jì)算能力變得越來越困難,其散熱和功耗也已成為制約單核發(fā)展的關(guān)鍵 因素。單核心微處理器的發(fā)展勢頭已經(jīng)呈現(xiàn)逐步降低的趨勢,而單片多核微處理器的出現(xiàn),解決了由于頻率增速放緩所帶來的微處理器性能發(fā)展的瓶頸問題。在 工作主頻相同的情況下采用多核心來大幅度提高性能,利用簡潔的架構(gòu)實(shí)現(xiàn)更高 的運(yùn)算性能。集成多個(gè)簡單內(nèi)核的微處理器的架構(gòu)或許會是未來微處理器發(fā)展的 一大趨勢。計(jì)算機(jī)的發(fā)展總是追求系統(tǒng)物理規(guī)模的不斷減小,以及性能和集成度 的不斷提高,隨著應(yīng)用的需要,芯片上的處理器數(shù)目將不斷增多,雙核也必然走 向多核。由于應(yīng)用的需要,多核技術(shù)將與其它先進(jìn)技術(shù)交織,成為處理器的發(fā)展 方向。
      針對上述背景技術(shù)中提及的處理器發(fā)展方向, 一方面國際上只有INTEL等個(gè) 別企業(yè)推出多核處理器,多核研究尚處在起步階段;另一方面國內(nèi)多核研究領(lǐng)域 既沒有成熟芯片面世,也沒有相關(guān)文章發(fā)表,顯示國內(nèi)多核研究工作尚未真正開 始。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種嵌入式同構(gòu)對稱雙核RISC處理器的設(shè)計(jì)方法,該 處理器通過共享寄存器實(shí)現(xiàn)了單片上的物理雙核集成。 為了實(shí)I見上述任務(wù),本發(fā)明采用如下的解決方案
      1) 采用公共PC寄存器實(shí)現(xiàn)雙核取指的同步性,避免兩個(gè)核心即雙核重復(fù)取 指或取指遺漏;
      2) 采用共享寄存器堆實(shí)現(xiàn)雙核資源共享以及數(shù)據(jù)交換的靈活性,避免需要擴(kuò) 展指令集來實(shí)現(xiàn)數(shù)據(jù)的共享;
      3) 采用寄存器相關(guān)性消除策略及流水線控制合并策略,使兩條流水線統(tǒng)一管 理,實(shí)現(xiàn)了兩條流水線的工作協(xié)同。
      本發(fā)明的公共PC寄存器實(shí)現(xiàn)雙核取指的同步性是核1、核2共用一個(gè)PC寄 存器,地址端口比單核增加了一個(gè)地址增值器,核l的地址是多路選擇器輸出的 結(jié)果,核2的地址是核1的地址經(jīng)過第一個(gè)地址增值器增值后的結(jié)果,而輸入到共享PC寄存器的地址是經(jīng)過兩次增值的結(jié)果,也就是在核2的地址上再加1增{6
      作為PC的輸入地址,使核l、核2的輸出地址始終相差1,消除存在的重復(fù)取指
      或著遺漏某條指令,保持良好的同步性。
      本發(fā)明的共享寄存器堆采用合并寄存器堆的策略,在單核中,寄存器堆共有
      32個(gè)寄存器,其中包括29個(gè)通用寄存器, 一個(gè)計(jì)數(shù)寄存器, 一個(gè)程序狀態(tài)寄存 器以及一個(gè)常數(shù)零寄存器,通過寄存器堆的合并,形成了共享寄存器堆模型,使 得兩個(gè)核心共用這32個(gè)寄存器,共享以后,對寄存器的控制進(jìn)行擴(kuò)展,由單核的 兩個(gè)讀控制和一個(gè)寫控制擴(kuò)展到雙核的四個(gè)讀控制和兩個(gè)寫控制,體現(xiàn)了兩個(gè)核 心的相對獨(dú)立性。
      本發(fā)明的寄存器相關(guān)性消除策略對于單一任務(wù)的程序指令序列是有固定順 序的,根據(jù)指令序列讀寫同一個(gè)寄存器的操作數(shù)的先后次序不同,出現(xiàn)下面四種
      數(shù)據(jù)競爭,假定有兩條指令i和j,并且指令i在指令j前面
      先寫后讀相關(guān)RAW (Read After Write):指令j讀源寄存器Rx,但指令i還 沒有將結(jié)果寫回目的寄存器Ry,此時(shí)指令j得到的是一個(gè)不正確的舊操作數(shù)值, 這是最普遍的一種數(shù)據(jù)競爭,處理器微結(jié)構(gòu)設(shè)計(jì)中一般采用旁路機(jī)構(gòu)BPU轉(zhuǎn)發(fā)數(shù) 據(jù)來減少這種競爭,但不能徹底消除這種競爭;
      寫寫相關(guān)WAW ( Write After Write ):指令i和j都寫同一個(gè)目的寄存器 Ry,但是指令j的寫操作和指令i同時(shí)發(fā)生或者在指令i之前完成,最后寫的結(jié) 果是在錯(cuò)誤的次序下完成的,導(dǎo)致在目的寄存器Ry的值是指令i寫的值或者是不 確定的值,而不是指令j寫的值,這種數(shù)據(jù)競爭主要出現(xiàn)在寫操作可能發(fā)生于多
      個(gè)流水級的處理器中,或者亂序完成的流水線中以及多核心流水線之間;
      先讀后寫相關(guān)WAR ( Write after Read ):指令j寫操作結(jié)果在指令i讀源 操作數(shù)之前完成,導(dǎo)致指令i讀出一個(gè)不正確的新值,這種競爭出現(xiàn)在某些指令 寫結(jié)果較早,而某些指令讀源操作數(shù)較遲的情況,因?yàn)榱魉€的自然結(jié)構(gòu)是指令讀操作數(shù)在寫操作數(shù)之前,因此這種數(shù)據(jù)競爭非常少;
      讀讀相關(guān)RAR (Read after Read ):指令i和j都讀同一個(gè)源寄存器; 上述四種相關(guān)性都是由于對于同一個(gè)寄存器進(jìn)行某幾種操作引起了相關(guān)性,
      由于雙核微處理器采用的是共享寄存器堆方法,以及按序發(fā)射的指令發(fā)射策略, 并且2條流水線統(tǒng)一在ID級讀源操作數(shù),在EXE級寫目的操作數(shù),因此在讀源操 作數(shù)必定在寫目的操作數(shù)之前,所以也不會引起先讀后寫相關(guān)WAR競爭,在其微 結(jié)構(gòu)里面兩個(gè)核間的數(shù)據(jù)競爭只會是寫寫相關(guān)WAW和先寫后讀相關(guān)RAW數(shù)據(jù)競爭; 相關(guān)性的檢測
      雙核的每個(gè)B寸鐘周期里,兩個(gè)核心的流水線從ID級各發(fā)射一條指令到EXE級 執(zhí)行,其檢測方法是在譯碼級完成,當(dāng)在取指階段取完指令后就放入指令寄存器 中,通過比較指令寄存器中的相應(yīng)的源操作數(shù)、目的操作數(shù)的編碼段完成RAW相 關(guān)性的檢測;
      首先指令編碼在REG1、 REG2類型里,第21位到25位是第一源寄存器scrl 的編碼,第16位到20位是目的寄存器dst的編碼,第0位到4位是第二源寄存 器scr2的編碼,對應(yīng)到指令寄存器ir里,ir25~21對應(yīng)源操作數(shù)第一源寄存器 scrl, ir^對應(yīng)目的操作數(shù)目的寄存器dst, iiv。對應(yīng)源操作數(shù)第二源寄存器 scr2;REG3、 CTRL、 MEM類指令里只有一個(gè)源操作數(shù)第一源寄存器scrl,除了 CTRL 類型以及存數(shù)類指令沒有目的操作數(shù)外,其他類型的指令格式都有目的操作數(shù);
      先寫后讀相關(guān)RAW檢測的具體方案如下
      首先令,
      dst(l)= (bar(l) |bsr(l) | STORE (1))&ir (l)2(r16+(bal (1) |bsr(l))&ir(l)
      25~21;
      scrl (2)= ir(2)2r21, scr2 (2) = ir (2) 4如(REG3 (2) | CTRL (2) |腿(2));
      如果dst (1) = = scrl (2) I scr2(2),則存在RAW相關(guān)性;其中,ir(l)代表核1的指令寄存器,dst(l)代表核1的目的操作數(shù), bar(l)、 bsr(l)、 STORE (1)為核1譯完碼后無條件轉(zhuǎn)移和存儲類控帝,號,ir(2) 代表核2的指令寄存器,scrl(2)和scr2(2)代表核2的兩個(gè)源操作數(shù),REG3(2)、 CTRL(2)、認(rèn)M(2)分別代表核2譯碼后的寄存器類、控制類、存儲器類的控制信 號;
      相關(guān)性的處理 WAW的解決策略
      雙核微處理器是按序發(fā)射指令,因此指令的執(zhí)行是按照程序中的順序執(zhí)行,如果 相鄰兩條指令要對同一寄存器寫數(shù)據(jù),只要把后一條指令的結(jié)果寫入寄存器中就 可以消除先讀后寫相關(guān)WAW; 具體的處理如下
      Cl、 C2分別代表核1、核2的寫總線,WC1 (i) 、 WC2 (i)代表核1、核2 的寫控制信號,i的值是0 28,代表0 28號通用寄存器,只有寫控制信號發(fā)生 時(shí),才把總線C1、 C2上的內(nèi)容寫到寄存器中;
      得出,REG(i)= (WC2 (i) & C2) | ( WC2 (i) & WC1 (i) & Cl) , REG(i) 代表第i號寄存器,如果兩個(gè)核都對同一寄存器寫入數(shù)據(jù),只把核2的數(shù)據(jù)寫入 相應(yīng)的寄存器當(dāng)中,通過對寄存器的寫操作的修正,解決先讀后寫相關(guān)WAW相關(guān) 性問題;
      先寫后讀相關(guān)RAW數(shù)據(jù)競爭的解決①在ID級讀源操作數(shù)時(shí),此時(shí)正確的值 在流水線內(nèi)部還沒有產(chǎn)生,產(chǎn)生先寫后讀相關(guān)RAW請求,然后由流水線控制部件 處理;②在ID級讀源操作數(shù)時(shí),此時(shí)正確的值已在流水線內(nèi)部產(chǎn)生,只會發(fā)生在 核內(nèi)部由于流水線重疊產(chǎn)生,而雙核之間的的并行是完全同步的,即取指、譯 碼、執(zhí)行完全是同步的,讀操作是在譯碼級進(jìn)行,這時(shí)兩個(gè)核都還沒有執(zhí)行操 作,在兩個(gè)核間不會產(chǎn)生這種相關(guān)性,因此,只對于情況腿行相關(guān)性處理。
      本發(fā)明采用分塊的設(shè)計(jì)方法完成了物理內(nèi)核的設(shè)計(jì)。根據(jù)取指單元、譯碼單元、控制單元以及數(shù)據(jù)通路內(nèi)部邏輯模塊的相對獨(dú)立性,通過模塊的劃分來設(shè)計(jì)
      各個(gè)單元。該雙核以32位RISC微結(jié)構(gòu)的內(nèi)部各模塊為IP,并根據(jù)由單核到雙核 結(jié)構(gòu)變化的需要增加部分單核不具備的功能,設(shè)計(jì)32位雙核RISC的微結(jié)構(gòu)。采 用公共PC寄存器方案,實(shí)現(xiàn)了雙核取指上的同步性,避免了兩個(gè)核心重復(fù)取指或 者取指的遺漏;雙核采用按序發(fā)射的策略,即嚴(yán)格按照雙核的取指順序來執(zhí)行, 簡化了設(shè)計(jì);針對兩個(gè)核心間的數(shù)據(jù)交換,設(shè)計(jì)出共享寄存器堆方案,使得雙核 實(shí)現(xiàn)了資源的共享以及提高了數(shù)據(jù)交換的靈活性,避免了需要擴(kuò)展指令集來實(shí)現(xiàn) 數(shù)據(jù)的共享,縮短了設(shè)計(jì)周期;釆用流水線控制合并的策略,使得兩條流水線統(tǒng) 一管理,實(shí)現(xiàn)了兩條流水線的工作協(xié)同性。


      圖1是雙核微處理器整體結(jié)構(gòu)及主要功能框圖2是公共PC寄存器實(shí)現(xiàn)方案;
      圖3是指令格式;
      圖4是共享寄存器模型;
      圖5是RAW相關(guān)性消除;
      圖6是RAW相關(guān)性消除波形圖。
      具體實(shí)施例方式
      以下結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)說明。 參見圖1,發(fā)明的基于共享寄存器組的雙核微處理器實(shí)現(xiàn)方法,按以下方式 進(jìn)行
      1) 采用公共PC寄存器實(shí)現(xiàn)雙核取指的同步性,避免兩個(gè)核心即雙核重復(fù)取 指或取指遺漏;
      2) 采用共享寄存器堆實(shí)現(xiàn)雙核資源共享以及數(shù)據(jù)交換的靈活性,避免需要擴(kuò) 展指令集來實(shí)現(xiàn)數(shù)據(jù)的共享;3)采用寄存器相關(guān)性消除策略及流水線控制合并策略,使兩條流水線統(tǒng)一管 理,實(shí)現(xiàn)了兩條流水線的工作協(xié)同。
      上述的公共PC寄存器方案核l、核2共用一個(gè)PC寄存器。如圖2所示, 地址端口比單核增加了一個(gè)地址增值器,核1的地址是多路選擇器輸出的結(jié)果, 核2的地址是核1的地址經(jīng)過第一個(gè)地址增值器增值后的結(jié)果,而輸入到共享PC 寄存器的地址是經(jīng)過兩次增值的結(jié)果,也就是在核2的地址上再加1增值作為PC 的輸入地址,這樣可以使得核l、核2的輸出地址始終相差1,并且消除了可能存 在的重復(fù)取指或著遺漏某條指令,保持良好的同步性。因?yàn)楸驹O(shè)計(jì)是針對單任務(wù) 雙核的協(xié)同工作,因此保持兩個(gè)核的同步工作非常重要,如果核1、核2采用獨(dú) 立的程序寄存器,使得兩個(gè)核取指是獨(dú)立的,因此必須從外部加以控制使3們同 步。而且對于遇到多周期指令、轉(zhuǎn)移指令等特殊指令需要停止PC寄存器或者修改 PC的值時(shí),這使得控制更加復(fù)雜,,必須采用軟件系統(tǒng)進(jìn)行調(diào)度。因此采用共用 PC寄存器的方法減少了控制的復(fù)雜性,使得硬件實(shí)現(xiàn)更加簡單。
      上述共享寄存器堆方案在本雙核的微結(jié)構(gòu)里面,數(shù)據(jù)通路核心部件為寄存 器堆。在雙核運(yùn)行過程中,必須要保證兩條流水線訪問寄存器堆得到的數(shù)據(jù)應(yīng)該 一樣,既保持?jǐn)?shù)據(jù)的共享與連續(xù)性,也必須要保證兩條流水線之間的數(shù)據(jù)相關(guān)正 確檢測和消除。因此本文設(shè)計(jì)出合并寄存器堆的策略。
      在單核中,寄存器堆共有32個(gè)寄存器,其中包括29個(gè)通用寄存器, 一個(gè)計(jì)
      數(shù)寄存器, 一個(gè)程序狀態(tài)寄存器以及一個(gè)常數(shù)零寄存器。通過寄存器堆的合并, 形成了共享寄存器堆模型,使得兩個(gè)核心共用這32個(gè)寄存器,使得數(shù)據(jù)得到良好 的共享。共享以后,對寄存器的控制進(jìn)行了擴(kuò)展,擴(kuò)展到了四個(gè)讀控制和兩個(gè)寫 控制,體現(xiàn)了兩個(gè)核心的相對獨(dú)立性。
      如果采用獨(dú)立的寄存器堆,即每個(gè)核心有自己寄存器堆,就存在對寄存器重 新編址的問題。因?yàn)槲覀冎饕紤]是對單任務(wù)的按序執(zhí)行,存在兩個(gè)核間數(shù)據(jù)的交換和數(shù)據(jù)的共享,也就是核1可能用到核2寄存器堆里寄存器中的數(shù)據(jù),同 樣,核2也可能用到核1寄存器堆里寄存器中的數(shù)據(jù),這就存在如何對寄存器尋 址、編址的問題。首先分析一下所采用的指令格式,如圖3所示。
      在這五種指令格式中,srcl、 src2、 dst分別對應(yīng)源寄存器1 、源寄存器2、 目的寄存器??梢姛o論源寄存器或者目的寄存器的編碼,都是采用5位二進(jìn)制來 編碼,而25=32,剛好對應(yīng)于32個(gè)寄存器的地址;而現(xiàn)在如果現(xiàn)在核l、核2各用 一個(gè)寄存器堆,但為了實(shí)現(xiàn)數(shù)據(jù)共享與交換必須重新對兩個(gè)寄存器堆編碼,也就 是要對64個(gè)寄存器重新編碼,對應(yīng)于具體的指令格式,就是要擴(kuò)展源操作數(shù)和目 的操作數(shù)的編碼位數(shù)。這時(shí)srcl、 src2、 dst的就必須在指令中擴(kuò)展到6位來對 寄存器的地址進(jìn)行編碼,因?yàn)?6=64可以實(shí)現(xiàn)對于64個(gè)寄存器的編碼。但是此時(shí) 必須改變指令的格式和結(jié)構(gòu),也就是改變整個(gè)指令體系,那么也就是改變整個(gè)單 核的架構(gòu)體系,那將是一個(gè)復(fù)雜的過程,而且使得設(shè)計(jì)周期變長。
      因此,如圖4采用共享寄存器堆模型是一種非常有效的資源共享和數(shù)據(jù)交換 的方法。簡化了設(shè)計(jì),節(jié)約了資源。
      上述寄存器競爭消除策略因?yàn)閷τ趩我蝗蝿?wù)的程序指令序列是有固定順序 的,根據(jù)指令序列讀寫同一個(gè)寄存器(操作數(shù))的先后次序不同,可能出現(xiàn)下面四 種數(shù)據(jù)競爭(假定有兩條指令i和j,并且指令i在指令j前面)-
      先寫后讀相關(guān)RAW (Read After Write)。指令j讀源寄存器Rx,但指令i 還沒有將結(jié)果寫回目的寄存器Ry。這樣指令j得到的是一個(gè)不正確的舊操作數(shù) 值。這是最普遍的一種數(shù)據(jù)競爭,處理器微結(jié)構(gòu)設(shè)計(jì)中一般釆用旁路機(jī)構(gòu)(BPU) 轉(zhuǎn)發(fā)數(shù)據(jù)來減少這種競爭,但不能徹底消除這種競爭。
      寫寫相關(guān)WAW ( Write After Write )。指令i和j都寫同一個(gè)目的寄存 器Ry,但是指令j的寫操作和指令i同時(shí)發(fā)生或者在指令i之前完成,最后寫的 結(jié)果是在錯(cuò)誤的次序下完成的,導(dǎo)致在目的寄存器Ry的值是指令i寫的值或者是不確定的值,而不是指令j寫的值。這種數(shù)據(jù)競爭主要出現(xiàn)在寫操作可能發(fā)生于 多個(gè)流水級的處理器中,或者亂序完成的流水線中以及多核心流水線之間。
      先讀后寫相關(guān)WAR ( Write after Read )。指令j寫操作結(jié)果在指令i讀 源操作數(shù)之前完成,導(dǎo)致指令i讀出一個(gè)不正確的新值。這種競爭出現(xiàn)在某些指 令寫結(jié)果較早,而某些指令讀源操作數(shù)較遲的情況,因?yàn)榱魉€的自然結(jié)構(gòu)是指 令讀操作數(shù)在寫操作數(shù)之前,因此這種數(shù)據(jù)競爭是非常少的。
      讀讀相關(guān)證(Read after Read )。指令i和j都讀同一個(gè)源寄存器。(不 會引起數(shù)據(jù)沖突)
      可見,上述四種相關(guān)性都是由于對于同一個(gè)寄存器進(jìn)行某幾種操作引起了相 關(guān)性。由于本雙核微處理器采用的是共享寄存器堆方法,以及按序發(fā)射的指令發(fā) 射策略,并且2條流7K線統(tǒng)一在ID級讀源操作數(shù),在EXE級寫目的操作數(shù),因此 在讀源操作數(shù)必定在寫目的操作數(shù)之前,所以也不會引起WAR競爭,在其微結(jié)構(gòu) 里面兩個(gè)核間的數(shù)據(jù)競爭只會是WAW和RAW數(shù)據(jù)競爭
      監(jiān)W競爭的解決方式比較簡單,因?yàn)楸倦p核微處理器是按序發(fā)射指令,因 此指令的執(zhí)行是按照程序中的順序執(zhí)行,如果相鄰兩條指令要對同一寄存器寫數(shù) 據(jù),只要把后一條指令的結(jié)果寫入寄存器中就可以消除WAW相關(guān)。
      'RAW數(shù)據(jù)競爭的解決方式①在ID級讀源操作數(shù)時(shí),此時(shí)正確的值在流水 線內(nèi)部還沒有產(chǎn)生,產(chǎn)生RAW相關(guān)請求,然后由流水線控制部件處理;②在ID級 讀源操作數(shù)時(shí),此時(shí)正確的值已在流水線內(nèi)部產(chǎn)生,這種情況只會發(fā)生在核內(nèi)部 由于流水線重疊產(chǎn)生,而雙核之間的的并行是完全同步的,即取指、譯碼、執(zhí)行 完全是同步的。讀操作是在譯碼級進(jìn)行,這時(shí)兩個(gè)核都還沒有執(zhí)行操作,所以在 兩個(gè)核間不會產(chǎn)生這種相關(guān)性。因此,只對于情況①進(jìn)行相關(guān)性處理。
      相關(guān)性的檢測
      在雙核的每個(gè)時(shí)鐘周期里,兩個(gè)核心的流水線從ID級各發(fā)射一條指令到EXE級執(zhí)行。而要在執(zhí)行前就必須做出正確的檢測,并進(jìn)行相應(yīng)的處理,否則在執(zhí)行 級就很難解決其相關(guān)性。因此,本檢測方法是在譯碼級完成,當(dāng)在取指階段取完 指令后就放入指令寄存器中,通過比較指令寄存器中的相應(yīng)的源操作數(shù)、目的操
      作數(shù)的編碼段就可以完成RAW相關(guān)性的檢測(對于WAW相關(guān)性的處理中包含對WAW 的檢測,所以在此不具體討論WM的檢測)。
      首先,我們來分析一下指令的編碼格式。在REG1、 REG2類型里,第21位到 25位是源寄存器scrl的編碼,第16位到20位是目的寄存器dst的編碼,第0 位到4位是源寄存器scr2的編碼。對應(yīng)到ir (指令寄存器)里,ir^對應(yīng)源操 作數(shù)scrl, ^2。~16對應(yīng)目的操作數(shù)dst, iiv。對應(yīng)源操作數(shù)scr2。 REG3、 CTRL、 MEM類指令里只有一個(gè)源操作數(shù)scrl 。除了 CTRL類型以及存數(shù)類指令沒有目的操 作數(shù)外,其他類型的指令格式都有目的操作數(shù)。
      RAW檢測的具體方案如下
      令dst(l)= (bar(l) lbsr(l) | STORE (1))&ir (1) 2。、+(bal (1) |bsr (1))&ir (1)
      25 2"
      scrl(2)= ir(2)25~21, scr2 (2) = ir (2) 4jT(REG3 (2) | CTRL (2) |趣(2));
      如果dst(l)= 二 scrl(2)| scr2(2),則存在RAW相關(guān)性。 其中,ir(l)代表核1的指令寄存器,dst(l)代表核1的目的操作數(shù), bar(l)、 bsr(l)、 STORE (1)為核l譯完碼后無斜牛轉(zhuǎn)移和存儲類控制信號,ir(2) 代表核2的指令寄存器,scrl(2)和scr2(2)代表核2的兩個(gè)源操作數(shù),REG3(2)、 CTRL(2)、 MEM(2)分別代表核2譯碼后的寄存器類、控制類、存儲器類的控制信 號。
      相關(guān)性的處理 WAW的解決策略正如前面所提到的,本雙核微處理器針對的是單任務(wù)的順序執(zhí)行,因此當(dāng)兩
      個(gè)核同時(shí)對同一寄存器寫操作時(shí),只把后一條指令的目的操作數(shù)也就是核2的目 的操作數(shù)寫至湘應(yīng)的寄存器內(nèi),這樣就解決了 WAW相關(guān)性。 具體的處理如下-
      Cl、 C2分別代表核1、核2的寫總線,WC1 (i) 、 WC2 (i)代表核1、核2 的寫控制信號,i的值是0 28,代表0 28號寄存器(通用寄存器)。只有寫控制 信號發(fā)生時(shí),才把C總線上的內(nèi)容寫到寄存器中。
      可以得出,REG(i): (WC2 (i) &C2) | ( WC2 (i) &WC1 (i) &C1), REG(i) 代表第i號寄存器??梢?,如果兩個(gè)核都對同一寄存器寫入數(shù)據(jù),只把核2的數(shù) 據(jù)寫入相應(yīng)的寄存器當(dāng)中即可。通過對寄存器的寫操作的修正,很好解決了 WAW 相關(guān)性問題。
      RAW的解決策略
      RAW的相關(guān)性解決起來就比較復(fù)雜,雙核的RAW相關(guān)性和單核有著很大的差 異,在單核流水線流動(dòng)的過程中,下一條指令的發(fā)射比上一條指令晚一個(gè)時(shí)鐘周 肌也就是在下一條指令譯碼的時(shí)候上一條指令正在執(zhí)行,所以可以通過引入旁 路的方法把上一條指令的目的操作數(shù)直接作為后一條指令的源操作數(shù),而不通過 寄存器;對于雙核,兩個(gè)核是同時(shí)譯碼,同時(shí)開始執(zhí)行,所以要引入旁路是相當(dāng) 困難的,因?yàn)槿≡床僮鲾?shù)是在譯碼級完成的,而這時(shí)兩個(gè)核都還沒有開始執(zhí)行, 當(dāng)然也不會產(chǎn)生目的操作數(shù)。那是否可以讓核2延遲一個(gè)周期然后譯碼,此時(shí)就 可以像單核內(nèi)那樣采用旁路的方法解決?前面已經(jīng)分析相關(guān)性的檢測只能在譯碼 級進(jìn)行,所以在譯碼前也就是在取指級要判斷出相關(guān)性并進(jìn)行延時(shí)處理是不可行 的。因此本文采用修改PC、地址端口,同時(shí)對指令寄存器清零的方式,讓核2再 次取那條具有相關(guān)性的指令,并在下一周期從新執(zhí)行一次,這樣就可以正確的取 到上一條指令的目的操作數(shù)來作為源操作數(shù)。具體的方案如下如圖5現(xiàn)在假設(shè)第M條指令和第M+l條指令存在RAW相關(guān) 性,即第M條指令的目的操作數(shù)是第M+l條指令的源操作數(shù)。
      當(dāng)核1在第1個(gè)周期里取到第M條指令時(shí),同時(shí)核2取到第M+1指令;在下 個(gè)周期譯碼時(shí),檢測到第M條和第M+l條指令存在RAW相關(guān),這時(shí),核1和核2 已經(jīng)分別取出第M+2和第M+3條指令;在譯完碼的下一個(gè)周期的時(shí)鐘下降沿通過 給ir寄存器清零,阻iW第M+2和第M+3條指令的譯碼,并修改PC寄存器和地 址端口的值,使得下一周期兩個(gè)內(nèi)核所取得指令分別是第M+l(核l)條、第 M+2(核2)條。而當(dāng)M+1(核1)條、第M+2(核2)條開始譯碼的時(shí)候,第M條指令已 經(jīng)執(zhí)行完畢,目的操作數(shù)已經(jīng)產(chǎn)生,因此消除了相關(guān)性。
      圖6是RAW相關(guān)性解決策略Modelsim仿真波形圖。在190ns的B寸候,核l、 核2進(jìn)行取指,分別取到00001005和00001006這兩個(gè)地址所對應(yīng)的指令;在 210ns的時(shí)候開始譯碼,這時(shí)ir0、 irl所存放的指令302216fe、 3c22fc02就是兩 個(gè)核在190ns時(shí)所取到的指令,通過相關(guān)性檢測,檢測到了這兩條指令具有相關(guān) 性;在230ns時(shí),修正地址端口所對應(yīng)的地址并重新取指,同時(shí)修改PC,并對指 令寄存器ir0、 irl清零,此時(shí),核1與核2分別取的指令是00001006和00001007 這兩個(gè)地址所對應(yīng)的指令,而00001005這個(gè)地址所對應(yīng)的指令已經(jīng)執(zhí)行完畢,消 除了 RAW相關(guān)性,可見仿真結(jié)果與本文所提出的解決策略相一致,說明此解決策 略是正確可行的。
      權(quán)利要求
      1、一種嵌入式同構(gòu)對稱雙核RISC處理器的設(shè)計(jì)方法,其特征在于1)采用公共PC寄存器實(shí)現(xiàn)雙核取指的同步性,避免兩個(gè)核心即雙核重復(fù)取指或取指遺漏;2)采用共享寄存器堆實(shí)現(xiàn)雙核資源共享以及數(shù)據(jù)交換的靈活性,避免需要擴(kuò)展指令集來實(shí)現(xiàn)數(shù)據(jù)的共享;3)采用寄存器相關(guān)性消除策略及流水線控制合并策略,使兩條流水線統(tǒng)一管理,實(shí)現(xiàn)了兩條流水線的工作協(xié)同。
      2、 根據(jù)權(quán)利要求1所述的嵌入式同構(gòu)對稱雙核RISC處理器的設(shè)計(jì)方法,其 特征在于所說的公共PC寄存器實(shí)現(xiàn)雙核取指的同步性是核1、核2共用一個(gè)PC 寄存器,地址端口比單核增加了一個(gè)地址增值器,核1的地址是多路選擇器輸出 的結(jié)果,核2的地址是核1的地址經(jīng)過第一個(gè)地址增值器增值后的結(jié)果,而輸入 到共享PC寄存器的地址是經(jīng)過兩次增值的結(jié)果,也就是在核2的地址上再加1增 值作為PC的輸入地址,使核l、核2的輸出地址始終相差1,消除存在的重復(fù)取 指或著遺漏某條指令,保持良好的同步性。
      3、 根據(jù)權(quán)利要求1所述的嵌入式同構(gòu)對稱雙核RISC處理器的設(shè)計(jì)方法,其 特征在于所說的共享寄存器堆采用合并寄存器堆的策略,在單核中,寄存器堆 共有32個(gè)寄存器,其中包括29個(gè)通用寄存器, 一個(gè)計(jì)數(shù)寄存器, 一個(gè)程序狀態(tài) 寄存器以及一個(gè)常數(shù)零寄存器,通過寄存器堆的合并,形成了共享寄存器堆模 型,使得兩個(gè)核心共用這32個(gè)寄存器,共享以后,對寄存器的控制進(jìn)行擴(kuò)展,由 單核的兩個(gè)讀控制和一個(gè)寫控制擴(kuò)展到雙核的四個(gè)讀控制和兩個(gè)寫控制,體現(xiàn)了 兩個(gè)核心的相對獨(dú)立性。
      4、 根據(jù)權(quán)利要求1所述的嵌入式同構(gòu)對稱雙核RISC處理器的設(shè)計(jì)方法,其特征在于所說的寄存器相關(guān)性消除策略對于單一任務(wù)的程序指令序列是有固 定順序的,根據(jù)指令序列讀寫同一個(gè)寄存器的操作數(shù)的先后次序不同,出現(xiàn)下面 四種數(shù)據(jù)競爭,假定有兩條指令i和j,并且指令i在指令j前面先寫后讀相關(guān)RAW (Read After Write):指令j讀源寄存器Rx,但指令i還 沒有將結(jié)果寫回目的寄存器Ry,此時(shí)指令j得到的是一個(gè)不正確的舊操作數(shù)值, 這是最普遍的一種數(shù)據(jù)競爭,處理器微結(jié)構(gòu)設(shè)計(jì)中一般采用旁路機(jī)構(gòu)BPU轉(zhuǎn)發(fā)數(shù) 據(jù)來減少這種競爭,〗旦不能徹底消除這種競爭;寫寫相關(guān)WAW ( Write After Write ):指令i和j都寫同一個(gè)目的寄存器 Ry,但是指令j的寫操作和指令i同時(shí)發(fā)生或者在指令i之前完成,最后寫的結(jié) 果是在錯(cuò)誤的次序下完成的,導(dǎo)致在目的寄存器Ry的值是指令i寫的值或者是不 確定的值,而不是指令j寫的值,這種數(shù)據(jù)競爭主要出現(xiàn)在寫操作可能發(fā)生于多 個(gè)流水級的處理器中,或者亂序完成的流水線中以及多核心流水線之間;先讀后寫相關(guān)WAR ( Write after Read ):指令j寫操作結(jié)果在指令i讀源 操作數(shù)之前完成,導(dǎo)致指令i讀出一個(gè)不正確的新值,這種競爭出現(xiàn)在某些指令 寫結(jié)果較早,而某些指令讀源操作數(shù)較遲的情況,因?yàn)榱魉€的自然結(jié)構(gòu)是指令 讀操作數(shù)在寫操作數(shù)之前,因此這種數(shù)據(jù)競爭非常少;讀讀相關(guān)RAR (Read after Read ):指令i和j都讀同一個(gè)源寄存器;上述四種相關(guān)性都是由于對于同一個(gè)寄存器進(jìn)行某幾種操作引起了相關(guān)性,由于雙核微處理器采用的是共享寄存器堆方法,以及按序發(fā)射的指令發(fā)射策略, 并且2條流水線統(tǒng)一在ID級讀源操作數(shù),在EXE級寫目的操作數(shù),因此在讀源操 作數(shù)必定在寫目的操作數(shù)之前,所以也不會弓胞先讀后寫相關(guān)WAR競爭,在其微 結(jié)構(gòu)里面兩個(gè)核間的數(shù)據(jù)競爭只會是寫寫相關(guān)WAW和先寫后讀相關(guān)RAW數(shù)據(jù)競爭; 相關(guān)性的檢測雙核的每個(gè)時(shí)鐘周期里,兩個(gè)核心的流水線從ID級各發(fā)射一條指令到EXE級 執(zhí)行,其檢測方法是在譯碼級完成,當(dāng)在取指階段取完指令后就放入指令寄存器中,通過比較指令寄存器中的相應(yīng)的源操作數(shù)、目的操作數(shù)的編碼段完成RAW相 關(guān)性的檢測;首先指令編碼在REG1、 REG2類型里,第21位到25位是第一源寄存器scrl 的編碼,第16位到20位是目的寄存器dst的編碼,第0位到4位是第二源寄存 器scr2的編碼,對應(yīng)到指令寄存器ir里,ir25~21對應(yīng)源操作數(shù)第一源寄存器 scrl, ir韭對應(yīng)目的操作數(shù)目的寄存器dst, iiv。對應(yīng)源操作數(shù)第二源寄存器 scr2;REG3、 CTRL、 MEM類指令里只有一個(gè)源操作數(shù)第一源寄存器scrl ,除了 CTRL 類型以及存數(shù)類指令沒有目的操作數(shù)外,其他類型的指令格式都有目的操作數(shù);先寫后讀相關(guān)RAW檢測的具體方案如下-首先令,dst(l)= (bar(l) |bsr(l) i STORE(1))&ir (l)2(ri6+(bal (1) ibsr (l))&ir (1)25 21 ',scrl (2)= ir(2W, scr2 (2) = ir (2) 4如(REG3 (2) | CTRL (2) |薩(2));如果dst(l)= = scrl(2) I scr2(2),則存在RAW相關(guān)性; 其中,ir(l)代表核1的指令寄存器,dst(l)代表核1的目的操作數(shù), bar(l)、 bsr(l)、 STORE (1)為核1譯完碼后無割牛轉(zhuǎn)移和存儲類控制信號,ir(2) 代表核2的指令寄存器,scrl(2)和scr2(2)代表核2的兩個(gè)源操作數(shù),REG3(2)、 CTRL(2)、 MEM(2)分別代表核2譯碼后的寄存器類、控制類、存儲器類的控制信 號;相關(guān)性的處理 WAW的解決策略雙核微處理器是按序發(fā)射指令,因此指令的執(zhí)行是按照程序中的順序執(zhí)行,如果 相鄰兩條指令要對同一寄存器寫數(shù)據(jù),只要把后一條指令的結(jié)果寫入寄存器中就 可以消除先讀后寫相關(guān)WAW;具體的處理如下Cl、 C2分別代表核1、核2的寫總線,WC1 (i) 、 WC2 (i)代表核1、核2 的寫控制信號,i的值是0 28,代表0 28號通用寄存器,只有寫控制信號發(fā)生 時(shí),才把總線C1、 C2上的內(nèi)容寫至lJ寄存器中;得出,REG(i)二 (WC2 (i) & C2) | ( WC2 (i) & WC1 (i) & Cl) , REG(i) 代表第i號寄存器,如果兩個(gè)核都對同一寄存器寫入數(shù)據(jù),只把核2的數(shù)據(jù)寫入 相應(yīng)的寄存器當(dāng)中,通過對寄存器的寫操作的修正,解決先讀后寫相關(guān)WAW相關(guān) 性問題;先寫后讀相關(guān)RAW數(shù)據(jù)競爭的解決①在ID級讀源操作數(shù)時(shí),此時(shí)正確的值 在流水線內(nèi)部還沒有產(chǎn)生,產(chǎn)生先寫后讀相關(guān)RAW請求,然后由流水線控制部件 處理;②在ID級讀源操作數(shù)時(shí),此時(shí)正確的值已在流水線內(nèi)部產(chǎn)生,只會發(fā)生在 核內(nèi)部由于流水線重疊產(chǎn)生,而雙核之間的的并行是完全同步的,即取指、譯 碼、執(zhí)行完全是同步的,讀操作是在譯碼級進(jìn)行,這時(shí)兩個(gè)核都還沒有執(zhí)行操 作,在兩個(gè)核間不會產(chǎn)生這種相關(guān)性,因此,只對于情況OM行相關(guān)性處理。
      全文摘要
      嵌入式同構(gòu)對稱雙核RISC處理器的設(shè)計(jì)方法,根據(jù)取指單元、譯碼單元、控制單元以及數(shù)據(jù)通路內(nèi)部邏輯模塊的相對獨(dú)立性,通過模塊劃分構(gòu)成內(nèi)核各單元。以32位RISC微結(jié)構(gòu)的內(nèi)部各模塊為IP,并根據(jù)需要進(jìn)行功能擴(kuò)展,設(shè)計(jì)32位雙核RISC的微結(jié)構(gòu)。采用公共PC寄存器方案,實(shí)現(xiàn)了雙核取指上的同步性,避免兩個(gè)核心重復(fù)取指或者取指的遺漏;雙核采用按序發(fā)射的策略,即按照雙核的取指順序來執(zhí)行,簡化了設(shè)計(jì);針對兩個(gè)核心間的數(shù)據(jù)交換,設(shè)計(jì)出共享寄存器堆方案,使雙核實(shí)現(xiàn)了資源的共享以及提高了數(shù)據(jù)交換的靈活性,避免需要擴(kuò)展指令集來實(shí)現(xiàn)數(shù)據(jù)的共享,縮短了設(shè)計(jì)周期;采用流水線控制合并的策略,使得兩條流水線統(tǒng)一管理,實(shí)現(xiàn)了兩條流水線的工作協(xié)同性。
      文檔編號G06F9/38GK101593097SQ20091002265
      公開日2009年12月2日 申請日期2009年5月22日 優(yōu)先權(quán)日2009年5月22日
      發(fā)明者坤 左, 杰 談, 邵志標(biāo), 剛 鄒 申請人:西安交通大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1