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

      數(shù)據(jù)流機的制作方法

      文檔序號:6482784閱讀:247來源:國知局
      專利名稱:數(shù)據(jù)流機的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明一般涉及數(shù)據(jù)處理方法和設(shè)備,尤其涉及用于在數(shù)字硬件中通過使用精細粒度并發(fā)和大流水線深度的數(shù)據(jù)流機執(zhí)行高速數(shù)據(jù)處理的方法和設(shè)備。
      背景技術(shù)
      近年來,已經(jīng)使用許多不同的易用編程語言解決方案來進行硬件描述,以提供數(shù)字電路設(shè)計的快速和容易的方式。當(dāng)對數(shù)據(jù)流機進行編程時,可以使用不同于硬件描述語言的語言。原則上,用于在數(shù)據(jù)流機上執(zhí)行特定任務(wù)的算法描述只須包括描述本身,而要直接在集成電路中執(zhí)行的算法描述必須包括該算法在硬件中的特定實現(xiàn)的許多細節(jié)。例如,硬件描述必須包含有關(guān)寄存器的布局的信息,以便規(guī)定最優(yōu)時鐘頻率,使用哪些乘法器等等。
      許多年來,數(shù)據(jù)流機被認為是并行計算的良好模型,因此已經(jīng)進行許多嘗試來設(shè)計高效的數(shù)據(jù)流機。出于各種原因,較早的數(shù)據(jù)流機設(shè)計嘗試與其它可用并行計算技術(shù)相比在計算性能方面產(chǎn)生不良結(jié)果。
      當(dāng)翻譯程序源代碼時,當(dāng)前可用的多數(shù)編譯器使用數(shù)據(jù)流分析和數(shù)據(jù)流描述(被稱為數(shù)據(jù)流圖或DFG)以便優(yōu)化所編譯程序的性能。對算法執(zhí)行的數(shù)據(jù)流分析產(chǎn)生數(shù)據(jù)流圖。數(shù)據(jù)流圖說明算法內(nèi)存在的數(shù)據(jù)依賴。更具體地,數(shù)據(jù)流圖通常包括指示算法對所處理的數(shù)據(jù)執(zhí)行的特定操作的節(jié)點,和指示圖中節(jié)點之間的互連的弧。因此,數(shù)據(jù)流圖是特定算法的抽象描述,并且被用于分析算法。另一方面,數(shù)據(jù)流機是可以基于數(shù)據(jù)流圖實際執(zhí)行該算法的計算機器。
      與例如馮諾依曼體系結(jié)構(gòu)(個人計算機中的普通處理器是馮諾依曼體系結(jié)構(gòu)的例子)的控制流設(shè)備相比較,數(shù)據(jù)流機以根本不同的方式操作。在數(shù)據(jù)流機中,程序是數(shù)據(jù)流圖,而不是要由處理器執(zhí)行的操作系列。數(shù)據(jù)被組織成稱為標(biāo)記(tokens)、位于數(shù)據(jù)流圖的弧上的包。標(biāo)記能夠包含將由通過弧形連接的節(jié)點操作的任何數(shù)據(jù)結(jié)構(gòu),類似于位,浮點數(shù),數(shù)組等等。根據(jù)數(shù)據(jù)流機的類型,每個弧形可以至多擁有單個標(biāo)記(靜態(tài)數(shù)據(jù)流機),固定數(shù)量的標(biāo)記(同步數(shù)據(jù)流機),或不定數(shù)量的標(biāo)記(動態(tài)數(shù)據(jù)流機)。
      數(shù)據(jù)流機中的節(jié)點等待標(biāo)記出現(xiàn)在足夠數(shù)量的輸入弧上,使得可以執(zhí)行其操作,因此它們消費那些標(biāo)記并且在其輸出弧上產(chǎn)生新標(biāo)記。例如執(zhí)行2個標(biāo)記的加法的節(jié)點將進行等待,直到標(biāo)記已經(jīng)出現(xiàn)在其兩個輸入上,消費這2個標(biāo)記并且接著產(chǎn)生作為其輸出弧形上的新標(biāo)記的結(jié)果(在這種情況下為輸入標(biāo)記的數(shù)據(jù)的和)。
      不是象在CPU中進行的那樣根據(jù)條件分支選擇不同操作以對數(shù)據(jù)進行操作,數(shù)據(jù)流機根據(jù)條件分支將數(shù)據(jù)引導(dǎo)到不同節(jié)點。于是,數(shù)據(jù)流機具有可以有選擇地在特定輸出上產(chǎn)生標(biāo)記的節(jié)點(稱作開關(guān)節(jié)點)以及可以有選擇地消費特定輸入上的標(biāo)記的節(jié)點(稱作合并節(jié)點)。公共數(shù)據(jù)流操作節(jié)點的另一個例子是有選擇地從數(shù)據(jù)流中清除標(biāo)記的門節(jié)點??梢源嬖谠S多其它數(shù)據(jù)流操作節(jié)點。
      圖中的每個節(jié)點可以潛在地獨立于該圖中的所有其它節(jié)點地執(zhí)行其操作。一旦一個節(jié)點在其相關(guān)輸入弧上具有數(shù)據(jù),并且存在空間以在其相關(guān)輸出弧上產(chǎn)生結(jié)果,則該節(jié)點可以執(zhí)行其操作(稱為觸發(fā)(firing))。無論其它節(jié)點是否能夠觸發(fā),節(jié)點均會觸發(fā)。于是,不存在例如控制流設(shè)備中的執(zhí)行節(jié)點操作的特定順序;數(shù)據(jù)流圖中的操作執(zhí)行順序是無關(guān)的。執(zhí)行順序可以例如是可以觸發(fā)的所有節(jié)點的同時執(zhí)行。
      如上所述,根據(jù)其設(shè)計,數(shù)據(jù)流機通常被分成3個不同類別靜態(tài)數(shù)據(jù)流機,動態(tài)數(shù)據(jù)流機,和同步數(shù)據(jù)流機。
      在靜態(tài)數(shù)據(jù)流機中,相應(yīng)數(shù)據(jù)流圖中的每個弧在每個時刻可以只擁有單個標(biāo)記。
      在動態(tài)數(shù)據(jù)流機中,每個弧可以擁有等待接收節(jié)點準備好接受它們的不定數(shù)量的標(biāo)記。這允許構(gòu)造當(dāng)設(shè)計數(shù)據(jù)流機時遞歸深度未知的遞歸過程。這種過程可以反置遞歸中處理的數(shù)據(jù)。當(dāng)在完成遞歸之后執(zhí)行計算時,這會導(dǎo)致標(biāo)記的錯誤匹配。
      通過在協(xié)議中增加指示每個標(biāo)記的序號的標(biāo)記(marker),可以處理上述情況。連續(xù)監(jiān)視遞歸內(nèi)的標(biāo)記的序號,并且當(dāng)一個標(biāo)記退出遞歸時,它不被允許繼續(xù)前進,只要它不能匹配遞歸外的標(biāo)記。
      在遞歸不是尾遞歸的情況下,在每次遞歸調(diào)用時,必須以和在使用普通(馮諾依曼)處理器執(zhí)行遞歸時將上下文存儲在堆棧中相同的方式將上下文存儲在緩沖區(qū)中。最終,動態(tài)數(shù)據(jù)流機可以并行執(zhí)行數(shù)據(jù)相關(guān)遞歸。
      在沒有能力使標(biāo)記在接收節(jié)點準備其自身的同時在弧上等待的情況下,同步數(shù)據(jù)流機能夠進行操作。取而代之,事先計算每個節(jié)點的標(biāo)記的產(chǎn)生和消費之間的關(guān)系。通過這個信息,能夠針對可以同時位于弧上的標(biāo)記的數(shù)量確定如何放置節(jié)點以及向弧分配大小。于是能夠保證每個節(jié)點產(chǎn)生與后續(xù)節(jié)點消費的標(biāo)記一樣多的標(biāo)記。于是可以這樣設(shè)計系統(tǒng),使得每個節(jié)點始終可以產(chǎn)生數(shù)據(jù),因為后續(xù)節(jié)點將總是消費數(shù)據(jù)。缺點是該構(gòu)造中可能不存在例如數(shù)據(jù)相關(guān)遞歸的不確定延遲。
      數(shù)據(jù)流機多數(shù)通常通過傳統(tǒng)CPU中運行的計算機程序來付諸實踐。通常使用計算機集群,或某種印制電路板上的CPU陣列。使用數(shù)據(jù)流機的主要目的曾經(jīng)是利用其并行性來構(gòu)造試驗性超級計算機。已經(jīng)進行許多嘗試來直接用硬件構(gòu)造數(shù)據(jù)流機。這已經(jīng)通過用專用集成電路(ASIC)創(chuàng)建多個處理器來實現(xiàn)。與在電路板上使用處理器相比,這個解決方案的主要優(yōu)點是相同ASIC上的處理器之間的更高通信速率。到目前為止,在使用數(shù)據(jù)流機進行計算方面沒有任何嘗試取得商業(yè)成功。
      現(xiàn)場可編程門陣列(FPGA)和其它可編程邏輯器件(PLD)也可以被用于硬件構(gòu)造。FPGA是可在運行時刻重新配置的硅芯片。它們基于小型隨機訪問存儲器,通常為靜態(tài)隨機存取存儲器(SRAM)的陣列。每個SRAM擁有用于布爾函數(shù)的查找表,于是允許FPGA執(zhí)行任何邏輯操作。FPGA也類似地擁有允許信號從SRAM行進到SRAM的可配置路由資源。
      通過向SRAM分配硅芯片的邏輯操作并且配置路由資源,可以實現(xiàn)任何足夠小型以便安裝在FPGA表面上的硬件構(gòu)造。與ASIC相比,F(xiàn)PGA能夠在相同量的硅表面上實現(xiàn)更少的邏輯操作。FPGA的優(yōu)點是能夠簡單地通過向SRAM查找表輸入新值并且改變路由來將其轉(zhuǎn)換為任何其他硬件構(gòu)造。FPGA能夠被視為能夠接受任何硬件構(gòu)造的空硅表面,而且能夠以非常短的時間(小于100毫秒)轉(zhuǎn)變?yōu)槿魏纹渌布?gòu)造。
      其它公共PLD可以被熔斷連接,于是被永久配置。熔斷連接PLD優(yōu)于ASIC的主要優(yōu)點是容易構(gòu)造。為制造ASIC,需要非常昂貴和復(fù)雜的工藝。相反,能夠通過簡單工具在幾分鐘內(nèi)構(gòu)造PLD。存在若干用于PLD的進化技術(shù),其可以克服熔斷連接PLD和FPGA的某些缺點。
      一般地,為了對FPGA進行編程,必須使用由FPGA的廠商提供的放置和接通工具(place-and-route tools)。放置和接通軟件通常從合成軟件接受連線表或從硬件描述語言(HDL)接受其直接合成的源代碼。放置和接通軟件于是在描述文件中輸出用于在編程單元中對FPGA進行編程的數(shù)字控制參數(shù)。類似技術(shù)被用于其它PLD。
      當(dāng)設(shè)計集成電路時,通常將電路設(shè)計為狀態(tài)機,因為它們提供簡化硬件的構(gòu)造的框架。當(dāng)實現(xiàn)其中數(shù)據(jù)將以取決于先前計算的各種模式流過邏輯操作的復(fù)雜數(shù)據(jù)流時,狀態(tài)機尤其有用。
      狀態(tài)機也允許重用硬件單元,于是優(yōu)化電路的物理尺寸。這允許以更低的成本制造集成電路。
      前面使用專用硬件的數(shù)據(jù)流機的構(gòu)造基于彼此連接狀態(tài)機或?qū)S肅PU(作為狀態(tài)機的特例)。這些通常與專用路由邏輯,在某些情況下為專用存儲器連接。更具體地,在數(shù)據(jù)流機的較早設(shè)計中,狀態(tài)機被用于仿真數(shù)據(jù)流機的行為。此外,較早的數(shù)據(jù)流機通常也具有動態(tài)數(shù)據(jù)流機的形式,所以通常使用專用標(biāo)記匹配和重定序部件。
      US 5,021,947公開了如上所述,通過在三維結(jié)構(gòu)中安排多達512個處理單元(PE)來仿真數(shù)據(jù)流機的多處理系統(tǒng)。每個PE用其自身的用于程序和數(shù)據(jù)存儲的本地存儲器構(gòu)成一個完整的VLSI實現(xiàn)的計算機。以包含要處理的數(shù)據(jù)以及標(biāo)識目的PE的地址和標(biāo)識PE內(nèi)的操作裝置的地址的數(shù)據(jù)分組的形式在不同PE之間傳送數(shù)據(jù)。此外,互連PE的通信網(wǎng)絡(luò)被設(shè)計成可靠的,其中自動對錯亂的消息進行重試,具有分布式總線仲裁,可選路徑分組路由等等。另外,計算機的模塊化性質(zhì)允許增加更多處理單元以滿足各種吞吐率和可靠性需求。
      因此,根據(jù)US 5,021,947的仿真數(shù)據(jù)流機的結(jié)構(gòu)非常復(fù)雜,并且沒有完全利用數(shù)據(jù)流圖中已經(jīng)存在的數(shù)據(jù)流結(jié)構(gòu)。并且,機器中來回傳送的分組的監(jiān)視意味著增加更多額外的邏輯電路。
      Verdoscia等人的文獻″Conditional and Iterative StructuresUsing a Homogeneous Data Flow Graph Model″也公開了包括獲得同構(gòu)數(shù)據(jù)流的一組處理器的數(shù)據(jù)流機。在公開于相同作者的文獻″ActorHardware Design for Static Dataflow Model″中的稱作″Alfa″的設(shè)備中實現(xiàn)了數(shù)據(jù)流機。然而這些文獻公開的機器沒有針對較早建立的數(shù)據(jù)流圖的結(jié)構(gòu)進行優(yōu)化,即在建立數(shù)據(jù)流圖之后執(zhí)行許多步驟,這些步驟使得機器適于使用計算機形式的硬件單元來實現(xiàn)。因此,這些文獻公開的機器利于通過一組相同硬件單元(計算機)的同質(zhì)數(shù)據(jù)流,但是沒有公開如何以在計算效率方面最優(yōu)的方式通過硬件實現(xiàn)數(shù)據(jù)流圖。
      通過建立具有大量數(shù)據(jù)流機形式的處理器的超級計算機,希望實現(xiàn)高度的并行性。已經(jīng)進行嘗試,其中處理器由許多CPU或許多ASIC構(gòu)成,均包括許多狀態(tài)機。由于較早數(shù)據(jù)流機的設(shè)計已經(jīng)包含在ASIC中使用狀態(tài)機(通常具有處理器的形式),在類似于FPGA的可編程邏輯設(shè)備中實現(xiàn)數(shù)據(jù)流機的最直接方法也將是使用狀態(tài)機。所有先前已知的數(shù)據(jù)流機的一般特性是所建立的數(shù)據(jù)流圖的節(jié)點不對應(yīng)于最終硬件實現(xiàn)中的特定硬件單元(公知為功能單元,F(xiàn)U)。相反,在特定時刻正好可用的硬件單元被用于執(zhí)行由數(shù)據(jù)流圖中受影響的節(jié)點指定的計算。如果數(shù)據(jù)流圖中的特定節(jié)點要被多于一次地執(zhí)行,則每當(dāng)執(zhí)行該節(jié)點時可以使用不同功能單元。
      此外,前面的數(shù)據(jù)流機已經(jīng)全部通過使用狀態(tài)機或處理器執(zhí)行數(shù)據(jù)流機的功能來實現(xiàn)。每個狀態(tài)機能夠執(zhí)行數(shù)據(jù)流圖中的任何節(jié)點的功能。這需要允許每個節(jié)點在任何功能單元中執(zhí)行。由于每個狀態(tài)機能夠執(zhí)行任何節(jié)點的功能,與當(dāng)前執(zhí)行節(jié)點無關(guān)的任何其他節(jié)點所需的硬件將會休眠。應(yīng)當(dāng)注意,狀態(tài)機(有時具有用于標(biāo)記操作的支持硬件)是數(shù)據(jù)流機其自身的實現(xiàn)。情況并不是這樣,即數(shù)據(jù)流機由某些其它裝置實現(xiàn),并且正好將狀態(tài)機包含在其功能節(jié)點中。
      當(dāng)前使用的多數(shù)編程語言是所謂的命令語言,例如Java,F(xiàn)ortran和Basic語言。在不放松并行性的情況下,這些語言幾乎不可能或至少非常難以改寫為數(shù)據(jù)流。
      相反,使用功能語言而不是命令語言可簡化數(shù)據(jù)流機的設(shè)計。功能語言的特征在于它們表現(xiàn)出稱作引用透明的特性。這意味著只有即時分量表達式的含義或值在確定較大復(fù)合表達式的含義時有意義。由于當(dāng)且僅當(dāng)它們具有相同含義時才是相等的,因此引用透明意味著在較大表達式的上下文中能夠互換相等子表達式以提供相等結(jié)果。
      如果操作的執(zhí)行具有除了提供輸出數(shù)據(jù)之外的影響(例如在操作執(zhí)行期間顯示器上的讀數(shù)),它不是引用透明的,因為執(zhí)行操作的結(jié)果與不執(zhí)行操作的結(jié)果不同。針對以引用透明語言編寫的程序的全部通信被稱作副作用(side-effect)(例如存儲器訪問,讀出,等等)。
      WO 0159593公開了將算法的高級軟件描述編譯成數(shù)字硬件實現(xiàn)。通過使用編譯工具來解釋編程語言的語義,該編譯工具分析軟件描述以產(chǎn)生控制和數(shù)據(jù)流圖。于是,這個圖是用于優(yōu)化,變換和注釋的中間格式。所產(chǎn)生的圖接著被翻譯成硬件實現(xiàn)的寄存器傳送層次或連線表層次描述。分立的控制路徑被用于確定流圖中的節(jié)點應(yīng)何時向相鄰節(jié)點傳送數(shù)據(jù)。通過分割控制路徑和數(shù)據(jù)路徑可以實現(xiàn)并行處理。通過使用控制路徑,可以實現(xiàn)″波前(wavefront)處理″,這意味著通過實際硬件實現(xiàn)的數(shù)據(jù)流作為由控制路徑控制的波前。
      控制路徑的使用意味著只有該硬件的部分可以在執(zhí)行數(shù)據(jù)處理的同時使用。其余電路等待第一波前通過流圖,使得控制路徑可以啟動新的波前。
      US 6145073公開了預(yù)先設(shè)計和驗證的數(shù)據(jù)驅(qū)動的硬件核心,其被裝配為在單芯片上產(chǎn)生大型系統(tǒng)。利用1位就緒信號和1位請求信號通過專用連接在核心之間同步傳送標(biāo)記。就緒請求信號握手對于標(biāo)記傳送是必要和足夠的。并且,每個連接的核心必須至少具有有限狀態(tài)機的復(fù)雜度。最終,沒有一般觸發(fā)機制的構(gòu)思,所以沒有數(shù)據(jù)流的條件重定向能夠執(zhí)行。于是,沒有數(shù)據(jù)流機能夠用這個系統(tǒng)來建立。更確切地,用于核心之間數(shù)據(jù)交換的協(xié)議聚焦于保持核心內(nèi)的流水線的完整。
      Mihai Budiu的文獻″Application-Specific HardwareComputing Without CPUs″公開了組合可重新配置硬件和編譯器技術(shù)以產(chǎn)生專用硬件的通用計算體系結(jié)構(gòu)。每個靜態(tài)程序指令由專用硬件實現(xiàn)來表示。程序被分解成稱作分相抽象機(SAM)的較小片段,分相抽象機在硬件中被合成為狀態(tài)機,并且通過互連網(wǎng)絡(luò)來組合。在程序的執(zhí)行期間,SAM能夠處于以下3個狀態(tài)之一不活動,活動或被動。在不同SAM之間傳遞標(biāo)記,標(biāo)記允許SAM開始執(zhí)行。這意味著每次只有少數(shù)SAM可以執(zhí)行實際數(shù)據(jù)處理,其余SAM等待標(biāo)記允許執(zhí)行。通過這個過程實現(xiàn)低功耗,但是同時減少了計算容量。

      發(fā)明內(nèi)容
      本發(fā)明尋求提供一種改進數(shù)據(jù)處理系統(tǒng)的性能的方法。
      更具體地,本發(fā)明的一個目的是通過用硬件實現(xiàn)數(shù)據(jù)流機來增加計算能力,其中獲得巨大的并行性。
      本發(fā)明的另一個目的是改進可以同時使用可用硬件資源,即較大部分可用邏輯電路(門,開關(guān)等等)的利用率。
      這個目的已經(jīng)通過由高級源代碼規(guī)格產(chǎn)生數(shù)字邏輯描述的方法實現(xiàn),其中至少部分源代碼規(guī)格被編譯成多有向圖表示(multipledirected graph representation),該多有向圖表示包括具有至少一個輸入或一個輸出的功能節(jié)點,和指示功能節(jié)點之間的互連的連接。此外,針對該圖的每個功能節(jié)點定義硬件單元,其中硬件單元代表由功能節(jié)點定義的功能。針對功能節(jié)點之間的每個連接定義附加硬件單元,其中附加硬件單元代表從第一功能節(jié)點到第二功能節(jié)點的數(shù)據(jù)傳送。最終,定義該圖的每個功能節(jié)點的觸發(fā)規(guī)則,其中所述觸發(fā)規(guī)則定義功能節(jié)點在其輸出處提供數(shù)據(jù)和消費其輸入處的數(shù)據(jù)的條件。
      并且,本發(fā)明的一個目的是克服對計算效率的限制,該限制由于使用允許不同功能單元之間的數(shù)據(jù)流的專用控制路徑而出現(xiàn)在現(xiàn)有技術(shù)數(shù)據(jù)流機中。另外,與現(xiàn)有技術(shù)解決方案相比,作為數(shù)據(jù)流機中的高效數(shù)據(jù)存儲的結(jié)果,根據(jù)本發(fā)明的硬件實現(xiàn)允許提高計算能力,而無需與外部存儲器進行大量通信。
      因此,本發(fā)明以高效方式通過硬件實現(xiàn)了由數(shù)據(jù)流圖描述的功能,而無需專用互連的CPU或高級數(shù)據(jù)交換協(xié)議。本發(fā)明充分利用數(shù)據(jù)流機和RTL(寄存器傳送層次)邏輯之間語義的相似性,其中使用組合邏輯而不是CPU,并且使用硬件寄存器而不是RAM(隨機訪問存儲器),底板或以太網(wǎng)。
      本發(fā)明的另一個目的是允許由高級編程語言描述設(shè)計硅硬件。高級編程語言是側(cè)重于其自身的算法的描述,而不是特定類型硬件的算法的實現(xiàn)的編程語言。通過高級編程語言和由通過該語言編寫的程序自動設(shè)計集成電路描述的能力,可以使用軟件工程技術(shù)設(shè)計集成電路。對于能夠低成本或無成本地用許多不同硬件設(shè)計重新配置的FPGA和其它重新配置PLD,這尤其有利。
      除由許多不同的容易產(chǎn)生的硬件設(shè)計帶來的益處之外,F(xiàn)PGA和其它PLD能夠因通過高級語言進行的自動硬件描述設(shè)計而具有效率方面的益處。如果系統(tǒng)能夠挖掘出大量并行性,則能夠向盡可能大的PLD部分填充有意義操作,從而提供非常高的性能。這與通常側(cè)重于產(chǎn)生盡可能小的設(shè)計的傳統(tǒng)硬件設(shè)計形成對比。
      通過閱讀以下對優(yōu)選實施例的詳細公開可以更加清楚地理解本發(fā)明的其它目的,特征和優(yōu)點。


      下面參照附圖描述本發(fā)明的優(yōu)選實施例,其中圖1a是說明本來已知的第一數(shù)據(jù)流圖的示意圖,圖1b是說明本來已知的第二數(shù)據(jù)流圖的示意圖,圖2說明了本發(fā)明的第一實施例。
      圖3圖解了本發(fā)明的第二實施例,其中不同數(shù)據(jù)路徑的長度得到均衡。
      圖4a是根據(jù)本發(fā)明第三實施例的節(jié)點的詳細示意圖。
      圖4b說明了用于建立觸發(fā)規(guī)則的邏輯電路的例子。
      圖4c相應(yīng)說明了數(shù)據(jù)流機中節(jié)點之間的寄存器中使用的邏輯電路的例子。
      圖5a圖解了本發(fā)明的第三實施例,其中不同數(shù)據(jù)路徑的長度通過節(jié)點合并得到均衡。
      圖5b是有關(guān)圖5a中的2個節(jié)點的合并的更加詳細的圖解。
      圖6說明了根據(jù)本發(fā)明的停止截斷器的實施例。
      具體實施例方式
      一般地,通過數(shù)據(jù)流分析將源碼程序變換成數(shù)據(jù)流圖。執(zhí)行數(shù)據(jù)流分析的簡單方法是在程序的所有輸出處開始。找到每個輸出的即時源。如果它是操作,則用節(jié)點替換該操作,并且用弧將它連接到輸出。如果源是變量,則用弧替換該變量并且將其連接到輸出。針對缺少完全指定的輸入的所有弧和節(jié)點進行重復(fù)。
      圖1a說明了本來已知的數(shù)據(jù)流圖。出于清楚的原因,在本文中,術(shù)語節(jié)點被用來指示數(shù)據(jù)流圖中的功能節(jié)點。該圖中示出3個處理層次頂端節(jié)點101,102,103在其輸入處從一或多個源接收輸入數(shù)據(jù),這些數(shù)據(jù)將在其流過該圖時得到處理。頂端節(jié)點執(zhí)行的實際數(shù)學(xué),邏輯或過程性功能是特定于每個實現(xiàn)的,因為它取決于數(shù)據(jù)流圖所源于的源代碼。例如,第一節(jié)點101可以對來自2個輸入的數(shù)據(jù)執(zhí)行簡單加法,第二節(jié)點102可以從第二輸入處接收的數(shù)據(jù)中減去第一輸入處接收的數(shù)據(jù),第三節(jié)點103可以例如用其輸入處接收的2個數(shù)據(jù)執(zhí)行定點乘法。每個節(jié)點的輸入數(shù)量,每個節(jié)點中執(zhí)行的實際處理等等對于不同實現(xiàn)當(dāng)然可以是不同的,并且不限于上述例子。例如,節(jié)點可以執(zhí)行更加復(fù)雜的計算,甚至訪問外部存儲器,這將在下面描述。
      數(shù)據(jù)從第一節(jié)點層次流向第二節(jié)點層次,其中在這種情況下來自節(jié)點101和102的數(shù)據(jù)被從節(jié)點101和102的輸出傳送到節(jié)點104的輸入。根據(jù)上述討論,節(jié)點104根據(jù)其輸入處接收的信息執(zhí)行特定任務(wù)。
      在第二層次的處理之后,數(shù)據(jù)被從節(jié)點104的輸出傳送到節(jié)點105的第一輸入,該節(jié)點位于第三層次。通過圖1可以發(fā)現(xiàn),在節(jié)點105的第二輸入處接收來自層次1的節(jié)點103的輸出的數(shù)據(jù)。節(jié)點103和105之間沒有存在第二層次節(jié)點的事實意味著當(dāng)在節(jié)點105的第一輸入節(jié)點處可得到數(shù)據(jù)之前將在節(jié)點105的第二輸入處可得到來自節(jié)點103的數(shù)據(jù)(假定每個節(jié)點處的組合延遲相等)。為了高效地處理這種情況,將為每個節(jié)點提供觸發(fā)規(guī)則,觸發(fā)規(guī)則定義了使節(jié)點在其輸出處提供數(shù)據(jù)的條件。
      更具體地,觸發(fā)規(guī)則是控制數(shù)據(jù)流圖中的數(shù)據(jù)流的機制。通過使用觸發(fā)規(guī)則,在根據(jù)節(jié)點的功能變換數(shù)據(jù)的同時,數(shù)據(jù)被從輸入傳送到節(jié)點的輸出。僅當(dāng)在節(jié)點的輸入處真實存在可用數(shù)據(jù)時,才可以進行來自該輸入的數(shù)據(jù)的消費。相應(yīng)地,如果不存在來自前一計算的阻塞路徑的數(shù)據(jù)(即后續(xù)節(jié)點一定消費了前面的數(shù)據(jù)項),則只可以在輸出處產(chǎn)生數(shù)據(jù)。然而在某些情況下,可以在輸出處產(chǎn)生數(shù)據(jù),即使舊數(shù)據(jù)阻塞路徑;輸出處的舊數(shù)據(jù)接著將被新數(shù)據(jù)替換。
      一般觸發(fā)規(guī)則的規(guī)格通常包括1)針對節(jié)點的每個輸入、為了使該節(jié)點消費輸入數(shù)據(jù)的條件,2)針對節(jié)點的每個輸出、為了使該節(jié)點在輸出處產(chǎn)生數(shù)據(jù)的條件,和3)執(zhí)行節(jié)點的功能的條件。
      條件通常取決于輸入數(shù)據(jù)的值,輸入或輸出處有效數(shù)據(jù)的存在,應(yīng)用于輸入的功能的結(jié)果或功能的狀態(tài),但是原則上可以取決于系統(tǒng)可用的任何數(shù)據(jù)。
      通過針對系統(tǒng)的節(jié)點101-105建立一般觸發(fā)規(guī)則,能夠控制各種程序而無需專用控制路徑。然而,通過觸發(fā)規(guī)則,針對某些特殊情況能夠?qū)崿F(xiàn)控制流。另一個特例是沒有觸發(fā)規(guī)則的系統(tǒng),其中所有節(jié)點101-105僅當(dāng)在節(jié)點101-105的所有輸入處可得到數(shù)據(jù)時進行操作。
      通過合并節(jié)點能夠提供觸發(fā)規(guī)則的功能的特定例子。通過這種節(jié)點,能夠控制數(shù)據(jù)流,而無需控制流。合并節(jié)點通常具有2個數(shù)據(jù)輸入,其中將選擇來自其中一個數(shù)據(jù)輸入的數(shù)據(jù)。此外,它也具有用于選擇從其獲取數(shù)據(jù)的數(shù)據(jù)輸入的控制輸入。最終,它具有一個數(shù)據(jù)輸出,在該數(shù)據(jù)輸出處傳送所選的輸入數(shù)據(jù)值。
      例如,假定節(jié)點具有2個輸入T和F。在輸入C上接收控制節(jié)點的條件,在輸出R上提供結(jié)果。下面的觸發(fā)規(guī)則將在節(jié)點的輸出處產(chǎn)生數(shù)據(jù),即使只存在在一個輸入處可得到的數(shù)據(jù)。在這種情況下,例如如果C=1,則沒有數(shù)據(jù)需要存在于輸入F處。即,消費節(jié)點的輸入處的數(shù)據(jù)的條件是(C=1AND T=x)OR(C=0AND F=x)其中x表示存在有效值。
      此外,提供節(jié)點的輸出處的數(shù)據(jù)的條件是(C=1AND T=x)OR(C=0AND F=x)并且該節(jié)點的功能是R=IF(C==1)T ELSE F另一種用于控制數(shù)據(jù)流的節(jié)點是開關(guān)。開關(guān)節(jié)點通常具有2個輸出T和F,一個數(shù)據(jù)輸入D和一個控制輸入C。當(dāng)在數(shù)據(jù)輸入和控制輸入處可得到數(shù)據(jù)時,節(jié)點將在其輸出之一處提供數(shù)據(jù)。消費來自輸入的數(shù)據(jù)的條件是C=x AND D=x并且在輸出處提供數(shù)據(jù)的條件是
      TC=1 AND D=xFC=0 AND D=x并且節(jié)點的功能是T=IF(C==1)DF=IF(C==0)D圖1b說明了用于控制數(shù)據(jù)流機中的數(shù)據(jù)流的合并和開關(guān)節(jié)點的使用。在這種情況下,數(shù)據(jù)流機根據(jù)以下函數(shù)計算s的值s=&Sigma;i=1nf(xi)]]>遵循上述推論,能夠針對所有類型的可能節(jié)點建立觸發(fā)規(guī)則,例如真門(True-gates)(一個數(shù)據(jù)輸入D,一個控制輸入C,一個輸出R和函數(shù)R=IF(C==1)D);不確定優(yōu)先合并(2個數(shù)據(jù)輸入D1和D2,一個輸出R和函數(shù)R=IF(D1)D1 ELSE IF(D2)D2);加法(2個數(shù)據(jù)輸入D1和D2,一個輸出R和函數(shù)R=D1+D2);復(fù)制(一個數(shù)據(jù)輸入D,一個控制輸入C,一個輸出R和函數(shù)R=D);和布爾流(Boolstream)(沒有輸入,一個輸出R和函數(shù)R=IF(state==n)設(shè)置state=0,返回1ELSE遞增state,返回0然而,獨立于節(jié)點的功能地,在處理其輸入處的數(shù)據(jù)之后,節(jié)點105在其輸出處提供數(shù)據(jù)處理的最終值。在這種情況下,5個輸入處的數(shù)據(jù)在單個輸出處產(chǎn)生數(shù)據(jù)。
      當(dāng)嚴密檢查數(shù)據(jù)流機的語義時,能夠觀察到,那些語義非常類似于數(shù)字電路操作的方式,尤其是在寄存器傳送層次(RTL)上。在數(shù)據(jù)流機中,數(shù)據(jù)位于弧上,并且通過對數(shù)據(jù)執(zhí)行某種操作的功能節(jié)點被從一個弧傳遞到另一個弧。在數(shù)字電路中,數(shù)據(jù)駐留在寄存器中,并且通過對數(shù)據(jù)執(zhí)行某種功能的組合邏輯在寄存器之間傳遞。由于這種緊密相似性存在于數(shù)據(jù)流機的語義和數(shù)字電路的操作之間,因此能夠直接在數(shù)字電路中實現(xiàn)數(shù)據(jù)流機。這意味著數(shù)據(jù)通過數(shù)據(jù)流機的傳播能夠在數(shù)字電路中實現(xiàn),而無需類似于狀態(tài)機的模擬設(shè)備執(zhí)行數(shù)據(jù)流機的操作。取而代之,通過用組合邏輯替換節(jié)點并且用可以獨立地并行訪問的寄存器或其它快速存儲器元件替換弧,能夠直接實現(xiàn)數(shù)據(jù)流機。
      其優(yōu)點主要是執(zhí)行速度。這種實現(xiàn)會能夠利用比通過處理器或其它狀態(tài)機的實現(xiàn)水平更高的并行性。它對流水線更加容易,并且并行性的水平能夠具有更加精細的粒度。應(yīng)當(dāng)注意,避免使用狀態(tài)機實現(xiàn)數(shù)據(jù)流機本身仍然允許數(shù)據(jù)流機的節(jié)點包含狀態(tài)機。
      本發(fā)明一個可選描述將是,特殊寄存器節(jié)點被插入在數(shù)據(jù)流圖的功能節(jié)點之間,并且邊(edge)被實現(xiàn)成簡單的連線。為了清楚,我們以節(jié)點作為組合邏輯并且邊作為寄存器,而不是使用功能節(jié)點,寄存器節(jié)點和邊的方式描述本發(fā)明。
      圖2說明了本發(fā)明的第一簡單實施例。更具體地,該解了圖1的數(shù)據(jù)流圖的硬件實現(xiàn)。圖1的功能節(jié)點101-105已經(jīng)被節(jié)點201-205替代,節(jié)點201-205執(zhí)行圖1的數(shù)據(jù)流圖中定義的數(shù)學(xué)或邏輯函數(shù)。這種函數(shù)能夠通過組合邏輯執(zhí)行,但也能夠例如通過狀態(tài)機或某種流水線設(shè)備來執(zhí)行。
      在圖2中,例如寄存器206-215或觸發(fā)器的連線和快速并行數(shù)據(jù)存儲硬件已經(jīng)替代圖1的不同節(jié)點之間的連接。在節(jié)點201-205的輸出處提供的數(shù)據(jù)被存儲在寄存器206-215中,以便即時或后續(xù)傳送到另一個節(jié)點201-205。從圖中可以看出,寄存器213使得能夠存儲來自節(jié)點203的輸出值,同時在節(jié)點204中處理來自節(jié)點201和202的數(shù)據(jù)。如果在不同節(jié)點201-205之間不存在可用的寄存器206-215,由由于相同路徑中前面節(jié)點的不同組合延遲,某些節(jié)點的輸入處的數(shù)據(jù)可能不穩(wěn)定(改變值)。
      例如,假定已經(jīng)在節(jié)點201-203的輸入處提供(通過寄存器206-210)第一組數(shù)據(jù)。在節(jié)點中的處理之后,將在節(jié)點201-203的輸出處可得到數(shù)據(jù)。節(jié)點201和202接著將提供數(shù)據(jù)到節(jié)點204,同時節(jié)點203將提供數(shù)據(jù)到節(jié)點205。由于節(jié)點205也從節(jié)點204接收數(shù)據(jù),必須在數(shù)據(jù)被傳送到節(jié)點205之前在節(jié)點204中處理該數(shù)據(jù)。如果在數(shù)據(jù)傳播通過節(jié)點204之前在節(jié)點201-203的輸入處提供新數(shù)據(jù),則節(jié)點203的輸出也許已改變。因此,節(jié)點205的輸入處的數(shù)據(jù)將不再正確,即與節(jié)點205提供的數(shù)據(jù)相比,節(jié)點204提供的數(shù)據(jù)來自于較早的時刻。
      上述推論是簡化的推論。實際上,需要高級時鐘模式,通信協(xié)議,附加節(jié)點/寄存器或附加邏輯電路以保證提供給不同節(jié)點的數(shù)據(jù)是正確的。圖3示出了對問題的最直接的解決方案,其中附加節(jié)點316及其相關(guān)寄存器317已經(jīng)插入在數(shù)據(jù)路徑中。節(jié)點316執(zhí)行NOP(無操作),因此不改變其輸入處提供的數(shù)據(jù)。通過插入節(jié)點316,在圖的每個數(shù)據(jù)路徑中獲得相同長度。效果是203和205之間的弧現(xiàn)在可以擁有2個單元。
      圖4a圖解了另一個解決方案,其中為每個節(jié)點401提供附加信號線,用于在每個時刻提供正確數(shù)據(jù)。第一附加線傳遞″有效(valid)″信號402,其指示前面節(jié)點在其輸出處具有穩(wěn)定數(shù)據(jù)。類似地,當(dāng)節(jié)點401的輸出處的數(shù)據(jù)穩(wěn)定時,節(jié)點401向數(shù)據(jù)路徑中的后續(xù)節(jié)點提供″有效″信號403。通過這個過程,每個節(jié)點能夠確定其輸入處的數(shù)據(jù)的狀態(tài)。
      此外,第二附加線傳遞″停止(stall)″信號404,″停止″信號404向前一節(jié)點指示當(dāng)前節(jié)點401沒有準備在其輸入處接收任何附加數(shù)據(jù)。類似地,節(jié)點401也從數(shù)據(jù)路徑中的后續(xù)節(jié)點接收″停止″線405。通過使用停止線,能夠臨時停止特定路徑中的數(shù)據(jù)流。如果在某些時刻的節(jié)點執(zhí)行具有不確定延遲的費時數(shù)據(jù)處理,例如循環(huán)或存儲器訪問,那么這是重要的。停止信號的使用僅僅是本發(fā)明的一個實施例。根據(jù)選擇的協(xié)議,能夠使用若干其它信號。例子包含″數(shù)據(jù)消費″,″就緒接收″,″確認″或″不確認″信號,和基于脈沖或轉(zhuǎn)變的信號,而不是高或低信號。其它信號模式也是可以的?!逵行А逍盘柕氖褂檬沟媚軌虮硎净∩蠑?shù)據(jù)的存在或不存在。于是,不僅能夠構(gòu)造同步數(shù)據(jù)流機,而且能夠構(gòu)造靜態(tài)和動態(tài)數(shù)據(jù)流機?!逵行А逍盘柌槐乇粚崿F(xiàn)為專用信號線,它能夠以若干其它方式實現(xiàn),類似于選擇特殊數(shù)據(jù)值來表示″空(null)″值。至于停止信號,存在許多其它可能的信號模式。為了清楚,本文的其余部分將只引用停止和有效信號。將本發(fā)明的功能擴展到其它信號模式是簡單的。
      由于特定停止信號的存在,能夠?qū)崿F(xiàn)更高效率。停止信號使得節(jié)點能夠知道即使該時刻下面的弧是完整的,它會能夠在下一時鐘周期接受輸出標(biāo)記。在沒有停止信號的情況下,節(jié)點必須進行等待,直到在其能夠觸發(fā)之前下面的弧上沒有有效數(shù)據(jù)。這意味著在至少每個其它周期弧將為空,從而失去效率。
      圖4b圖解了用于針對節(jié)點401產(chǎn)生有效402,403和停止404,405信號的邏輯電路的例子。這個圖中示出的電路被使用在當(dāng)所有輸入上可得到數(shù)據(jù)時觸發(fā)的節(jié)點中。通常,觸發(fā)規(guī)則可能更加復(fù)雜,并且必須根據(jù)單個節(jié)點401的功能來建立。
      圖4c相應(yīng)說明了數(shù)據(jù)流機中節(jié)點之間的寄存器406中使用的邏輯電路的例子。這個電路保證如果目的節(jié)點尚未準備接受數(shù)據(jù),則寄存器將保留其數(shù)據(jù),并且將此情況通知源節(jié)點。如果寄存器為空,或如果目的節(jié)點將要接受寄存器的當(dāng)前內(nèi)容,它也將接受新數(shù)據(jù)。在這個圖中,為了清楚的原因只圖解一個數(shù)據(jù)輸入407和一個數(shù)據(jù)輸出408。然而,需要強調(diào)的是輸入和輸出的實際數(shù)量取決于系統(tǒng)的總線寬度(即標(biāo)記有多少位寬)。
      在復(fù)雜數(shù)據(jù)流機的情況下,停止線與信號傳播速度相比可能變得非常長。這個可以導(dǎo)致停止信號不到達路徑中需要停止的每個節(jié)點,導(dǎo)致數(shù)據(jù)丟失(即還沒有處理的數(shù)據(jù)被新數(shù)據(jù)改寫)。
      有2個解決此問題的常見方法。非常謹慎地均衡停止信號傳播路徑以保證它及時到達所有目標(biāo)寄存器??蛇x地,在可停止的塊之后放置FIFO緩沖區(qū),從而完全避免在該塊內(nèi)使用停止信號。當(dāng)流水線數(shù)據(jù)從流水線流出時,F(xiàn)IFO被用來收集流水線數(shù)據(jù)。對于較大的流水線塊,前一解決方案非常難以實現(xiàn)并且耗時。后者則需要較大的緩沖區(qū)以便能夠保存該塊內(nèi)可能存在的整個數(shù)據(jù)集合。
      應(yīng)對這種有限信號傳播速度的更好方式是利用稱作″停止截斷器(stall cutter)″的如圖6圖解的特征。停止截斷器基本上是從后續(xù)節(jié)點接收停止線并且將其延遲一個周期的寄存器。這在該點切斷了停止信號的組合長度。
      當(dāng)停止截斷器接收有效停止信號時,它在一個處理周期期間緩沖來自前一節(jié)點的數(shù)據(jù),并且同時將停止信號延遲相同的量。通過延遲停止信號并緩沖輸入數(shù)據(jù),保證即使使用非常長的停止線也沒有數(shù)據(jù)被丟失。停止截斷器能夠大大簡化數(shù)據(jù)循環(huán)的實現(xiàn),尤其是流水線數(shù)據(jù)循環(huán)。在這種情況下,用于控制數(shù)據(jù)流的協(xié)議的許多變化將需要停止信號采取與通過循環(huán)的數(shù)據(jù)相同,通常相反的路徑。這將產(chǎn)生停止信號的組合循環(huán)。通過在循環(huán)內(nèi)放置停止截斷器,能夠避免這種組合循環(huán),從而允許使用否則將難以或不可能實現(xiàn)的許多協(xié)議。
      最終,從數(shù)據(jù)流機中數(shù)據(jù)傳播的角度觀察,停止截斷器是透明的。這意味著能夠根據(jù)需要以自動方式增加停止截斷器。
      圖5a圖解了本發(fā)明的另一個實施例,其中圖中數(shù)據(jù)路徑已通過節(jié)點合并得到均衡。對于使用全局時鐘信號的設(shè)計,通過最慢的處理單元確定最高可能時鐘頻率。這意味著有能力在高頻處進行操作的每個處理單元被約束為在由最慢單元設(shè)置的頻率上進行操作。因此,期望獲得具有相等或幾乎相等大小的處理單元,因為沒有單元將使其它單元減速。即使對于沒有全局時鐘信號的設(shè)計,分支計算中的2個數(shù)據(jù)路徑具有相等長度,即每個數(shù)據(jù)路徑中存在的節(jié)點數(shù)量相同也是有利的。通過保證數(shù)據(jù)路徑具有相等長度,2個分支中的計算將以相同速度執(zhí)行。
      如圖5a所示,圖3的2個節(jié)點304和305已經(jīng)合并成一個節(jié)點504。如上所述,可以進行此處理,以便均衡不同數(shù)據(jù)路徑的長度,或優(yōu)化設(shè)計的總體處理速度。
      通過消除某些節(jié)點之間的寄存器來執(zhí)行節(jié)點合并,其中隨著合并節(jié)點變得更大,節(jié)點數(shù)量將減少。通過系統(tǒng)地合并所選節(jié)點,節(jié)點的組合深度變得基本相等,并且不同節(jié)點之間的處理速度得到均衡。
      當(dāng)合并節(jié)點時,其各自的功能也被合并。這通過不經(jīng)任何中間寄存器地連接不同邏輯單元來進行。隨著節(jié)點被合并,必須確定新觸發(fā)規(guī)則以便使節(jié)點當(dāng)需要時在其輸出處提供數(shù)據(jù)。
      更具體地,如圖5b中所示,當(dāng)合并2個節(jié)點507,508時,產(chǎn)生具有與初始節(jié)點具有的輸入和輸出弧的相同數(shù)量減去連接被組合的2個結(jié)點507,508的弧的新節(jié)點509。如上所述,對于類似于相加,相乘等等的基本功能節(jié)點,觸發(fā)規(guī)則將在所有輸入上存在數(shù)據(jù)并且所有輸出自由接收數(shù)據(jù)時觸發(fā)(下面稱作nm-觸發(fā)規(guī)則的觸發(fā)規(guī)則)。合并2個這樣的節(jié)點507,508將產(chǎn)生具有3個輸入和一個輸出的新節(jié)點509。來自相加的2個輸入,來自相乘的2個輸入,在2個節(jié)點之間的連接中使用的一個輸入提供合并節(jié)點的3個輸入。來自相加的一個輸出,來自相乘的一個輸出和用來連接2個節(jié)點的一個輸出提供了來自合并節(jié)點的單個輸出。合并節(jié)點的觸發(fā)規(guī)則將需要所有其3個輸入處的數(shù)據(jù)觸發(fā)。事實上,具有nm-觸發(fā)規(guī)則的節(jié)點的任何合并本身將具有nm-觸發(fā)規(guī)則,盡管輸入和輸出的數(shù)量將已經(jīng)改變。通過根據(jù)先前連接它們的弧直接將來自第一組合塊的輸出連接到其它組合塊的輸入,合并初始2個節(jié)點507,508的功能。先前表示節(jié)點之間的弧的寄存器被消除。于是,結(jié)果是更大的組合塊。
      因此,對于始終需要其輸入處的數(shù)據(jù)并且始終在其輸出處提供數(shù)據(jù)的節(jié)點,例如執(zhí)行算術(shù)功能的節(jié)點,合并節(jié)點的觸發(fā)規(guī)則將與初始節(jié)點相同。
      如上所述,功能編程語言的使用對于在數(shù)據(jù)流機中實現(xiàn)巨大并行性是必要的。根據(jù)本發(fā)明,通過標(biāo)記處理副作用的問題。通過使用稱作實例標(biāo)記(instance token)的特殊標(biāo)記,能夠控制對副作用的可能訪問的數(shù)量,以及這些訪問發(fā)生的順序。
      除了普通數(shù)據(jù)輸入之外,希望使用副作用的每個節(jié)點必須具有用于與所涉及的副作用相關(guān)的實例標(biāo)記的專用數(shù)據(jù)輸入。除了用于實例標(biāo)記的數(shù)據(jù)輸入之外,它也必須具有用于實例標(biāo)記的輸出。用于實例標(biāo)記的數(shù)據(jù)路徑充當(dāng)數(shù)據(jù)流機中的其它數(shù)據(jù)路徑,即節(jié)點在其能夠執(zhí)行其特定操作之前必須具有所有相關(guān)輸入上的數(shù)據(jù)。
      需要訪問副作用的節(jié)點的觸發(fā)規(guī)則使得其必須在其實例標(biāo)記輸入(即實例標(biāo)記本身)上具有數(shù)據(jù)。當(dāng)完成對副作用的訪問時,節(jié)點釋放其輸出處的實例標(biāo)記。這個輸出接著可以被連接到需要訪問相同副作用的后續(xù)節(jié)點的實例標(biāo)記輸入。通過這個過程,在需要訪問特定副作用的所有節(jié)點之間建立實例標(biāo)記路徑。實例標(biāo)記路徑?jīng)Q定節(jié)點獲得對副作用的訪問的順序。
      因此,對于特定副作用(例如存儲器或指示器),存在一或多個沿著其實例標(biāo)記路徑移動的實例標(biāo)記。由于該鏈中的所有節(jié)點需要在其輸入上具有數(shù)據(jù)以便獲得對副作用的訪問,能夠通過限制實例標(biāo)記數(shù)據(jù)路徑上的數(shù)據(jù)單元數(shù)量(即限制實例標(biāo)記的數(shù)量)來約束對副作用的同時訪問的數(shù)量。如果在一個特定時刻只有一個實例標(biāo)記被允許存在于實例標(biāo)記路徑上,則保證從不從兩個或更多節(jié)點同時訪問副作用。此外,通過實例標(biāo)記路徑明確確定訪問副作用的順序。如果在某些環(huán)境期間使不止一個節(jié)點訪問副作用是安全的,則能夠同時在路徑中引入不止一個實例標(biāo)記。分割實例標(biāo)記路徑也可以是安全的,從而將實例標(biāo)記復(fù)制到分割的兩個路徑。
      例如,當(dāng)訪問作為副作用的存儲器時,如果兩個路徑只包含從存儲器的讀取,則分割實例標(biāo)記路徑將通常是安全的。在這種情況下,對存儲器的同時訪問將由存儲器控制器任意仲裁,但是由于讀取的執(zhí)行順序彼此不影響,這是安全的。相反,如果2個路徑包含寫入,則實際執(zhí)行2個寫入的順序?qū)⑹潜匾模驗檫@將決定存儲器最終保存什么值。在這種情況下,實例標(biāo)記路徑不能被安全地分割。
      在實例標(biāo)記路徑的單線程上將若干實例標(biāo)記放置在彼此之后將通常表示通過不同″代(generation)″的流水線計算對存儲器的訪問。如果例如已知由于它們不訪問存儲器的相同部分,因而2個代是無關(guān)的,則將多個實例標(biāo)記插入在彼此之后將是安全的。
      也可以在彼此之后放置對若干不同副作用(例如存儲器或其它輸入或輸出單元)的訪問。這將具有明確確定對路徑上每個實例標(biāo)記的每個副作用的訪問的順序的效果。例如,從輸入單元的讀取能夠被放置在對實例標(biāo)記路徑上輸出單元的寫入之前,如果若干實例標(biāo)記同時存在于路徑上,則讀和寫的總體順序可能是未確定的,但是對于路徑上的每個單個實例標(biāo)記,在副作用之間將存在清楚的定序。
      最終,當(dāng)設(shè)計數(shù)字電路時,能夠混合不同類型的數(shù)據(jù)流機。例如,可以使靜態(tài)數(shù)據(jù)流機中具有取決于數(shù)據(jù)的數(shù)量的迭代的循環(huán)作為動態(tài)數(shù)據(jù)流機的部分。這樣可以并行執(zhí)行迭代,而在靜態(tài)數(shù)據(jù)流機中是不能如此的。在沒有動態(tài)數(shù)據(jù)流機的完全標(biāo)記匹配系統(tǒng)的情況下,這樣的靜態(tài)數(shù)據(jù)流機的本地動態(tài)部分能夠進行操作。相反,只需要保證標(biāo)記按照它們進入動態(tài)部分的相同順序來退出動態(tài)部分。因為機器的其余部分是靜態(tài)的并且不對標(biāo)記重定序,這將使得標(biāo)記匹配。
      在通過用序號標(biāo)記(tagging)進入遞歸的每個標(biāo)記(token)并且使用緩沖區(qū)收集不按順序(out of order)完成遞歸的標(biāo)記來完成遞歸之后,能夠以正確順序重新排列標(biāo)記。更具體地,在遞歸步驟之后安排緩沖區(qū)。如果標(biāo)記不按順序退出遞歸,其將被放置在緩沖區(qū)中,直到具有更低序號的所有標(biāo)記退出遞歸。因此,緩沖區(qū)的尺寸決定有多少標(biāo)記可以不按順序地退出遞歸,同時保證在遞歸完成之后標(biāo)記能夠被正確地排列。在某些情況下,能夠知道退出遞歸的標(biāo)記的順序是無關(guān)的,例如如果要執(zhí)行退出遞歸的標(biāo)記的值的簡單求和。在這樣情況下,可以省略用序號標(biāo)記數(shù)據(jù)標(biāo)記和緩沖區(qū)。
      除數(shù)據(jù)相關(guān)循環(huán)之外,本地標(biāo)記匹配和重定序模式的使用也可以被用于節(jié)點或子圖的其它類型的重定序。
      已經(jīng)參照優(yōu)選實施例描述了本發(fā)明。然而如所附權(quán)利要求書所定義的,除在這里公開的實施例之外的其它實施例也在本發(fā)明的范圍內(nèi)。
      權(quán)利要求
      1.一種由圖示產(chǎn)生用于實現(xiàn)數(shù)字邏輯電路的數(shù)字控制參數(shù)的方法,所述圖示包括具有至少一個輸入或至少一個輸出的功能節(jié)點,和指示功能節(jié)點之間的互連的連接,其特征在于針對該圖的每個功能節(jié)點定義指定硬件單元的數(shù)字控制參數(shù),針對功能節(jié)點之間的每個連接定義指定硬件單元的數(shù)字控制參數(shù),和針對該圖的每個功能節(jié)點定義指定硬件單元中的觸發(fā)規(guī)則的數(shù)字控制參數(shù)。
      2.如權(quán)利要求1所述的方法,其特征在于該圖示是有向圖。
      3.如權(quán)利要求1或2所述的方法,其特征在于由高級源代碼規(guī)格產(chǎn)生該圖示。
      4.如權(quán)利要求1-3所述的方法,其特征在于針對功能節(jié)點之間的至少一個連接定義指定可以獨立地并行訪問的片上存儲器單元的數(shù)字控制參數(shù)。
      5.如權(quán)利要求1-4所述的方法,其特征在于針對功能節(jié)點之間的至少一個連接定義指定數(shù)字寄存器的數(shù)字控制參數(shù)。
      6.如權(quán)利要求1-4所述的方法,其特征在于針對功能節(jié)點之間的至少一個連接定義指定至少一個觸發(fā)器的數(shù)字控制參數(shù)。
      7.如權(quán)利要求1-4所述的方法,其特征在于在于針對功能節(jié)點之間的至少一個連接定義指定至少一個鎖存器的數(shù)字控制參數(shù)。
      8.如前面任何權(quán)利要求所述的方法,其特征在于針對每個功能節(jié)點定義指定組合邏輯的數(shù)字控制參數(shù)。
      9.如權(quán)利要求1-7所述的方法,其特征在于針對至少一個功能節(jié)點定義指定至少一個狀態(tài)機的數(shù)字控制參數(shù)。
      10.一種由圖示產(chǎn)生用于實現(xiàn)數(shù)字邏輯電路的數(shù)字控制參數(shù)的設(shè)備,所述圖示包括具有至少一個輸入或至少一個輸出的功能節(jié)點,和指示功能節(jié)點之間的互連的連接,其特征在于該設(shè)備適于針對該圖的每個功能節(jié)點定義指定硬件單元的數(shù)字控制參數(shù),針對功能節(jié)點之間的每個連接定義指定硬件單元的數(shù)字控制參數(shù),和針對該圖的每個功能節(jié)點定義指定硬件單元中的觸發(fā)規(guī)則的數(shù)字控制參數(shù)。
      11.如權(quán)利要求10所述的設(shè)備,其特征在于該圖示是有向圖。
      12.如權(quán)利要求10或11所述的設(shè)備,其特征在于由高級源代碼規(guī)格產(chǎn)生該圖示。
      13.如權(quán)利要求10-12所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定可以獨立地并行訪問的片上存儲器單元的數(shù)字控制參數(shù)。
      14.如權(quán)利要求10-13所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定數(shù)字寄存器的數(shù)字控制參數(shù)。
      15.如權(quán)利要求10-13所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定至少一個觸發(fā)器的數(shù)字控制參數(shù)。
      16.如權(quán)利要求10-13所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定至少一個鎖存器的數(shù)字控制參數(shù)。
      17.如權(quán)利要求10-16所述的設(shè)備,其特征在于該設(shè)備適于針對每個功能節(jié)點定義指定組合邏輯的數(shù)字控制參數(shù)。
      18.如權(quán)利要求10-16所述的設(shè)備,其特征在于該設(shè)備適于針對每個功能節(jié)點定義指定至少一個狀態(tài)機的數(shù)字控制參數(shù)。
      19.一種數(shù)據(jù)流機,其特征在于執(zhí)行數(shù)據(jù)變換的第一組硬件單元,互連第一組硬件單元的第二組硬件單元,和針對第一組硬件單元的每個硬件單元建立至少一個觸發(fā)規(guī)則的電子電路。
      20.如權(quán)利要求19所述的數(shù)據(jù)流機,其特征在于該圖示是有向圖。
      21.如權(quán)利要求19或20所述的數(shù)據(jù)流機,其特征在于第二組硬件單元的至少一個單元具有可以獨立地并行訪問的片上存儲器單元的形式。
      22.如權(quán)利要求19-21所述的數(shù)據(jù)流機,其特征在于第二組硬件單元的至少一個單元具有寄存器的形式。
      23.如權(quán)利要求19-21所述的數(shù)據(jù)流機,其特征在于第二組硬件單元的至少一個單元具有觸發(fā)器的形式。
      24.如權(quán)利要求19-21所述的數(shù)據(jù)流機,其特征在于第二組硬件單元的至少一個單元具有鎖存器的形式。
      25.如權(quán)利要求19-24所述的數(shù)據(jù)流機,其特征在于第一組硬件單元具有組合邏輯的形式。
      26.如權(quán)利要求19-24所述的數(shù)據(jù)流機,其特征在于第一組硬件單元中的至少一個單元具有至少一個狀態(tài)機的形式。
      27.如權(quán)利要求19-26所述的數(shù)據(jù)流機,其特征在于通過ASIC,F(xiàn)PGA,CPLD或其它PLD來實現(xiàn)數(shù)據(jù)流機。
      28.一種直接可加載到具有數(shù)字計算機能力的電子設(shè)備的存儲器中的計算機程序產(chǎn)品,包括當(dāng)所述產(chǎn)品被所述電子設(shè)備運行時用于執(zhí)行權(quán)利要求1-9中的任何權(quán)利要求的步驟的軟件代碼部分。
      29.如權(quán)利要求28所述的計算機程序產(chǎn)品,其體現(xiàn)在計算機可讀介質(zhì)上。
      30.一種由圖示產(chǎn)生用于實現(xiàn)數(shù)字邏輯電路的數(shù)字控制參數(shù)的方法,所述圖示包括功能節(jié)點和指示功能節(jié)點之間的互連的連接,所述功能節(jié)點包括至少一個輸入或至少一個輸出,其特征在于針對至少第一和第二功能節(jié)點定義指定合并硬件單元的數(shù)字控制參數(shù),所述數(shù)字控制參數(shù)指定合并硬件單元以執(zhí)行第一和第二功能節(jié)點的功能,針對由第一和第二功能節(jié)點的合并產(chǎn)生的硬件單元定義指定觸發(fā)規(guī)則的數(shù)字控制參數(shù)。
      31.如權(quán)利要求30所述的方法,其中所產(chǎn)生的數(shù)字控制參數(shù)指定第一功能節(jié)點的至少一個輸出和第二功能節(jié)點的至少一個輸入之間的直接連接。
      32.如權(quán)利要求30或31所述的方法,其特征在于針對合并硬件單元定義指定不同于第一和第二功能節(jié)點的觸發(fā)規(guī)則的觸發(fā)規(guī)則的數(shù)字控制參數(shù)。
      33.一種用于由圖示產(chǎn)生用于實現(xiàn)數(shù)字邏輯電路的數(shù)字控制參數(shù)的設(shè)備,所述圖示包括功能節(jié)點和指示功能節(jié)點之間的互連的連接,所述功能節(jié)點包括至少一個輸入或至少一個輸出,其特征在于該設(shè)備適于針對至少第一和第二功能節(jié)點定義指定合并硬件單元的數(shù)字控制參數(shù),所述數(shù)字控制參數(shù)指定合并硬件單元以執(zhí)行第一和第二功能節(jié)點的功能,針對由第一和第二功能節(jié)點的合并產(chǎn)生的硬件單元定義指定觸發(fā)規(guī)則的數(shù)字控制參數(shù)。
      34.如權(quán)利要求33所述的設(shè)備,其中該設(shè)備適于定義指定第一功能節(jié)點的至少一個輸出和第二功能節(jié)點的至少一個輸入之間的直接連接的數(shù)字控制參數(shù)。
      35.如權(quán)利要求33或34所述的設(shè)備,其特征在于該設(shè)備適于針對合并硬件單元定義指定不同于第一和第二功能節(jié)點的觸發(fā)規(guī)則的觸發(fā)規(guī)則的數(shù)字控制參數(shù)。
      36.一種直接可加載到具有數(shù)字計算機能力的電子設(shè)備的存儲器中的計算機程序產(chǎn)品,包括當(dāng)所述產(chǎn)品被所述電子設(shè)備運行時用于執(zhí)行權(quán)利要求30-32中的任何權(quán)利要求的步驟的軟件代碼部分。
      37.如權(quán)利要求36所述的計算機程序產(chǎn)品,其體現(xiàn)在計算機可讀介質(zhì)上。
      38.一種允許啟動數(shù)據(jù)流機中的第一和第二互連硬件單元的方法,所述方法包括為第一硬件單元提供第一數(shù)字數(shù)據(jù)單元,其中第一硬件單元中第一數(shù)字數(shù)據(jù)單元的提供允許啟動第一硬件單元,從第一硬件單元傳送第一數(shù)字數(shù)據(jù)單元到第二硬件單元,其中第二硬件單元中第一數(shù)字數(shù)據(jù)單元的接收允許啟動第二硬件單元,并且第一數(shù)字數(shù)據(jù)單元從第一硬件單元的交出禁止啟動第一硬件單元。
      39.如權(quán)利要求38所述的方法,其中在第一數(shù)字數(shù)據(jù)單元的交出之后可以為第一硬件單元提供第二數(shù)字數(shù)據(jù)單元。
      40.如權(quán)利要求38或39所述的方法,其中在第一硬件單元中產(chǎn)生數(shù)字數(shù)據(jù)單元。
      41.如權(quán)利要求38或39所述的方法,其中數(shù)字數(shù)據(jù)單元在分立的硬件單元中產(chǎn)生并且被傳送到第一硬件單元。
      42.如權(quán)利要求38-41中任何一個所述的方法,其中數(shù)字數(shù)據(jù)單元被從第二硬件單元交出并且返回給第一硬件單元。
      43.一種包括第一和第二互連硬件單元的數(shù)據(jù)流機,其特征在于為第一硬件單元提供第一數(shù)字數(shù)據(jù)單元,并且第一硬件單元適于在所述第一數(shù)字數(shù)據(jù)單元存在于第一硬件單元中時被允許啟動,并且第一硬件單元適于從第一硬件單元傳送第一數(shù)字數(shù)據(jù)單元到第二硬件單元,其中第二硬件單元適于作為至少第一數(shù)字數(shù)據(jù)單元的接收的結(jié)果而被允許啟動,并且第一硬件單元適于作為數(shù)字數(shù)據(jù)單元的交出的結(jié)果而被禁止啟動。
      44.如權(quán)利要求43所述的數(shù)據(jù)流機,其中第一硬件單元適于在向第二硬件單元傳送第一數(shù)字數(shù)據(jù)單元之后被提供第二數(shù)字數(shù)據(jù)單元。
      45.如權(quán)利要求43或44所述的數(shù)據(jù)流機,其中第一硬件單元適于產(chǎn)生數(shù)字數(shù)據(jù)單元。
      46.如權(quán)利要求43或44所述的數(shù)據(jù)流機,其中第一硬件單元適于從分立硬件單元接收數(shù)字數(shù)據(jù)單元。
      47.如權(quán)利要求43-46所述的數(shù)據(jù)流機,其特征在于通過ASIC,F(xiàn)PGA,CPLD或其它PLD來實現(xiàn)數(shù)據(jù)流機。
      48.一種保證數(shù)據(jù)流機中的數(shù)據(jù)完整性的方法,其中連接到至少第一和第二硬件單元的至少一個停止線被如此安排,使得在數(shù)據(jù)流機中提供數(shù)據(jù)路徑,當(dāng)停止信號在該停止線上活躍時,該數(shù)據(jù)路徑被提供用于暫停數(shù)據(jù)流,該數(shù)據(jù)流在處理周期期間在數(shù)據(jù)路徑中從第一硬件單元前進到第二硬件單元,其特征在于在第一片上存儲器單元的第一輸入處從第二硬件單元接收停止信號,在第二片上存儲器單元的第一輸入處從第一硬件單元接收數(shù)據(jù),在第一和第二片上存儲器單元中將接收數(shù)據(jù)和接收的停止信號緩沖至少一個處理周期,在第一片上存儲器單元的第一輸出處提供緩沖的停止信號到第一硬件單元,并且在第二片上存儲器單元的第一輸出處提供緩沖的數(shù)據(jù)到第二硬件單元。
      49.如權(quán)利要求48所述的方法,其中至少一個片上存儲器單元是寄存器。
      50.一種保證數(shù)據(jù)流機中的數(shù)據(jù)完整性的設(shè)備,其中連接到至少第一和第二硬件單元的至少一個停止線被如此安排,使得在數(shù)據(jù)流機中提供數(shù)據(jù)路徑,當(dāng)停止信號在該停止線上活躍時,該數(shù)據(jù)路徑被提供用于暫停數(shù)據(jù)流,該數(shù)據(jù)流在處理周期期間在數(shù)據(jù)路徑中從第一硬件單元前進到第二硬件單元,其特征在于該設(shè)備適于在第一片上存儲器單元的第一輸入處從第二硬件單元接收停止信號,在第二片上存儲器單元的第一輸入處從第一硬件單元接收數(shù)據(jù),在第一和第二片上存儲器單元中將接收數(shù)據(jù)和接收的停止信號緩沖至少一個處理周期,在第一片上存儲器單元的第一輸出處提供緩沖的停止信號到第一硬件單元,并且在第二片上存儲器單元的第一輸出處提供緩沖的數(shù)據(jù)到第二硬件單元。
      51.如權(quán)利要求48所述的方法,其中至少一個片上存儲器單元是寄存器。
      52.一種由圖示產(chǎn)生用于實現(xiàn)數(shù)字邏輯電路的數(shù)字控制參數(shù)的方法,所述圖示包括功能節(jié)點和指示功能節(jié)點之間的互連的連接,所述功能節(jié)點具有至少一個輸入或至少一個輸出,其特征在于針對功能節(jié)點或功能節(jié)點之間的連接定義指定至少第一組硬件單元的數(shù)字控制參數(shù),和定義指定至少一個重定序硬件單元的數(shù)字控制參數(shù),該至少一個重定序硬件單元對從至少一個第一組硬件單元發(fā)出的數(shù)據(jù)單元進行排序,使得數(shù)據(jù)單元按照與它們進入第一組硬件單元的順序相同的順序從第一組硬件單元發(fā)出。
      53.如權(quán)利要求52所述的方法,其特征在于該圖示是有向圖。
      54.如權(quán)利要求52或53所述的方法,其特征在于由高級源代碼規(guī)格產(chǎn)生該圖示。
      55.如權(quán)利要求52-54中任何一個所述的方法,其特征在于針對功能節(jié)點之間的至少一個連接定義指定可以獨立地并行訪問的片上存儲器單元的數(shù)字控制參數(shù)。
      56.如權(quán)利要求52-55中任何一個所述的方法,其特征在于針對功能節(jié)點之間的至少一個連接定義指定數(shù)字寄存器的數(shù)字控制參數(shù)。
      57.如權(quán)利要求52-55中任何一個所述的方法,其特征在于針對功能節(jié)點之間的至少一個連接定義指定至少一個觸發(fā)器的數(shù)字控制參數(shù)。
      58.如權(quán)利要求52-55中任何一個所述的方法,其特征在于針對功能節(jié)點之間的至少一個連接定義指定至少一個鎖存器的數(shù)字控制參數(shù)。
      59.一種由圖示產(chǎn)生用于實現(xiàn)數(shù)字邏輯電路的數(shù)字控制參數(shù)的方法,所述圖示包括功能節(jié)點和指示功能節(jié)點之間的互連的連接,所述功能節(jié)點具有至少一個輸入或至少一個輸出,其特征在于該設(shè)備適于針對功能節(jié)點或功能節(jié)點之間的連接定義指定至少第一組硬件單元的數(shù)字控制參數(shù),和定義指定至少一個重定序硬件單元的數(shù)字控制參數(shù),該至少一個重定序硬件單元對從至少一個第一組硬件單元發(fā)出的數(shù)據(jù)單元進行排序,使得數(shù)據(jù)單元按照與它們進入第一組硬件單元的順序相同的順序從第一組硬件單元發(fā)出。
      60.如權(quán)利要求59所述的設(shè)備,其特征在于該圖示是有向圖。
      61.如權(quán)利要求59或60所述的設(shè)備,其特征在于由高級源代碼規(guī)格產(chǎn)生該圖示。
      62.如權(quán)利要求59-61中任何一個所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定可以獨立地并行訪問的片上存儲器單元的數(shù)字控制參數(shù)。
      63.如權(quán)利要求59-62所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定數(shù)字寄存器的數(shù)字控制參數(shù)。
      64.如權(quán)利要求59-62所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定至少一個觸發(fā)器的數(shù)字控制參數(shù)。
      65.如權(quán)利要求59-62所述的設(shè)備,其特征在于該設(shè)備適于針對功能節(jié)點之間的至少一個連接定義指定至少一個鎖存器的數(shù)字控制參數(shù)。
      66.一種數(shù)據(jù)流機,其特征在于執(zhí)行數(shù)據(jù)變換的第一組硬件單元,和至少一個重定序硬件單元,該至少一個重定序硬件單元對從至少一個第一組硬件單元發(fā)出的數(shù)據(jù)單元進行排序,使得數(shù)據(jù)單元按照與它們進入第一組硬件單元的順序相同的順序從第一組硬件單元發(fā)出。
      67.如權(quán)利要求66所述的數(shù)據(jù)流機,其特征在于該圖示是有向圖。
      68.如權(quán)利要求66或67所述的數(shù)據(jù)流機,其特征在于第二和第三組硬件單元的至少一個單元具有可以獨立地并行訪問的片上存儲器單元的形式。
      69.如權(quán)利要求66-68所述的數(shù)據(jù)流機,其特征在于第二和第三組硬件單元的至少一個單元具有寄存器的形式。
      70.如權(quán)利要求66-68所述的數(shù)據(jù)流機,其特征在于第二和第三組硬件單元的至少一個單元具有觸發(fā)器的形式。
      71.如權(quán)利要求66-68所述的數(shù)據(jù)流機,其特征在于第二和第三組硬件單元的至少一個單元具有鎖存器的形式。
      72.如權(quán)利要求66-71所述的數(shù)據(jù)流機,其特征在于通過ASIC,F(xiàn)PGA,CPLD或其它PLD來實現(xiàn)數(shù)據(jù)流機。
      73.一種直接可加載到具有數(shù)字計算機能力的電子設(shè)備的存儲器中的計算機程序產(chǎn)品,包括當(dāng)所述產(chǎn)品被所述電子設(shè)備運行時用于執(zhí)行權(quán)利要求52-58中的任何權(quán)利要求的步驟的軟件代碼部分。
      74.如權(quán)利要求73所述的計算機程序產(chǎn)品,其體現(xiàn)在計算機可讀介質(zhì)上。
      75.如權(quán)利要求30到32中任何一個所述的方法,其中由高級源代碼規(guī)格產(chǎn)生該圖示。
      76.如權(quán)利要求30到35中任何一個所述的設(shè)備,其中由高級源代碼規(guī)格產(chǎn)生該圖示。
      77.如權(quán)利要求43-46所述的數(shù)據(jù)流機,其中數(shù)字數(shù)據(jù)單元被從第二硬件單元交出并且返回給第一硬件單元。
      全文摘要
      公開了用于自高級源代碼規(guī)格產(chǎn)生數(shù)字邏輯描述的方法。至少部分源代碼規(guī)格被編譯成包括具有至少一個輸入或一個輸出的功能節(jié)點和指示功能節(jié)點之間的互連的連接的多有向圖表示。針對該圖的每個功能節(jié)點和功能節(jié)點之間的每個連接定義硬件單元。最終,定義該圖的每個功能節(jié)點的觸發(fā)規(guī)則。
      文檔編號G06F9/44GK1781092SQ200480011371
      公開日2006年5月31日 申請日期2004年3月17日 優(yōu)先權(quán)日2003年3月17日
      發(fā)明者史蒂芬·莫爾, 龐圖斯·伯格 申請人:米特里昂尼克斯股份公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1