国产精品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>

      一種無鎖鏈表管理裝置的制造方法

      文檔序號:8258312閱讀:347來源:國知局
      一種無鎖鏈表管理裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種無鎖鏈表管理裝置。
      【背景技術(shù)】
      [0002]鏈表(Linked list)是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時動態(tài)生成。每個結(jié)點(diǎn)包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點(diǎn)地址的指針域。
      [0003]鏈表是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會按線性的順序存儲數(shù)據(jù),而是在每一個節(jié)點(diǎn)里存到下一個節(jié)點(diǎn)的指針(Pointer)。使用鏈表結(jié)構(gòu)可以克服數(shù)組鏈表需要預(yù)先知道數(shù)據(jù)大小的缺點(diǎn),鏈表結(jié)構(gòu)可以充分利用計算機(jī)內(nèi)存空間,實現(xiàn)靈活的內(nèi)存動態(tài)管理。但是鏈表失去了數(shù)組隨機(jī)讀取的優(yōu)點(diǎn),鏈表允許插入和移除表上任意位置上的節(jié)點(diǎn),但是不允許隨機(jī)存取。
      [0004]由于在可編程邏輯器件設(shè)計中,存儲資源有限,鏈表數(shù)據(jù)存儲結(jié)構(gòu)因為其靈活性已被大量的使用。但是,可編程邏輯器件設(shè)計為多為流水線設(shè)計結(jié)構(gòu),那么就有同一時刻在同一條鏈表上添加兩個或以上節(jié)點(diǎn)的可能性。為了保證鏈表結(jié)構(gòu)的正確性,在添加鏈表節(jié)點(diǎn)時,必須保證同一條鏈表同時只能操作一個節(jié)點(diǎn)。
      [0005]目前,實現(xiàn)同一條鏈表上只能同時操作一個節(jié)點(diǎn),一般的實現(xiàn)方法是使用加鎖機(jī)制管理鏈表。對于一個高性能的,需要經(jīng)常進(jìn)行大規(guī)模運(yùn)算的系統(tǒng),流水線結(jié)構(gòu)是提高邏輯吞吐量從而增強(qiáng)計算性能的一個重要辦法。而流水線結(jié)構(gòu)要求流水線上的數(shù)據(jù)能夠流動起來,這樣吞吐量才能達(dá)到滿意的效果,但是通過加鎖來避免鏈表建立錯誤的辦法,就會經(jīng)常打斷流水線操作。并且,加鎖操作還會影響流水線上的本節(jié)點(diǎn)之后的節(jié)點(diǎn),從而嚴(yán)重降低系統(tǒng)的吞吐量。

      【發(fā)明內(nèi)容】

      [0006]有鑒于此,本發(fā)明提供一種無鎖鏈表管理裝置,包括命令區(qū)分模塊、新建存儲模塊以及鏈表操作模塊,其中:
      [0007]命令區(qū)分模塊,用于區(qū)分鏈表節(jié)點(diǎn)命令的命令類型,提取出新建鏈表節(jié)點(diǎn)命令;
      [0008]新建存儲模塊,用于存儲命令區(qū)分模塊提取出的新建鏈表節(jié)點(diǎn)命令;
      [0009]鏈表操作模塊,從存儲模塊中逐個調(diào)取新建鏈表節(jié)點(diǎn)命令并進(jìn)行處理。
      [0010]進(jìn)一步地,命令區(qū)分模塊中提取新建鏈表節(jié)點(diǎn)命令之前還包括去冗余模塊,用于將接收到的鏈表節(jié)點(diǎn)命令中重復(fù)的命令聚合為一個命令,以確保每個命令都是唯一的。
      [0011]進(jìn)一步地,在去冗余模塊接收到鏈表節(jié)點(diǎn)命令之前包括,將進(jìn)入鏈表流水線的鏈表節(jié)點(diǎn)命令分組發(fā)送至去冗余模塊。
      [0012]優(yōu)選地,對比組內(nèi)鏈表節(jié)點(diǎn)的命令,當(dāng)多個鏈表節(jié)點(diǎn)命令的命令類型和節(jié)點(diǎn)符號同時相同時則為重復(fù)的命令。
      [0013]進(jìn)一步地,命令類型為新建鏈表節(jié)點(diǎn)命令、刪除鏈表節(jié)點(diǎn)命令、查找鏈表節(jié)點(diǎn)命令以及更新鏈表節(jié)點(diǎn)命令。
      [0014]本發(fā)明在管理鏈表時不需要加鎖操作,保證鏈表操作流水線上只有一個鏈表新建命令,直接讓鏈表節(jié)點(diǎn)進(jìn)入鏈表操作的流水線上,將流水線的動作流動起來,達(dá)到系統(tǒng)理想的吞吐量性能。利用新建存儲模塊存儲新建鏈表節(jié)點(diǎn)命令,避免了在無鎖的鏈表管理機(jī)制下有多個用戶同時新建鏈表節(jié)點(diǎn)時,出現(xiàn)鏈表節(jié)點(diǎn)被替換而導(dǎo)致鏈表建立錯誤的問題。
      【附圖說明】
      [0015]圖1是本發(fā)明實施例中無鎖鏈表管理裝置的結(jié)構(gòu)示意圖;
      [0016]圖2是本發(fā)明實施例中無鎖鏈表管理裝置邏輯流程圖;
      [0017]圖3是本發(fā)明實施例中無鎖鏈表管理裝置執(zhí)行流程圖。
      【具體實施方式】
      [0018]目前的可編程邏輯器件設(shè)計多為流水線設(shè)計結(jié)構(gòu),以FPGA為例,當(dāng)有多人同時對一條鏈表進(jìn)行鏈表節(jié)點(diǎn)命令的操作時,就有同一時刻在同一條鏈表上添加兩個或兩個以上節(jié)點(diǎn)的可能性,則會導(dǎo)致多個節(jié)點(diǎn)同時添加在同一條鏈表的同一個位置,那么就會發(fā)生之前的節(jié)點(diǎn)會被之后的節(jié)點(diǎn)替換,從而致使鏈表建立錯誤。為了保證鏈表結(jié)構(gòu)的正確性,在添加鏈表節(jié)點(diǎn)時,必須保證同一條鏈表同時只能操作一個節(jié)點(diǎn),一般的實現(xiàn)方法是使用加鎖機(jī)制管理鏈表。具體實現(xiàn)為:當(dāng)有用戶對鏈表節(jié)點(diǎn)進(jìn)行操作時,首先對該鏈表進(jìn)行加鎖,以鏈表頭地址為關(guān)鍵詞做一個加鎖操作,加鎖成功后才能對該鏈表進(jìn)行鏈表節(jié)點(diǎn)命令的操作,對鏈表節(jié)點(diǎn)的命令操作完成后對該鏈表解鎖,此時才可以處理下一個節(jié)點(diǎn)。如有其它用戶在此期間也需對該鏈表進(jìn)行鏈表節(jié)點(diǎn)的命令操作時,由于該鏈表已經(jīng)加鎖,所以無法對該鏈表進(jìn)行操作,只能待上一個節(jié)點(diǎn)命令解鎖后方可對其進(jìn)行操作。對于一個高性能的,需要經(jīng)常進(jìn)行大規(guī)模運(yùn)算的系統(tǒng),流水線結(jié)構(gòu)是提高邏輯吞吐量從而增強(qiáng)計算性能的一個重要辦法。而流水線結(jié)構(gòu)要求流水線上的數(shù)據(jù)能夠流動起來,這樣吞吐量才能達(dá)到滿意的效果。但是,通過使用加鎖方法來管理鏈表,雖然避免了鏈表建立錯誤的辦法,卻會經(jīng)常打斷流水線操作,并且還會影響流水線上的本節(jié)點(diǎn)之后的節(jié)點(diǎn),從而嚴(yán)重降低系統(tǒng)的吞吐量。
      [0019]本發(fā)明提供一種新的鏈表管理機(jī)制解決以上問題,在優(yōu)選的實施方式中,本發(fā)明提供一種無鎖鏈表管理裝置,請參考圖1,該裝置包括命令區(qū)分模塊、新建存儲模塊以及鏈表操作模塊,通過對進(jìn)入鏈表操作流水線上的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行預(yù)處理,并且增加一個新建存儲模塊,儲存新建鏈表節(jié)點(diǎn)的命令,達(dá)到不需要加鎖操作就能保證鏈表建立正確的方法。如圖2所示,該裝置在運(yùn)行過程中執(zhí)行如下處理流程:
      [0020]步驟201,命令區(qū)分模塊區(qū)分鏈表節(jié)點(diǎn)命令的命令類型,提取出新建鏈表節(jié)點(diǎn)命令;
      [0021]步驟202,新建存儲模塊儲存命令區(qū)分模塊提取出的新建鏈表節(jié)點(diǎn)命令;
      [0022]步驟203,鏈表操作模塊從新建存儲模塊中調(diào)取新建鏈表節(jié)點(diǎn)命令并逐個處理。
      [0023]請參考圖3,在本發(fā)明中,為了保證去冗余模塊的有效進(jìn)行,首先將進(jìn)入鏈表操作流水線的待操作鏈表節(jié)點(diǎn)的命令進(jìn)行分組,優(yōu)選地以16個命令為一組輸入去冗余模塊,當(dāng)然也可以不滿16個或多于16個,該參數(shù)可自行設(shè)定。去冗余模塊接收到此16個一組的鏈表節(jié)點(diǎn)命令后,對比該組命令的命令類型和節(jié)點(diǎn)符號。鏈表節(jié)點(diǎn)的命令類型分為以下幾種:添加節(jié)點(diǎn)命令、刪除節(jié)點(diǎn)命令、更新節(jié)點(diǎn)命令以及查找節(jié)點(diǎn)命令。當(dāng)兩個或多個待操作鏈表節(jié)點(diǎn)命令的命令類型和節(jié)點(diǎn)符號同時相同時則為重復(fù)的命令,當(dāng)檢測到重復(fù)的命令時去冗余模塊則將相同的命令丟掉或者聚合至僅剩下一個,保證一組命令通過去冗余模塊后,每一個命令在組內(nèi)都是唯一的命令。
      [0024]例如,將進(jìn)入鏈表操作流水線的鏈表節(jié)點(diǎn)命令,為提高工作效率以16個鏈表節(jié)點(diǎn)命令分為一組輸入去冗余模塊,我們將16個鏈表節(jié)點(diǎn)命令分別命名為:A1,BI,Cl,Dl,El,F(xiàn)l, Gl, Al,Al,BI, B2, Cl,Dl, Al,Gl, El。其中數(shù)字代表命令類型,字母代表節(jié)點(diǎn)符號,那么,這16個命令通過去冗余模塊后,將相同的命令丟掉或者聚合為I個,結(jié)果只剩下Al ,BI,B2,Cl,Dl, El, Fl, Gl等8個組內(nèi)無重復(fù)的命令。
      [0025]當(dāng)有多個用戶同時在一條鏈表上添加新的鏈表節(jié)點(diǎn)時,節(jié)點(diǎn)指針可能會同時指向鏈表的同一個節(jié)點(diǎn)位置,此時就會出現(xiàn)多個新建鏈表節(jié)點(diǎn)占用一個鏈表中節(jié)點(diǎn)位置的情況,那么就會發(fā)生之前的新建鏈表節(jié)點(diǎn)會被之后的新建鏈表節(jié)點(diǎn)替換,從而造成鏈表建立錯誤。在本發(fā)明中相應(yīng)新增加一個單獨(dú)的新建存儲模塊,用于儲存新建鏈表節(jié)點(diǎn)的命令,新建鏈表節(jié)點(diǎn)命令又為添加鏈表節(jié)點(diǎn)的命令。在存儲新建鏈表節(jié)點(diǎn)命令之前,命令區(qū)分模塊將去冗余模塊輸出的無重復(fù)的鏈表節(jié)點(diǎn)命令進(jìn)行分類,把新建鏈表節(jié)點(diǎn)的命令單獨(dú)提出,放入單獨(dú)的新建存儲模塊,等待被調(diào)用;此時除新建鏈表節(jié)點(diǎn)命令外的其他鏈表節(jié)點(diǎn)命令則可以直接逐個處理,以保證流水線的連續(xù)性,新建鏈表節(jié)點(diǎn)命令則從新建存儲模塊中逐個調(diào)取處理。需要注意的是,在鏈表操作模塊中,在一個鏈表節(jié)點(diǎn)命令處理完成后才可調(diào)用下一個命令,根據(jù)進(jìn)入流水線的先后順序逐個處理鏈表節(jié)點(diǎn)命令。
      [0026]綜上所述,本發(fā)明實施例提供的無鎖鏈表在執(zhí)行新建鏈表節(jié)點(diǎn)操作時較現(xiàn)有技術(shù)相比,需要額外的增加一個新建存儲模塊,將經(jīng)過區(qū)分鏈表節(jié)點(diǎn)命令類型后獲知的新建鏈表節(jié)點(diǎn)提取出來儲存于新增的新建存儲模塊,再逐個調(diào)取進(jìn)行處理。從而使得鏈表不需要加鎖操作,直接讓節(jié)點(diǎn)進(jìn)入鏈表操作的流水線上,將流水線的動作流動起來,達(dá)到系統(tǒng)理想的吞吐量性能。還避免了在無鎖的鏈表管理機(jī)制下有多個用戶同時新建鏈表節(jié)點(diǎn)時,出現(xiàn)鏈表節(jié)點(diǎn)被替換而導(dǎo)致鏈表建立錯誤的問題。
      [0027]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
      【主權(quán)項】
      1.一種無鎖鏈表管理裝置,包括命令區(qū)分模塊、新建存儲模塊以及鏈表操作模塊,其特征在于: 命令區(qū)分模塊,用于區(qū)分鏈表節(jié)點(diǎn)命令的命令類型,提取出新建鏈表節(jié)點(diǎn)命令; 新建存儲模塊,用于存儲命令區(qū)分模塊提取出的新建鏈表節(jié)點(diǎn)命令; 鏈表操作模塊,從存儲模塊中逐個調(diào)取新建鏈表節(jié)點(diǎn)命令并進(jìn)行處理。
      2.如權(quán)利要求1所述的裝置,其特征在于,所述命令區(qū)分模塊中提取新建鏈表節(jié)點(diǎn)命令之前還包括去冗余模塊,用于將接收到的鏈表節(jié)點(diǎn)命令中重復(fù)的命令聚合為一個命令,以確保每個命令都是唯一的。
      3.如權(quán)利要求2所述的裝置,其特征在于,在去冗余模塊接收到鏈表節(jié)點(diǎn)命令之前進(jìn)一步包括,將進(jìn)入鏈表流水線的鏈表節(jié)點(diǎn)命令分組發(fā)送至去冗余模塊。
      4.如權(quán)利要求2所述的裝置,其特征在于,所述去冗余模塊具體用于,對比組內(nèi)鏈表節(jié)點(diǎn)的命令,當(dāng)多個鏈表節(jié)點(diǎn)命令的命令類型和節(jié)點(diǎn)符號同時相同時則為重復(fù)的命令。
      5.如權(quán)利要求1所述的裝置,其特征在于,所述命令類型包括新建鏈表節(jié)點(diǎn)命令、刪除鏈表節(jié)點(diǎn)命令、查找鏈表節(jié)點(diǎn)命令以及更新鏈表節(jié)點(diǎn)命令。
      6.如權(quán)利要求1所述的裝置,其特征在于,所述鏈表操作模塊進(jìn)一步用于,逐個處理其他類型的鏈表節(jié)點(diǎn)命令。
      【專利摘要】本發(fā)明提供了一種無鎖鏈表管理裝置,包括命令區(qū)分模塊、新建存儲模塊以及鏈表操作模塊,其中,命令區(qū)分模塊,用于區(qū)分鏈表節(jié)點(diǎn)命令的命令類型,提取出新建鏈表節(jié)點(diǎn)命令;新建存儲模塊,用于存儲命令區(qū)分模塊提取出的新建鏈表節(jié)點(diǎn)命令;鏈表操作模塊,用于從存儲模塊中逐個調(diào)取新建鏈表節(jié)點(diǎn)命令以及區(qū)分模塊輸出的其他命令進(jìn)行處理。本發(fā)明利用新建存儲模塊存儲新建鏈表節(jié)點(diǎn)命令,保證鏈表操作流水線上只有一個新建鏈表節(jié)點(diǎn)命令,避免了出現(xiàn)鏈表節(jié)點(diǎn)被替換而導(dǎo)致鏈表建立錯誤的問題。
      【IPC分類】G06F11-36
      【公開號】CN104572432
      【申請?zhí)枴緾N201310512207
      【發(fā)明人】熊澤磊
      【申請人】杭州迪普科技有限公司
      【公開日】2015年4月29日
      【申請日】2013年10月24日
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1