TWI905359B - 高效能的基於表的狀態機 - Google Patents
高效能的基於表的狀態機Info
- Publication number
- TWI905359B TWI905359B TW111101407A TW111101407A TWI905359B TW I905359 B TWI905359 B TW I905359B TW 111101407 A TW111101407 A TW 111101407A TW 111101407 A TW111101407 A TW 111101407A TW I905359 B TWI905359 B TW I905359B
- Authority
- TW
- Taiwan
- Prior art keywords
- state
- outputs
- output
- table circuit
- additional
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/08—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using semiconductor devices
- H03K19/094—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using semiconductor devices using field-effect transistors
- H03K19/09425—Multistate logic
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/08—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using semiconductor devices
- H03K19/094—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using semiconductor devices using field-effect transistors
- H03K19/096—Synchronous circuits, i.e. using clock signals
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Power Engineering (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Advance Control (AREA)
- Logic Circuits (AREA)
- Electronic Switches (AREA)
Abstract
藉由減少關鍵依賴路徑,改進了基於表的狀態機。在一個態樣中,從狀態表電路讀取給定輸入的所有當前狀態,隨後由輸出多工器基於當前狀態從中選擇下一狀態及輸出,從表讀取中移除對當前狀態的依賴,並允許讀取被排序緩衝。在另一態樣中,多個輸入單元用以並行地對多個輸入操作,每個輸入單元將其當前輸入的狀態表電路傳播到下一個下游輸入單元。每個下游輸入單元用以使用傳播的狀態表電路向適當的輸出多工器輸入提供狀態表電路讀取。可以動態地減少給定輸入的可能輸出狀態的數量,從而減小選擇下一狀態的輸出多工器的大小。
Description
本申請案請求於2020年9月15日提交的美國臨時專利申請案第63/078737號,標題為「高效能的基於表的狀態機」,其全部內容藉由引用之方式併入本文。
本發明係關於一種高效能的基於表狀態機。
狀態機的效能通常與每個輸入對前一狀態的依賴性有關。對於基於表的狀態機,此效能至少部分地依賴於每次迭代的查表。
提供本發明內容,以簡化的形式介紹一些概念的選擇,此些概念將在下文的具體實施方式中進一步描述。本發明內容不意欲識別所請求標的的關鍵特徵或基本特徵,也不意欲限制所請求標的的範圍。
本文描述了藉由減少關鍵依賴路徑來提高基於表的狀態機效能的方法及系統。在一個態樣中,從狀態表電路讀取給定輸入的所有可能當前狀態,隨後由輸出多工器基於當前狀態從中選擇正確的下一狀態及輸出,從而從表讀取中移除對當前狀態的任何依賴,並允許讀取被排序緩衝。
在另一態樣中,多個輸入單元用以並行地對多個輸入操作,其中每個輸入單元將其當前輸入的狀態表電路傳播到下一個下游輸入單元。每個下游輸入單元用以使用傳播的狀態表電路向適當的輸出多工器輸入提供狀態表電路讀取。
在另一態樣,實施例可以動態地減少給定輸入的可能輸出狀態的數量,從而減少選擇下一狀態所需的輸出多工器的大小。進一步的擴展動態地減少給定輸入的狀態數。
下文參考附圖詳細描述了各種實例的其他特徵及優點以及結構及操作。注意,此些想法及技術不限於本文所描述的具體實例。本文給出的此類實例僅用於說明目的。基於本文包含的教導,對於熟習相關領域者而言,附加實例將顯而易見。
I.引言
本說明書及附圖揭示了結合本發明特徵的一或多個實施例。本發明的範圍不被限制在所揭示的實施例。所揭示的實施例僅例示了本發明,並且所揭示的實施例的修改版本也包含在本發明中。本發明的實施例由所附申請專利範圍限定。
在本說明書中對「一個實施例」、「一實施例」、「一示例實施例」等的引用指出所述實施例可能包含特定特徵、結構、或特性,但每個實施例不一定包含特定特徵、結構、或特性。此外,此類片語不一定指同一實施例。另外,當結合實施例描述特定特徵、結構或特性時,無論是否明確描述,熟習此項技術者結合其他實施例實現此類特徵、結構或特性皆在熟習此項技術者的知識範圍內。
在論述中,除非另有說明,否則修飾本發明的一或多個實施例的特徵的條件或關係的諸如「基本上」及「約」之類的形容詞,將被理解為意味著此條件或特性被定義在可接受的容差範圍內,此些容差適用於本實施例的預期應用。
下文描述了許多示例性實施例。應注意,本文提供的任何章節/小節標題並不意欲限制。整個檔案中對實施例進行了描述,並且任何類型的實施例可包含在任何章節/小節下。另外,在任何章節/小節中揭示的實施例可以以任何方式與在相同章節/小節及/或不同章節/小節中描述的任何其他實施例組合。
II.示例實施例
狀態機為一種可以在電路系統及/或在處理器中執行的程式碼中實現的裝置,取決於其先前的狀態及其輸入的當前值,處理器在任何特定時間都可能處於一組穩定狀態之一。狀態機的效能通常與每個輸入對前一狀態的依賴性有關。對於基於表的狀態機,這種效能至少部分依賴於每次迭代的查表。這種依賴性使得跨輸入並行化變得困難。
本文揭示的實施例提供了一種高效能基於表的狀態機,此狀態機允許大量排序緩衝來隱藏延遲,並允許高時鐘頻率,從而克服了上述缺陷。此類實施例可以以各種方式實現。在本節中,吾人將概述第1圖所示的基於表的狀態機。
第1圖根據實施例示出實例基於表的狀態機100。基於表的狀態機100包含狀態表電路102。狀態表電路102可以在硬體(例如,包含電晶體、邏輯閘極、電氣元件等的電路)中實現,並且用以接收/接受輸入104及當前狀態106(在本文中也稱為「當前操作狀態」)作為輸入。狀態表電路102用以隨後生成輸出108及新狀態110(在本文中也稱為「新工作狀態」)。基於表的狀態機包含硬體,此硬體藉由透過查表對狀態轉移及輸出進行編碼來實現可程式化狀態機。例如,考慮以下實例狀態轉移表。狀態轉移表A:
狀態轉移表A
如熟習相關領域者所知,狀態表電路102可以以各種不同的方式在硬體中實現,以提供查表機制,在提供輸入104及當前狀態106作為輸入時,狀態表電路102生成輸出108及新狀態110作為輸出,此些輸出的值由其狀態轉移表(例如,狀態轉移表A)規定。例如,狀態表電路102可以以電晶體、邏輯閘極、特定應用積體電路(Application Specific Integrated Circuit; ASIC)、諸如現場可程式化閘極陣列(Field Programmable Gate Array; FPGA)中的可配置電路、複雜可程式化邏輯元件(Complex Programmable Logic Device; CPLD),及/或使用相關技術中已知的光微影技術直接在矽或其他半導體材料上製造的形式實現。因此,狀態表電路102可以使用相關技術中也已知的微程式化技術來實現,並且與狀態表電路102相關聯的一或多個狀態轉移表同樣可以包含微程式化指令、微代碼、用於記憶體內微代碼子常式的一或多個位址等。因此,狀態表電路102不僅為資料的排列,而且揭示了查表功能,由此可以從儲存在記憶體中的對應狀態轉移表擷取輸出及新狀態。例如,並參考上文所示的狀態轉移表A,當輸入104為1而當前狀態106為1,並且被提供給狀態表電路102作為輸入時,狀態表電路102將向輸出108提供0,並為新狀態110提供0作為輸出。
| 輸入104 | 當前狀態106 | 輸出108 | 新狀態110 |
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | |
| 1 | 0 | 1 | 1 |
| 1 | 0 | 0 |
基於表的狀態機100的效能在至少兩個態樣中受到限制。首先,按順序處理每個輸入,因為新的狀態取決於先前的輸入。第二,狀態機的每次迭代的處理時間(即「迭代間隔」)因在狀態表電路中查找條目及輸出新狀態110所需的相對較慢的記憶體存取而受到限制。亦即,無論下一個輸入104以多快的速度提供給狀態機,下一個輸出108的生成被阻止,直到新狀態110生成並回饋成為當前狀態106為止。此外,計算輸出108所需時間的增加同樣不一定影響迭代時間,因為計算輸出108可以與開始處理下一輸入104並行執行。根據這些事實,可以理解,基於表的狀態機100的迭代間隔由查找及輸出新狀態110所需的時間量控制。基於這些觀察,吾人現在轉向對實施例的描述,此些實施例用以藉由從狀態表查找中移除對當前狀態或先前輸入的任何依賴來減少迭代間隔。
第2圖根據實施例示出了具有減少的迭代間隔的示例基於表的狀態機200。基於表的狀態機200包含狀態表電路202A~202N及多工器(multiplexer; 「MUX」)204。每個狀態表電路202A~202N對應於完整狀態轉移表(例如,如上所示的狀態轉移表A)的子表,其中每個子表僅包含一個可能的當前狀態值的資訊。例如,狀態表電路202A包含僅對應於當前狀態0的狀態轉移資訊,狀態表電路202B包含僅對應於當前狀態1的狀態轉移資訊,以此類推。當接收到輸入104的新值並將其提供給每個狀態表電路202A~202N時,每個此類表查找並提供與每個表的輸入104相對應的狀態及輸出,作為對MUX 204的輸入。注意,為了第2圖中的清楚起見,將每個狀態表電路202A~202N的狀態及輸出描繪成表示為輸出206A~206N的信號線。然而,應當理解,輸出206A~206N各自包含兩個獨立的信號(即,基於對應於特定狀態表電路202A~202N的固定狀態在表中查找的狀態及輸出,以及輸入104)。此外,儘管狀態表電路202A~202N中的每一個被描繪為獨立的電路,但是應當理解,實施例不限於此。例如,狀態表電路202A~202N可包含一個靜態隨機存取記憶體(static random-access memory;「SRAM」),其包含每個狀態表電路202A~202N的所有狀態轉移表。
如上所述,MUX 204分別從狀態表電路202A~202N接收輸出206A~206N,並且進一步用以接收當前狀態106作為輸入。MUX 204(或多工器204)也可被稱為資料選擇器,並且為由電路(例如電晶體、邏輯閘極(諸如AND閘極、NAND閘極、OR閘極、XOR閘極))形成的裝置,此些電路在若干類比或數位輸入信號之間進行選擇,並將所選輸入轉發到單條輸出線。此外,儘管MUX 204被描繪為N輸入MUX,但由於輸出206A~206N中的每一個都包含兩個信號,MUX 204也可以被配置為兩個獨立的N輸入MUX。一個此類MUX用於選擇正確的輸出206A至輸出206N以基於當前狀態106路由到輸出108,而另一個MUX用於選擇正確的輸入以路由到新狀態110。應該注意,當前狀態106將被更新,以反映每次迭代後的新狀態110。
如第2圖所示的基於表的狀態機200從依賴路徑移除狀態表查找/讀取,因為每次查表僅依賴於當前輸入,並且與狀態表讀取相對應的記憶體讀取可被排序緩衝。因此,基於表的狀態機200的迭代間隔僅取決於MUX 204分別從狀態表輸出108及新狀態110路由正確的輸出及狀態所花費的時間。在實施例中,並且取決於狀態機的大小(即,機器的可能狀態的數量),MUX 204的操作可以顯著快於表讀取,當與此類讀取的排序緩衝結合時,表讀取使得能夠以非常高的頻率切換實施例。實施例可實施下文所述的其他效能增強技術。
如上所述,基於表的狀態機100遭受另一缺陷,即按順序處理每個輸入,因為新狀態取決於先前的輸入。亦即,因為每個輸入都依賴於前一個輸入產生的新狀態,所以存在一種阻止完全並行化的依賴關係。上述實施例減少了對知道處理(即,狀態表查找)的最昂貴部分的當前狀態的依賴,但在用作並行輸入狀態機時不一定實現此類狀態獨立性。
例如,考慮第3圖,其根據實施例示出用以並行處理輸入的狀態機300的原始實現。狀態機300包含基於表的狀態機200的四個實例,每個實例包含狀態表電路202A~202N的相應實例。基於表的狀態機200的每個實例接收輸入302~308中的對應一個(分別表示為輸入[0]~輸入[3]),並生成輸出310~316中的對應一個(分別表示為輸出[0]~輸出[3])及新狀態318~324中的一個。此外,新狀態318~324中的每一個被前饋到基於表的狀態機200的下一實例的MUX 204,新狀態324最終被回饋並成為控制基於表的狀態機200的第一實例的MUX 204的當前狀態326。
在第3圖中很明顯,狀態機300的原始實現包含由前饋的新狀態318~322的粗體虛線以及回饋的新狀態324表示的狀態依賴鏈。亦即,輸出[l] 310、輸出[2] 312及輸出[3] 314中的每一個在計算前一階段的新狀態(例如,分別為新狀態318~322中的每一個)之前都不會生成,因為此類新狀態在每一階段驅動對應的MUX 204。換言之,輸出310~316中的每一個直到其對應的MUX 204的延遲施加延遲後才生效,因此獲得包含輸出310~316的四個輸出至少需要MUX 204的四個延遲。不幸地,由於這種依賴性,此類MUX操作無法排序緩衝。在實施例中,移除這種依賴性以實現每個時鐘產生多個輸出的完整排序緩衝。
例如,考慮第4圖,其根據實施例描繪了用以並行處理輸入並藉由消除其狀態依賴性改進第3圖的狀態機300的示例狀態機400。狀態機400包含查表階段428、狀態傳播階段430及輸出選擇階段432。查表階段428包含狀態表電路414~420。狀態傳播階段430包含狀態傳播器408~412,以及輸出選擇階段432包含MUX 420~426。狀態表電路414~420中的每一個對應於如第3圖所示的基於表的狀態機200的狀態表電路202~202N。MUX 420~426中的每一個同樣對應於如第3圖所示的基於表的狀態機200的MUX 204的實例。基於以下關於第4圖的狀態機400的論述,其他結構及操作實施例對於熟習相關領域者將為顯而易見的。
如第4圖所示,狀態表電路414~420各自接收輸入[0]~[3] 302~308中的對應一個,並生成相應的輸出狀態。狀態表電路414生成由狀態傳播器408及MUX 420接收的第一輸出狀態402。狀態表電路416~420中的每一個生成由狀態傳播器408~412中的對應一個接收的相應輸出狀態。狀態傳播器408生成由MUX 422及狀態傳播器410接收的輸出狀態404。狀態傳播器410生成由MUX 424及狀態傳播器412接收的輸出狀態406。狀態傳播器412生成由MUX 426接收的輸出狀態434。MUX 420接收輸出狀態402及當前狀態326,並生成輸出[0] 310及新狀態318。MUX 422接收輸出狀態404及當前狀態326,並生成輸出[l] 312及新狀態320。MUX 424接收輸出狀態406及當前狀態326,並生成輸出[2] 314及新狀態322。MUX 426接收輸出狀態434及當前狀態326,並生成輸出[3] 316及新狀態324。
如第3圖所示,狀態機400藉由使用來自每組狀態表電路的狀態轉移輸出來決定用於後續輸入的狀態轉移表,來移除狀態機300固有的狀態依賴性。決定後續狀態轉移的過程可以被描述為狀態跟蹤,可以藉由以下實例來理解。
假設輸入[0] 302及輸入[l] 304分別等於任意值x及y,並且彼等值及每個可能的當前狀態的狀態表查找如表B中所示:
表B
| 當前狀態 | 輸入[0] | 輸入[1] |
| 0 | 1 | 2 |
| 1 | 3 | 3 |
| 2 | 2 | 0 |
| 3 | 0 | 1 |
表B中所示的每個表條目指示由例如狀態表電路414指示的新狀態,輸入[0] 302及輸入[l] 304的各個值對應於每個可能的當前狀態。狀態跟蹤背後的思想為,在特定當前狀態對應於輸入[0] 302的的情況下,決定與輸入[l] 304對應的當前狀態將是什麼(即,回應於輸入[0]生成的新狀態)。若輸入[0]的當前狀態為0,則可以跟蹤表B找到輸入[l] 302的新狀態。
例如,假設與輸入[0]對應的當前狀態為0。上表顯示,對於輸入[0]處的當前輸入及當前狀態0,新狀態將為1。接下來,在與輸入[l]對應的當前狀態為1 304的情況下(即,由輸入[0] 302及其當前狀態0產生的新狀態),表說明輸入[l]的新狀態為3。下表顯示了在輸入[0] 302及輸入[l] 304的特定值的情況下,每個可能當前狀態的跟蹤及結果狀態轉移表。
跟蹤的狀態轉移表C
上表C舉例說明,對於輸入[0] 302及輸入[l] 304中的當前值以及當前狀態2,對應於輸入[l] 304的適當狀態為0。現在將參考上述狀態傳播表來描述狀態機400及狀態傳播器408的更詳細操作。
| 當前狀態 | 輸入[0] | 輸入[1] |
| 0 | 1 | 0→1→3 = 3 |
| 1 | 3 | 1→3→1 = 1 |
| 2 | 2 | 2→2→0 = 0 |
| 3 | 0 | 3→0→2 = 2 |
狀態機400與狀態機300非常相似,但在幾個關鍵態樣有所不同。首先,參考第2圖及第3圖並如上文所述,輸出206A~206N中的每一個都包含可能的狀態及隨後將由對應的MUX 204選擇的可能的輸出。為了清楚起見,狀態機400僅描述給定組狀態表提供的狀態,並且省去輸出。然而,應當理解,狀態表電路414~420向MUX 420~426提供狀態及輸出,如上文關於基於表的狀態機200所述。第二,狀態機400包含狀態傳播器408~412,下面將進一步詳細描述其操作。第三,MUX 420~426中的每一個對應於第3圖中描繪的每個MUX 204,並且用以由*相同*信號控制。亦即,MUX 420~426中的每一個根據當前狀態326同時為其各自的輸入生成輸出。因此,輸出310~316中的每一個在同一時間(即,在同一時鐘週期上)變為有效,並且移除了第3圖的狀態機300中存在的前述狀態依賴性。透過使用狀態傳播器408~412來完成狀態依賴的移除。儘管透過狀態傳播邏輯(例如,一系列邏輯閘極、觸發器、電晶體等)存在依賴鏈,但邏輯本身並不依賴於當前狀態及輸入之外的任何東西,因此可以完全排序緩衝。
例如,如第4圖的狀態機400所示,狀態表電路416~420並行工作,以在被表示為表查找階段428的排序緩衝階段中同時執行其各自的查表。類似地,在表示為狀態傳播階段430的排序緩衝階段中執行下述的狀態傳播。最後,由輸出選擇階段432中的MUX 420~426中的相應者同時選擇對應於每個輸入的最終輸出及狀態。此外,儘管狀態機400的佈局面積及排序緩衝深度都有所增加,填充排序緩衝的額外時間可以忽略,並且此後狀態機400可以以小於每個階段的計算延遲之和的時鐘週期(即,時鐘週期只需要與完成最慢階段所需的時間一樣長)來交付每個時鐘的多個輸出。
第5圖根據實施例示出第4圖的狀態機400的摘錄部分500,其示出狀態傳播器408操作的態樣。部分500包含狀態表電路414、狀態表電路416、MUX 420、MUX 422及狀態傳播器408。如第5圖所示的狀態表電路414及416各自包含對應於每個可能狀態的狀態表電路202A~202D的對應例子(如上進一步所述)。基於以下關於如第5圖中所示的狀態機400的部分500的論述,其他結構及操作實施例對於熟習相關領域者而言將是顯而易見的。
第5圖在狀態跟蹤實例的上下文中描繪了狀態機400,以及與之對應的表B及跟蹤狀態轉移表C,如上所述。特定而言,為了說明目的,假設輸入[0] 302及輸入[l] 304分別具有值x及y。此外,從狀態表電路414輸出的狀態對應於針對每個可能的狀態給定的輸入[0] 302=x的值。同樣,從狀態表電路416輸出的狀態對應於針對每個可能狀態給定的輸入[l] 304=y的值。
狀態傳播器408用以重新映射給定組狀態表電路的狀態輸出,以考慮如上所示的跟蹤狀態轉移表C中反映的跟蹤狀態。例如,假設當前狀態326=0。跟蹤狀態轉移表C指示下一狀態320的值應為3。因此,狀態傳播器408用以將正確的下一狀態輸出從狀態表電路416路由到MUX 422的輸入0(輸入0為正確的,因為當前狀態326=0)。更具體而言,根據上文在本實例上下文中描述的示例狀態表電路,狀態表電路416指示上文表B中指示的狀態轉移,其指示對於輸入[l] 304上的y值,對於當前狀態0、1、2及3中的每一個,下一狀態分別為2、3、0及1。回顧MUX 422選擇輸入0上具有3的信號線(因為當前狀態為0),狀態傳播器408從狀態表電路416選擇與當前狀態=1對應的下一狀態,因為下一狀態等於3。
繼續本實例,假設當前狀態326為3。根據上面所示的跟蹤狀態轉移表C,當當前狀態326為3時,MUX 422選擇的下一狀態320為2。因此,狀態傳播器408選擇與狀態表電路416中的當前狀態=0對應的下一狀態,因為下一狀態等於2。藉由類似的過程,可以看到,在此實例中,狀態傳播器408將與狀態表電路416的當前狀態2及3相對應的輸出分別路由到MUX 422的輸入2及1。
考慮到這些態樣,可以理解,作為從狀態表電路414輸出的下一狀態402提供上文所述的精確映射。亦即,在此實例中,下一狀態402=[1,3,2,0]可由狀態傳播器408直接用於將正確的下一狀態路由到MUX 422的正確輸入,因為下一狀態402的值與MUX 422上的輸入0至3一一對應,並且此類值指示應該選擇狀態表電路416的輸出0到3中的哪一個。亦即,下一狀態402的狀態值可用於索引狀態表電路416的下一狀態輸出。
例如,下一狀態402的第一元素的值(即,值1)對應於MUX 422的輸入0,並且指示狀態表電路416的當前狀態1的輸出由狀態傳播器408路由到彼輸入。出於同樣的原因,下一狀態402的第二元素(即,值3)對應於MUX 422的輸入1,其將從狀態表電路416接收來自當前狀態=3的狀態表電路的值,以此類推。更簡單而言,下一狀態402的值指示狀態傳播器408從狀態表電路416輸出的下一狀態中的哪一個路由到MUX 422的輸入0到3中的每一個。狀態傳播器408可以以多種方式完成此類路由。例如,狀態傳播器408可以被實現為縱橫交換鍵,或者如第6圖所示,如現在將描述的,用MUX實現。
第6圖根據實施例示出了用於狀態傳播器408的示例系統600的方塊圖。如第6圖所示,系統600包含狀態傳播器408及MUX 422。此外,狀態傳播器408包括第一至第四MUX 602~608,每個MUX從狀態表電路416接收新狀態作為要多工的輸入。MUX 602~608中的每一個進一步接收從狀態表電路414輸出的新狀態之一,並且用以將多工輸入從狀態表電路416切換到MUX輸出。此類輸出隨後被傳送到例如MUX 422,用於根據如上所述的當前狀態進行下一狀態320的最終選擇及輸出。
儘管上面的附圖及對應的描述根據狀態輸出來說明及描述實施例,但一般熟習此項技術者將理解,這些原理同樣適用於根據狀態表電路及狀態傳播邏輯來路由及選擇適當的輸出值。例如,儘管狀態傳播器408及MUX 422在第6圖中示出並在上文中描述,但此種圖示及描述適用於本文揭示的其他狀態傳播器及MUX。
在實施例中,第2圖的狀態表電路202A~202N及第4圖的狀態機400可以以各種方式用於並行處理輸入。例如,第7圖根據實施例示出了狀態機並行處理輸入的方法的流程圖700。繼續參考第2圖及第4圖描述流程圖700。然而,基於以下關於流程圖700的論述,其他結構及操作實施例對於熟習相關領域者而言將是顯而易見的。
流程圖700從步驟702開始。在步驟702,基於第一輸入及一組預定狀態的對應預定狀態生成第一狀態表電路輸出,其中第一狀態表電路輸出對應於第一組狀態表電路,並且共同構成第一組狀態表電路輸出。例如,並繼續參考第4圖的狀態機400,狀態表電路414~420各自包含一組狀態表,其中每個狀態表對應於狀態機400可在其中運行的狀態。例如,對於狀態機400,第2圖的狀態表電路202A~202N分別對應於0~N的狀態(即,預定狀態)。如上所述,狀態機400的輸出及下一狀態取決於狀態機的輸入及當前狀態。藉由維護狀態機400的N個可能狀態中的每一個的查表(即,以狀態表電路202A~202N的形式,其例子併入狀態表電路414~420中的每一個),表格查找不再依賴於當前狀態,因為會同時查找所有可能的輸出及下一狀態值。狀態表電路202A~202N的例子的輸出包含「第一狀態表電路輸出[.]」。儘管第4圖的狀態機400被描繪為生成狀態402~406及434,並且如上所述,但是應當理解,狀態表電路414~420不僅輸出可能的下一狀態,而且相似地輸出可能的輸出,用於藉由例如第4圖的MUX 420進行後續選擇。
第7圖的流程圖700在步驟704繼續。在步驟704中,基於第二輸入及一組預定狀態的對應預定狀態生成第二狀態表電路輸出,其中第二狀態表電路輸出對應於第二組狀態表電路,並且共同構成第二組狀態表電路輸出。例如,並且繼續參考第4圖的狀態機400,第二狀態表電路輸出例如為由狀態表電路416、418或420中的任何一個生成的輸出。例如,假設第二輸入包含輸入[l] 304。在此種情況下,第二狀態表電路輸出為由狀態表電路416生成的彼等輸出。第7圖的流程圖700繼續步驟706。
在步驟706中,基於狀態機的當前狀態,從第一組狀態表電路輸出中選擇第一狀態機輸出。例如,並且繼續參考第4圖的狀態機400,MUX 420從狀態表電路414接收可能的下一狀態及可能的輸出,並基於當前狀態326選擇適當的狀態及輸出,其中第一狀態機輸出對應於輸出[0] 310。
第7圖的流程圖700在步驟708繼續。在步驟708中,基於第一組狀態表電路輸出,選擇第二組狀態表電路輸出的相應輸出作為一組狀態傳播器輸出進行路由。例如,並繼續參考第4圖的狀態機400,狀態傳播器408用以接收狀態表電路416的輸出,並基於狀態402選擇適當組狀態傳播器輸出以路由到MUX 422。例如,並參照第6圖,狀態傳播器408可以包含第6圖的MUX 602~608,每個MUX用以從狀態表電路414接收可能的狀態/輸出中的相應一個,並且隨後使用此類來從狀態表電路416選擇新狀態[0~3]的適當狀態以路由到MUX 422,所有這些都如第6圖所示。狀態傳播器408的此操作用於執行上文更詳細描述的狀態跟蹤操作,從而移除狀態機400原本會對狀態機400的當前狀態的任何依賴。
第7圖的流程圖700在步驟710結束。在步驟710中,基於當前狀態從此組狀態傳播器輸出中選擇第二狀態機輸出。例如,並且繼續參考第4圖的狀態機400,MUX 422接收其中從狀態表電路416的輸出中選擇的狀態傳播器408的輸出,且此後,MUX 422根據向其提供的選擇信號(即,包含作為MUX 426輸出的回饋新狀態324的狀態機400的當前狀態326)所指示選擇相應輸出及與彼輸入相對應的新狀態中的適當一個。
在前面對流程圖700的步驟702~710的論述中,應當理解,有時,此些步驟可以以不同的順序執行,甚至可以與其他步驟同時執行。例如,步驟706的選擇可以在步驟708及/或710的選擇之後執行,或者可以至少部分地並行執行。同樣應該理解,儘管流程圖700描述了以僅並行處理兩個輸入(即,第一及第二輸入)的方式操作狀態機400的方法,但應該理解,第7圖的流程圖700中描述的方法可以擴展到處理任意數量的輸入。例如,並如第4圖所示,狀態機400可用以並行處理4個輸入(即,輸入[0]~輸入[3] 302~308)。其他操作實施例對熟習相關領域者而言將是顯而易見的。進一步應注意,提供前述對狀態機400的操作的一般描述僅用於說明,並且狀態機400的實施例可以包含不同的硬體及/或軟體,並且可以以與上述不同的方式操作。
吾人同樣可以理解,最大時鐘頻率受MUX工作速度的限制,而工作速度又受MUX大小的限制。如上所述,MUX大小由機器中的狀態數以1比1的比例決定。然而,本文的實施例可以採用進一步的最佳化技術,以使具有儘可能多的狀態的狀態機能夠管理MUX的大小。更具體而言,實施例可以使用稀疏狀態轉移表,其中給定輸入的唯一轉移數很小。亦即,實施例可以稀疏地儲存狀態轉移,從而限制所需MUX的大小。
例如,考慮下面的部分狀態轉移表。非稀疏狀態轉移表D:
非稀疏狀態轉移表D
| 輸入 | 當前狀態 | 下一狀態 |
| A | 0 | 0 |
| 1 | 0 | |
| 2 | 0 | |
| 3 | 1 | |
| B | 0 | 1 |
| 1 | 1 | |
| 2 | 2 | |
| 3 | 1 |
在非稀疏狀態轉移表D的情況下,儘管有4種可能的當前狀態,但只有兩種唯一的狀態轉移。吾人可以將此表簡化為稀疏狀態轉移表E:
稀疏狀態轉移表E
| 輸入 | 當前狀態 | 下一狀態 |
| A | 3 | 1 |
| 預設 | 0 | |
| B | 2 | 2 |
| 預設 | 1 |
如上所示稀疏狀態轉移表E在所示輸入的兩個可能的下一狀態之間多工。在本實例中,與上面所示的原始值相比,總體減少量很小。然而,應該理解,此些表格僅為示例性的,對於較大的表格,減少可能更為顯著。
在此實例中,例如第4圖所示的狀態表電路414等狀態表電路的輸出現在為成對的(當前狀態、下一狀態)。為了在下一狀態之間進行多工,必須將實際的當前狀態與這些可能的當前狀態進行比較,以決定要使用哪個下一狀態。若不匹配指定的當前狀態,則使用預設轉移。
在並行處理多個輸入的情況下,諸如使用第4圖所示的狀態機400,有時可能進一步稀疏有效狀態轉移的數量,因為對於一起考慮的某些輸入,只有某些狀態為可能的。例如,使用上面所示的非稀疏狀態轉移表D,考慮A後面的B的輸入。A的輸入只能導致1或0的下一狀態。因此,輸入B的下一狀態只能為1。
在上面的實例中,吾人假設一個輸入的所有可能輸入狀態都為有效的。然而,情況並非總是如此。對於某些狀態機,某些輸入及當前狀態組合無效。例如,考慮這個新的轉移表。具有無效輸入的狀態轉移表E:
具有無效輸入的狀態轉移表E
具有無效輸入的狀態轉移表E可以類似地稀疏化,生成下表,具有無效輸入的稀疏狀態轉移表F:
具有無效輸入的狀態轉移表F
| 輸入 | 當前狀態 | 下一狀態 |
| A | 0 | 錯誤 |
| 1 | 0 | |
| 2 | 錯誤 | |
| 3 | 1 | |
| B | 0 | 錯誤 |
| 1 | 1 | |
| 2 | 2 | |
| 3 | 錯誤 |
| 輸入 | 當前狀態 | 下一狀態 |
| A | 1 | 0 |
| 3 | 1 | |
| B | 0 | 1 |
| 3 | 2 |
在具有無效輸入的稀疏狀態轉移表F的情況下,亦可以使用動態資訊將可能的起始狀態的數量減少為一序列輸入。再次考慮輸入A後接B,輸入B的唯一可能的起始狀態為0及3。若吾人看看A的下一可能狀態,唯一有效的狀態為0,其對應於當前狀態1。在此種情況下,可以從狀態轉移表中消除與狀態轉移(3,1)相對應的輸入A的狀態轉移。
在運行時,實施例可以使用上述兩種技術來減少稀疏轉移的數量。藉由在操作典型工作負荷的同時分析狀態機,基於稀疏化後的平均或典型轉移次數來決定硬體MUX大小的選擇,可以實現進一步的改進。以這種方式最佳化MUX大小允許由於減少了MUX的延遲而進一步增加時鐘頻率。當然,在轉移次數超過最佳化MUX大小的情況下,需要較慢的回饋路徑來處理任何情況。
III.示例電腦系統實現
狀態表電路102、狀態表電路202A~202N、MUX 204、狀態表電路414~420、狀態傳播器408~412、MUX 420~426及/或MUX 602~608以及流程圖700中的每一個都可以在硬體中實現,或者在與軟體及/或韌體結合的硬體中實現。例如,狀態表電路102、狀態表電路202A~202N、MUX 204、狀態表電路414~420、狀態傳播器408~412、MUX 420~426及/或MUX 602~608,以及流程圖700可以被實現為用以在一或多個處理器中執行並儲存在電腦可讀儲存媒體中的電腦程式代碼/指令。或者,狀態表電路102、狀態表電路202A~202N、MUX 204、狀態表電路414~420、狀態傳播器408~412、MUX 420~426及/或MUX 602~608以及流程圖700可以實現為硬體邏輯/電路系統。
例如,在一實施例中,狀態表電路102、狀態表電路202A~202N、MUX 204、狀態表電路414~420、狀態傳播器408~412、MUX 420~426及/MUX 602~608以及流程圖700的任意組合中的一或多個可以在SoC中一起實現。SoC可包含積體電路晶片,其包含處理器(例如,中央處理器(center processing unit; CPU)、微控制器、微處理器、數位訊號處理器(digital signal processor; DSP)等)、記憶體、一或多個通信介面及/或其他電路中的一或多個,並且可以選擇性地執行接收到的程式碼及/或包含嵌入式韌體以執行功能。
第8圖描繪了計算裝置800的示例性實現,其中可以實現實施例。例如,在一實施例中,狀態表電路102、狀態表電路202A~202N、MUX 204、狀態表電路414~420、狀態傳播器408~412、MUX 420~426及/或MUX 602~608以及流程圖700的任意組合中的一或多個,可以在一或多個計算裝置中實現,此些計算裝置類似於固定或行動電腦實施例中的計算裝置800,包含計算裝置800的一或多個特徵及/或替代特徵。本文提供的計算裝置800的描述用於說明目的,並不意欲限制。如熟習相關領域者所知,實施例可以在其他類型的電腦系統中實現。
如第8圖所示,計算裝置800包括被稱為處理器電路802的一或多個處理器、系統記憶體804及將包含系統記憶體804的各種系統元件耦合到處理器電路802的匯流排806。處理器電路802為作為中央處理單元(CPU)、微控制器、微處理器及/或其他實體硬體處理器電路在一或多個實體硬體電路裝置元件及/或積體電路裝置(半導體材料晶片或晶粒)中實現的電氣及/或光學電路。處理器電路802可以執行儲存在電腦可讀媒體中的程式碼,諸如作業系統830的程式碼、應用程式832、其他程式834等。匯流排806表示幾種匯流排結構類型中的一或多種,包含記憶體匯流排或記憶體控制器、週邊匯流排、加速圖形埠、以及使用各種匯流排架構的處理器或本地匯流排。系統記憶體804包含唯讀記憶體(read only memory; ROM)808及隨機存取記憶體(random access memory; RAM)810。基本輸入/輸出系統812(basic input/output system; BIOS)儲存在ROM 808中。
計算裝置800進一步具有以下一或多個驅動器:用於讀取及寫入硬碟的硬碟驅動器814,用於讀取或寫入可移除磁碟818的磁碟驅動器816,以及用於讀取或寫入諸如CD ROM、DVD ROM、或其他光學媒體等可移除光碟822的光碟驅動器820。硬碟驅動器814、磁碟驅動器816及光碟驅動器820分別藉由硬碟驅動器介面824、磁碟驅動器介面826及光碟驅動器介面828連接到匯流排806。驅動器及其相關聯的電腦可讀媒體為電腦提供電腦可讀指令、資料結構、程式模組及其他資料的非揮發性儲存。儘管描述了硬碟、可移除磁碟及可移除光碟,但其他類型的基於硬體的電腦可讀儲存媒體可用於儲存資料,諸如快閃記憶卡、數位視訊碟、RAM、ROM及其他硬體儲存媒體。
許多程式模組可以儲存在硬碟、磁碟、光碟、ROM或RAM上。這些程式包含作業系統830、一或多個應用程式832、其他程式834及程式資料836。應用程式832或其他程式834可包含例如用於實現狀態表電路102、狀態表電路202A~202N、MUX 204、狀態表電路414~420、狀態傳播器408~412、MUX 420~426及/或MUX 602~608,及流程圖700及/或本文描述的其他實施例的電腦程式邏輯(例如,電腦程式代碼或指令)。
使用者可以透過諸如鍵盤838及指向裝置840之類的輸入裝置將命令及資訊輸入到計算裝置800中。其他輸入裝置(未示出)可包含麥克風、操縱桿、遊戲台、衛星天線、掃描器、觸控式螢幕及/或觸控板、用於接收語音輸入的語音辨識系統、用於接收手勢輸入的手勢識別系統等。這些及其他輸入裝置經由耦合到匯流排806的串列埠介面842而連接到處理器電路802,但可以藉由其他介面連接,諸如平行埠、遊戲連接埠或通用串列匯流排(universal serial bus; USB)。
顯示螢幕844進一步經由諸如視訊配接器846的介面連接到匯流排806。顯示螢幕844可以位於計算裝置800的外部,或者併入計算裝置800中。顯示螢幕844可以顯示資訊,以及作為用於接收使用者命令及/或其他資訊(例如,藉由觸摸、手指手勢、虛擬鍵盤等)的使用者介面。除了顯示螢幕844之外,計算裝置800還可以包含其他週邊輸出裝置(未示出),諸如揚聲器及印表機。
計算裝置800透過配接器或網路介面850、數據機852或用於在網路上建立通信的其他構件連接到網路848(例如,網際網路)。數據機852可以為內部的或外部的,可以經由串列埠介面842連接到匯流排806,如第8圖所示,或者可以使用另一種介面類別型(包含平行介面)連接到匯流排806。
如本文所用,術語「電腦程式媒體」、「電腦可讀媒體」及「電腦可讀儲存媒體」用於指實體硬體媒體,諸如與硬碟驅動器814相關聯的硬碟、可移除磁碟818、可移除光碟822、其他實體硬體媒體諸如RAM、ROM、快閃記憶卡、數位視訊碟片、zip碟片、MEM、基於奈米技術的儲存裝置,以及其他類型的實體/有形硬體儲存媒體。此類電腦可讀儲存媒體與通信媒體不同且不重疊(不包含通信媒體)。通信媒體將電腦可讀指令、資料結構、程式模組或其他資料包含在調變資料信號(諸如載波)中。術語「調變資料信號」是指以編碼信號中資訊的方式設置或改變其一或多個特性的信號。作為實例而非限制,通信媒體包含無線媒體,諸如聲學、射頻、紅外及其他無線媒體,以及有線媒體。實施例進一步針對與針對電腦可讀儲存媒體的實施例分離且不重疊的此類通信媒體。
如上所述,電腦程式及模組(包含應用程式832及其他程式834)可以儲存在硬碟、磁碟、光碟、ROM、RAM或其他硬體儲存媒體上。此類電腦程式也可經由網路介面850、串列埠介面842或任何其他介面類別型接收。當由應用程式執行或載入時,此類電腦程式使計算裝置800能夠實現本文描述的實施例的特徵。因此,此類電腦程式代表計算裝置800的控制器。
實施例進一步係關於包含儲存在任何電腦可讀媒體上的電腦代碼或指令的電腦程式產品。此類電腦程式產品包含硬碟驅動器、光碟驅動器、記憶體裝置封包、可擕式記憶棒、記憶卡及其他類型的實體儲存硬體。
IV.其他示例實施例
本文提供了一種用以並行處理輸入串流的多個輸入的狀態機。狀態機包含:第一組狀態表電路,第一組的每個狀態表電路對應於一組預定狀態的一預定狀態,並且用以基於第一輸入及對應的預定狀態生成第一狀態表電路輸出,其中與第一組狀態表電路的每個狀態表電路相對應的此些第一狀態表電路輸出共同構成第一組狀態表電路輸出;第二組狀態表電路,第二組的每個狀態表電路對應於此組預定狀態的一預定狀態,並且用以基於第二輸入及對應的預定狀態生成第二狀態表電路輸出,其中與第二組狀態表電路的每個狀態表電路相對應的該第二狀態表電路輸出構成第二組狀態表電路輸出;第一輸出多工器(MUX),用以接收第一組狀態表電路輸出及狀態機的當前狀態,並基於此當前狀態從第一組狀態表電路輸出中選擇第一狀態機輸出;狀態傳播器,用以接收第一組及第二組狀態表電路輸出,並基於第一組狀態表電路輸出選擇第二組狀態表電路輸出的相應輸出中的哪一個以路由到狀態傳播器的相應輸出,該等相應輸出包含一組狀態傳播器輸出;以及第二輸出MUX,用於接收此組狀態傳播器輸出及狀態機的當前狀態,並基於當前狀態從此組狀態傳播器輸出中選擇第二狀態機輸出。
在前述狀態機的實施例中,第一及第二組狀態表電路輸出的每個狀態表電路輸出包含輸出值及狀態值,且其中第一及第二狀態機輸出包含輸出值。
在前述狀態機的實施例中,狀態傳播器進一步用以基於與第一組狀態表電路輸出的每個狀態表電路輸出對應的此些狀態值,選擇第二組狀態表電路輸出中的相應輸出中的哪一個以路由到狀態傳播器的相應輸出。
在前述狀態機的實施例中,第一輸出MUX進一步用以從與第一組狀態表電路輸出的每個狀態表電路輸出相對應的此些輸出值中選擇第一狀態表輸出。
在前述狀態機的一實施例中,狀態機進一步包含:一狀態多工器,用以接收狀態機的當前狀態及與第二組狀態表電路輸出相對應的此些狀態值,並選擇狀態機的下一狀態。
在前述狀態機的一實施例中,狀態機進一步包含:一或多個附加輸入階段,一或多個附加輸入階段中的每一個用以分別接收一或多個附加輸入,一或多個附加輸入臨時位於該第一輸入與該第二輸入之間,此一或多個附加輸入階段包含:一組附加的狀態表電路,每個狀態表電路對應於此組預定狀態的一預定狀態,並且用以基於一或多個附加輸入中的相應一個及對應的預定狀態來生成狀態表電路輸出,其中與此組附加狀態表電路中的每個狀態表電路相對應的狀態表電路輸出共同構成一組附加狀態表電路輸出;一附加狀態傳播器,用以接收此組附加狀態表電路輸出,並基於與從一狀態表電路接收的此些狀態表電路輸出相對應的此些狀態值,將此組附加狀態表電路輸出的每個輸出路由到附加狀態傳播器的各個輸出,狀態表電路與輸入串流的臨時下一個輸入相對應;以及一附加輸出MUX,用以接收此組附加的狀態表電路輸出及狀態機的當前狀態,並基於狀態機的當前狀態從此組附加的狀態表電路輸出中選擇附加的狀態表輸出。
在前述狀態機的一實施例中,與一或多個附加輸入階段中的一個對應的每一組附加狀態表電路、附加狀態傳播器及附加輸出mux在排序緩衝中操作,使得第一、第二及附加狀態表輸出中的每一個在同一時鐘週期上有效。
本文提供了一種用於配置為並行處理輸入的狀態機的方法。方法包含以下步驟:基於第一輸入及一組預定狀態的對應預定狀態生成第一狀態表電路輸出,其中第一狀態表電路輸出對應於第一組狀態表電路並且共同構成第一組狀態表電路輸出;基於第二輸入及此組預定狀態中的相應預定狀態生成第二狀態表電路輸出,其中第二狀態表電路輸出對應於第二組狀態表電路並且共同構成第二組狀態表電路輸出;基於狀態機的當前狀態,從第一組狀態表電路輸出中選擇第一狀態機輸出;基於第一組狀態表電路輸出的此些值,選擇第二組狀態表電路輸出的哪個相應輸出作為一組狀態傳播器輸出進行路由;以及基於當前狀態從此組狀態傳播器輸出中選擇第二狀態機輸出。
在前述方法的實施例中,第一及第二組狀態表電路輸出的每個狀態表電路輸出包含輸出值及狀態值,並且其中第一及第二狀態機輸出包含輸出值。
在前述方法的一實施例中,選擇第二組狀態表電路輸出的相應輸出進一步包含以下步驟,基於與第一組狀態表電路的每個狀態表電路輸出對應的狀態值,選擇第二組狀態表電路輸出的相應輸出,以路由到狀態傳播器的相應輸出。
在前述方法的實施例中,選擇第一狀態機輸出進一步包含以下步驟,從與第一組狀態表電路輸出的每個狀態表電路輸出相對應的輸出值中選擇輸出值。
在前述方法的實施例中,方法進一步包含以下步驟,基於狀態機的當前狀態從與第二組狀態表電路輸出相對應的狀態值中選擇狀態機的下一狀態。
在前述方法的一實施例中,方法進一步包含以下步驟:生成一或多個附加狀態機輸出,一或多個附加狀態機輸出中的每一個對應於一或多個附加輸入中的相應一個,一或多個附加輸入臨時位於第一與第二輸入之間,所述生成步驟包含針對此一或多個附加輸入中的每一個:基於一或多個附加輸入中的相應一個及一組預定狀態中的對應預定狀態,生成一組附加狀態表電路輸出;基於與輸入串流的一臨時下一個輸入相對應的一組狀態表電路輸出的此些值,選擇要路由的此組附加狀態表電路輸出中的哪個相應輸出作為一組附加狀態傳播器輸出;以及基於當前狀態從此組附加狀態傳播器輸出選擇一或多個附加狀態機輸出中的相應一個。
在前述方法的一實施例中,方法進一步包含以下步驟,藉由排序緩衝以下步驟來運行狀態機:生成一組附加狀態表電路輸出,選擇一組附加狀態表電路輸出中的哪個相應輸出,並選擇一或多個附加狀態機輸出中的相應一個。
本文提供一種電腦程式產品,包含一電腦可讀記憶體裝置,其上記錄有電腦程式邏輯,當由計算裝置的至少一個處理器執行時,該電腦程式邏輯使至少一個處理器執行實施狀態機的操作,此狀態機用以並行處理輸入。此些操作包含:基於第一輸入及一組預定狀態的對應預定狀態生成第一狀態表電路輸出,其中第一狀態表電路輸出對應於第一組狀態表電路並且共同構成第一組狀態表電路輸出;基於第二輸入及此組預定狀態中的相應預定狀態生成第二狀態表電路輸出,其中第二狀態表電路輸出對應於第二組狀態表電路並且共同構成第二組狀態表電路輸出;基於狀態機的當前狀態,從第一組狀態表電路輸出中選擇第一狀態機輸出;基於第一組狀態表電路輸出的此些值,選擇第二組狀態表電路輸出的哪個相應輸出作為一組狀態傳播器輸出進行路由;以及基於當前狀態從此組狀態傳播器輸出中選擇第二狀態機輸出。
在前述電腦程式產品的實施例中,第一及第二組狀態表電路輸出的每個狀態表電路輸出包含輸出值及狀態值,並且其中第一及第二狀態機輸出包含輸出值。
在前述電腦程式產品的實施例中,選擇第一狀態機輸出進一步包含以下步驟,從與第一組狀態表電路輸出的每個狀態表電路輸出相對應的輸出值中選擇輸出值。
在前述電腦程式產品的一實施例中,操作進一步包含以下步驟,基於狀態機的當前狀態從與第二組狀態表電路輸出相對應的狀態值中選擇狀態機的下一狀態。
在前述電腦程式產品的一實施例中,操作進一步包含以下步驟:生成一或多個附加狀態機輸出,一或多個附加狀態機輸出中的每一個對應於一或多個附加輸入中的相應一個,一或多個附加輸入臨時位於第一與第二輸入之間,該生成步驟包含針對此一或多個附加輸入中的每一個:基於一或多個附加輸入中的相應一個及一組預定狀態中的對應預定狀態,生成一組附加狀態表電路輸出;基於與輸入串流的一臨時下一個輸入相對應的一組狀態表電路輸出的此些值,選擇要路由的此組附加狀態表電路輸出中的哪個相應輸出作為一組附加狀態傳播器輸出;以及基於當前狀態從此組附加狀態傳播器輸出選擇一或多個附加狀態機輸出中的相應一個。
在前述電腦程式產品的一實施例中,電腦程式產品進一步包含以下步驟,排序緩衝以下步驟:生成一組附加狀態表電路輸出,選擇此組附加狀態表電路輸出中的哪個相應輸出,並選擇一或多個附加狀態機輸出中的相應一個。
V.結論
儘管上文已經描述了所揭示標的的各種實施例,但是應當理解,它們僅作為示例而非限制來呈現。熟習相關領域者將理解,在不脫離如所附申請專利範圍中所定義的實施例的精神及範圍的情況下,可以對其中的形式及細節進行各種改變。因此,所揭示標的的廣度及範圍不應受到上述任何示例性實施例的限制,而應僅根據以下申請專利範圍及其等效物來定義。
0:輸入
1:輸入
2:輸入
3:輸入
100:基於表的狀態機
102:狀態表電路
104:輸入
106:當前狀態
108:輸出
110:新狀態
200:基於表的狀態機
202A:狀態表電路
202B:狀態表電路
202C:狀態表電路
202D:狀態表電路
202N:狀態表電路
204:多工器(「MUX」)
206A:輸出
206B:輸出
206N:輸出
300:狀態機
302:輸入
304:輸入
306:輸入
308:輸入
310:輸出
312:輸出
314:輸出
316:輸出
318:新狀態
320:新狀態
322:新狀態
324:新狀態
326:當前狀態
400:狀態機
402:第一輸出狀態
404:輸出狀態
406:輸出狀態
408:查表階段/狀態傳播器
410:狀態傳播器
412:狀態傳播器
414:狀態表電路
416:狀態表電路
418:狀態表電路
420:MUX/狀態表電路
422:MUX
424:MUX
426:MUX
428:表查找階段
430:狀態傳播階段
432:輸出選擇階段
434:狀態
500:部分
600:系統
602:MUX
604:MUX
606:MUX
608:MUX
700:流程圖
702:步驟
704:步驟
706:步驟
708:步驟
710:步驟
800:計算裝置
802:處理器電路
804:系統記憶體
806:匯流排
808:ROM
810:隨機存取記憶體(RAM)
812:基本輸入/輸出系統
814:硬碟驅動器
816:磁碟驅動器
818:可移除磁碟
820:光碟驅動器
822:可移除光碟
824:硬碟驅動器介面
826:磁碟驅動器介面
828:光碟驅動器介面
830:作業系統
832:應用程式
834:程式
836:程式資料
838:鍵盤
840:指向裝置
842:串列埠介面
844:顯示螢幕
846:視訊配接器
848:網路
850:網路介面
852:數據機
併入本文並構成說明書一部分的附圖示出了本申請案的實施例,並與說明書一起進一步用於解釋實施例的原理,並使熟習相關領域者能夠製作及使用此些實施例。
第1圖根據實施例示出示例基於表的狀態機。
第2圖根據實施例示出具有減少迭代間隔的示例基於表的狀態機。
第3圖根據實施例示出用以並行處理輸入的狀態機的示例原始實施方式。
第4圖根據一實施例示出用以並行處理輸入並藉由消除其狀態依賴性來改進第3圖的狀態機的示例狀態機。
第5圖根據實施例示出了第4圖的狀態機的摘錄部分,其示出了狀態傳播器操作的態樣。
第6圖根據實施例示出示例狀態傳播器的方塊圖。
第7圖根據實施例示出用以並行處理輸入的狀態機的方法的流程圖。
第8圖為其中可以實現實施例的示例電腦系統的方塊圖。
當結合附圖進行下面闡述的具體實施方式時,實施例的特徵及優點將變得更加明顯,在附圖中,類似的元件符號識別全文的對應元件。在附圖中,類似的元件符號大體表示相同、功能相似及/或結構相似的元件。元件首次出現的圖形由對應元件符號中最左邊的數字表示。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
102:狀態表電路
104:輸入
106:當前狀態
108:輸出
110:新狀態
Claims (20)
- 一種用以並行處理一輸入串流的多個輸入的狀態機,包含: 一第一組狀態表電路,該第一組的每個狀態表電路對應於一組預定狀態的一預定狀態,並且用以基於一第一輸入及該對應的預定狀態生成第一狀態表電路輸出,其中與該第一組狀態表電路的每個狀態表電路相對應的該些第一狀態表電路輸出共同構成一第一組狀態表電路輸出; 一第二組狀態表電路,該第二組的每個狀態表電路對應於該組預定狀態的一預定狀態,並且用以基於一第二輸入及該對應的預定狀態生成第二狀態表電路輸出,其中與該第二組狀態表電路的每個狀態表電路相對應的該第二狀態表電路輸出構成一第二組狀態表電路輸出; 一第一輸出多工器(MUX),用以接收該第一組狀態表電路輸出及該狀態機的一當前狀態,並基於該當前狀態從該第一組狀態表電路輸出中選擇一第一狀態機輸出; 一狀態傳播器,用以接收該第一組及第二組狀態表電路輸出,並基於該第一組狀態表電路輸出選擇該第二組狀態表電路輸出的相應輸出中的哪一個以路由到該狀態傳播器的相應輸出,該些相應輸出包含一組狀態傳播器輸出;以及 一第二輸出MUX,用以接收該組狀態傳播器輸出及該狀態機的該當前狀態,並基於該當前狀態從該組狀態傳播器輸出中選擇一第二狀態機輸出。
- 如請求項1所述的狀態機,其中該第一組及第二組狀態表電路輸出的每個狀態表電路輸出包含一輸出值及一狀態值,並且其中該第一組及第二組狀態機輸出包含輸出值。
- 如請求項2所述的狀態機,其中該狀態傳播器進一步用以基於與該第一組狀態表電路輸出的每個狀態表電路輸出對應的該些狀態值,選擇該第二組狀態表電路輸出中的相應輸出中的哪一個以路由到該狀態傳播器的相應輸出。
- 如請求項2所述的狀態機,其中該第一輸出MUX進一步用以從與該第一組狀態表電路輸出的每個狀態表電路輸出相對應的該些輸出值中選擇該第一狀態表輸出。
- 如請求項2所述的狀態機,進一步包含: 一狀態MUX,用以接收該狀態機的該當前狀態及與該第二組狀態表電路輸出相對應的該些狀態值,並選擇該狀態機的一下一狀態。
- 如請求項2所述的狀態機,進一步包含一或多個附加輸入階段,該一或多個附加輸入階段中的每一個用以分別接收一或多個附加輸入,該一或多個附加輸入臨時位於該第一輸入與該第二輸入之間,該一或多個附加輸入階段包含: 一組附加的狀態表電路,每個狀態表電路對應於該組預定狀態中的一預定狀態,並且用以基於該一或多個附加輸入中的一相應附加輸入及該對應的預定狀態生成一狀態表電路輸出,其中與該組附加狀態表電路中的每個狀態表電路相對應的該狀態表電路輸出共同構成一組附加狀態表電路輸出; 一附加狀態傳播器,用以接收該組附加狀態表電路輸出,並基於與從一狀態表電路接收的該些狀態表電路輸出相對應的該些狀態值,將該組附加狀態表電路輸出的每個輸出路由到該附加狀態傳播器的相應輸出,該狀態表電路輸出與該輸入串流的一臨時下一個輸入相對應;以及 一附加輸出MUX,用以接收該組附加的狀態表電路輸出及該狀態機的該當前狀態,並基於該狀態機的該當前狀態從該組附加的狀態表電路輸出中選擇一附加的狀態表輸出。
- 如請求項6所述的狀態機,其中與該一或多個附加輸入階段中的一個對應的每一組附加狀態表電路、附加狀態傳播器及附加輸出多工器在排序緩衝中運行,使得該第一、第二及附加狀態表輸出中的每一個在同一時鐘週期上有效。
- 一種用於配置為並行處理輸入的一狀態機的方法,包含以下步驟: 基於一第一輸入及一組預定狀態之一對應預定狀態生成第一狀態表電路輸出,其中該第一狀態表電路輸出對應於一第一組狀態表電路並共同構成一第一組狀態表電路輸出; 基於一第二輸入及該組預定狀態中的一對應預定狀態生成第二狀態表電路輸出,其中該第二狀態表電路輸出對應於一第二組狀態表電路並且共同構成一第二組狀態表電路輸出; 基於該狀態機的一當前狀態,從該第一組狀態表電路輸出中選擇一第一狀態機輸出; 基於該第一組狀態表電路輸出,選擇該第二組狀態表電路輸出的相應輸出中的哪一個作為一組狀態傳播器輸出進行路由;以及 基於該當前狀態從該組狀態傳播器輸出中選擇一第二狀態機輸出。
- 如請求項8所述的方法,其中該第一組及第二組狀態表電路輸出的每個狀態表電路輸出包含一輸出值及一狀態值,並且其中該第一組及第二組狀態機輸出包含輸出值。
- 如請求項9所述的方法,其中選擇該第二組狀態表電路輸出的該些相應輸出之步驟進一步包含以下步驟,基於與該第一組狀態表電路輸出的每個狀態表電路輸出對應的該些狀態值,選擇該第二組狀態表電路輸出的該些相應輸出,以路由到該狀態傳播器的相應輸出。
- 如請求項9所述的方法,其中選擇該第一狀態機輸出之步驟進一步包含以下步驟,從與該第一組狀態表電路輸出的每個狀態表電路輸出相對應的該些輸出值中選擇一輸出值。
- 如請求項9所述的方法,進一步包含以下步驟,基於該狀態機的該當前狀態,從與該第二組狀態表電路輸出相對應的該些狀態值中選擇該狀態機的一下一個狀態。
- 如請求項9所述的方法,進一步包含以下步驟: 生成一或多個附加狀態機輸出,該一或多個附加狀態機輸出中的每一個對應於一或多個附加輸入中的一相應一個,該一或多個附加輸入臨時位於該第一與第二輸入之間,該生成步驟包含以下步驟,針對該一或多個附加輸入中的每一個: 基於該一或多個附加輸入中的該相應一個及一組預定狀態中的一對應預定狀態,生成一組附加狀態表電路輸出; 基於與該輸入串流的一臨時下一個輸入相對應的一組狀態表電路輸出的該些值,選擇要路由的該組附加狀態表電路輸出中的哪個相應輸出作為一組附加狀態傳播器輸出;以及 基於該當前狀態,從該組附加狀態傳播器輸出中選擇該一或多個附加狀態機輸出中的該相應一個。
- 如請求項13所述的方法,進一步包含以下步驟,藉由排序緩衝以下步驟來操作該狀態機:生成一組附加狀態表電路輸出,選擇該組附加狀態表電路輸出中的哪個相應輸出,並選擇該一或多個附加狀態機輸出中的該相應一個。
- 一種電腦程式產品,包含一電腦可讀記憶體裝置,其上記錄有電腦程式邏輯,當由一計算裝置的至少一個處理器執行時,使該至少一個處理器執行實施一狀態機的操作,該狀態機用以並行處理多個輸入,該些操作包含以下步驟: 基於一第一輸入及一組預定狀態的一對應預定狀態生成第一狀態表電路輸出,其中該第一狀態表電路輸出對應於一第一組狀態表電路並且共同構成一第一組狀態表電路輸出; 基於一第二輸入及該組預定狀態的一對應預定狀態生成多二狀態表電路輸出,其中該第二狀態表電路輸出對應於一第二組狀態表電路並且共同構成一第二組狀態表電路輸出; 基於該狀態機的一當前狀態,從該第一組狀態表電路輸出中選擇一第一狀態機輸出; 基於該第一組狀態表電路輸出的該些值,選擇該第二組狀態表電路輸出的哪個相應輸出作為一組狀態傳播器輸出進行路由;以及 基於該當前狀態從該組狀態傳播器輸出中選擇一第二狀態機輸出。
- 如請求項15所述的電腦程式產品,其中該第一組及第二組狀態表電路輸出的每個狀態表電路輸出包含一輸出值及一狀態值,並且其中該些第一及第二狀態機輸出包含輸出值。
- 如請求項16所述的電腦程式產品,其中選擇該第一狀態機輸出的步驟包含以下步驟,從與該第一組狀態表電路輸出的每個狀態表電路輸出相對應的該些輸出值中選擇一輸出值。
- 如請求項16所述的電腦程式產品,其中該些操作進一步包含以下步驟,基於該狀態機的該當前狀態,從與該第二組狀態表電路輸出相對應的該些狀態值中選擇該狀態機的一下一狀態。
- 如請求項16所述的電腦程式產品,其中該些操作進一步包含以下步驟: 生成一或多個附加狀態機輸出,該一或多個附加狀態機輸出中的每一個對應於一或多個附加輸入中的一相應一個,該一或多個附加輸入臨時位於該第一與第二輸入之間,該生成步驟包含以下步驟,針對該一或多個附加輸入中的每一個: 基於該一或多個附加輸入中的該相應一個及一組預定狀態中的一對應預定狀態,生成一組附加狀態表電路輸出; 基於與該輸入串流的一臨時下一個輸入相對應的一組狀態表電路輸出的該些值,選擇要路由的該組附加狀態表電路輸出中的哪個相應輸出作為一組附加狀態傳播器輸出;以及 基於該當前狀態,從該組附加狀態傳播器輸出中選擇該一或多個附加狀態機輸出中的該相應一個。
- 如請求項19所述的電腦程式產品,其中該些操作進一步包含以下步驟:排序緩衝以下步驟,生成一組附加狀態表電路輸出,選擇該組附加狀態表電路輸出中的哪個相應輸出,以及選擇該一或多個附加狀態機輸出中的該相應一個。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202063078737P | 2020-09-15 | 2020-09-15 | |
| US17/178,017 | 2021-02-17 | ||
| US17/178,017 US11381241B2 (en) | 2020-09-15 | 2021-02-17 | High-performance table-based state machine |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202303383A TW202303383A (zh) | 2023-01-16 |
| TWI905359B true TWI905359B (zh) | 2025-11-21 |
Family
ID=80627206
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111101407A TWI905359B (zh) | 2020-09-15 | 2022-01-13 | 高效能的基於表的狀態機 |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US11381241B2 (zh) |
| EP (1) | EP4214599A1 (zh) |
| CN (1) | CN116113920A (zh) |
| TW (1) | TWI905359B (zh) |
| WO (1) | WO2022060431A1 (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11989508B2 (en) | 2020-09-15 | 2024-05-21 | Microsoft Technology Licensing, Llc | High-performance microcoded text parser |
| US12530454B2 (en) * | 2021-09-30 | 2026-01-20 | Acronis International Gmbh | Behavior analysis based on finite-state machine for malware detection |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120017066A1 (en) * | 2003-07-24 | 2012-01-19 | Martin Vorbach | Low latency massive parallel data processing device |
| US8766666B2 (en) * | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
| US10289093B1 (en) * | 2017-12-21 | 2019-05-14 | Xilinx, Inc. | Runtime adaptive generator circuit |
| TW202026858A (zh) * | 2018-09-28 | 2020-07-16 | 美商高通公司 | 在深度神經網路中利用啟動稀疏性 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5394557A (en) | 1992-12-30 | 1995-02-28 | Intel Corporation | State machine operating in multiple parallel phase and method thereof |
| US20040083466A1 (en) | 2002-10-29 | 2004-04-29 | Dapp Michael C. | Hardware parser accelerator |
| WO2004107111A2 (en) | 2003-05-23 | 2004-12-09 | Sensory Networks, Inc. | Efficient representation of state transition tables |
| US20110302394A1 (en) | 2010-06-08 | 2011-12-08 | International Business Machines Corporation | System and method for processing regular expressions using simd and parallel streams |
| US11989508B2 (en) * | 2020-09-15 | 2024-05-21 | Microsoft Technology Licensing, Llc | High-performance microcoded text parser |
-
2021
- 2021-02-17 US US17/178,017 patent/US11381241B2/en active Active
- 2021-05-28 WO PCT/US2021/034686 patent/WO2022060431A1/en not_active Ceased
- 2021-05-28 EP EP21735478.6A patent/EP4214599A1/en active Pending
- 2021-05-28 CN CN202180063078.6A patent/CN116113920A/zh active Pending
-
2022
- 2022-01-13 TW TW111101407A patent/TWI905359B/zh active
- 2022-06-03 US US17/832,379 patent/US11863182B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120017066A1 (en) * | 2003-07-24 | 2012-01-19 | Martin Vorbach | Low latency massive parallel data processing device |
| US8766666B2 (en) * | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
| US10289093B1 (en) * | 2017-12-21 | 2019-05-14 | Xilinx, Inc. | Runtime adaptive generator circuit |
| TW202026858A (zh) * | 2018-09-28 | 2020-07-16 | 美商高通公司 | 在深度神經網路中利用啟動稀疏性 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202303383A (zh) | 2023-01-16 |
| WO2022060431A1 (en) | 2022-03-24 |
| US20220085815A1 (en) | 2022-03-17 |
| US11381241B2 (en) | 2022-07-05 |
| US20220294447A1 (en) | 2022-09-15 |
| US11863182B2 (en) | 2024-01-02 |
| CN116113920A (zh) | 2023-05-12 |
| EP4214599A1 (en) | 2023-07-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8078899B2 (en) | Asynchronous conversion circuitry apparatus, systems, and methods | |
| US9158328B2 (en) | Memory array clock gating scheme | |
| WO2015121713A1 (en) | Fpga architecture and design automation through constrained placement | |
| JP6517626B2 (ja) | 再構成可能な半導体装置 | |
| JP3604323B2 (ja) | クロック切替回路 | |
| US8977835B2 (en) | Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency | |
| US11863182B2 (en) | High-performance table-based state machine | |
| US8930742B2 (en) | Clock signals for dynamic reconfiguration of communication link bundles | |
| US20240273287A1 (en) | High-performance microcoded text parser | |
| US6959315B2 (en) | Self-timed digital processing circuits | |
| Lewis et al. | Reconfigurable latch controllers for low power asynchronous circuits | |
| US8707235B2 (en) | Techniques for use with automated circuit design and simulations | |
| CN100583757C (zh) | 一种ecc\rsa加解密协处理器 | |
| JPWO2005013107A1 (ja) | 半導体装置及び半導体装置の駆動方法 | |
| Xia et al. | Design of high-performance asynchronous pipeline using synchronizing logic gates | |
| US7587620B1 (en) | Power reduction techniques for components in integrated circuits by assigning inputs to a plurality of ports based on power consumption ratings | |
| US7266581B2 (en) | Arithmetic circuit | |
| Eriksson et al. | Dynamic pass-transistor dot operators for efficient parallel-prefix adders | |
| WO2024077313A2 (en) | Cross-connected level restoration circuit | |
| JP2600635B2 (ja) | 3ステート回路 | |
| Upadhyay et al. | Pipelining high-radix SRT division algorithms | |
| Le | US 8,949,575 Β2 | |
| JPH08251008A (ja) | 複合論理回路 |