TW201947391A - Mapping a computer code to wires and gates - Google Patents
Mapping a computer code to wires and gates Download PDFInfo
- Publication number
- TW201947391A TW201947391A TW108115345A TW108115345A TW201947391A TW 201947391 A TW201947391 A TW 201947391A TW 108115345 A TW108115345 A TW 108115345A TW 108115345 A TW108115345 A TW 108115345A TW 201947391 A TW201947391 A TW 201947391A
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- dfsm
- line
- language
- gate
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
Abstract
Description
本發明大體上係關於資料處理,且更明確言之係關於用於將一電腦碼映射至線路及閘之方法及系統。The present invention relates generally to data processing, and more specifically to methods and systems for mapping a computer code to lines and gates.
可追求本章節中描述之方法,但該等方法不一定是先前已構想或追求之方法。因此,除非另有指示,否則不應假定在本章節中描述之方法之任一者僅憑藉其包含於本章節中而有資格作為先前技術。The methods described in this section can be pursued, but they are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, any one of the methods described in this section should not be assumed to qualify as prior art simply by virtue of its inclusion in this section.
積體電路(諸如場可程式化閘陣列(FPGA)或特定應用積體電路(ASIC))可用於許多運算應用中。例如,積體電路可用於伺服器及運算雲端中以處理超文件傳送協定(HTTP)及來自用戶端裝置之其他請求,其可提供比標準基於軟體之應用更快之一回應。儘管在運算應用中使用積體電路有優點,但設計、程式化及組態積體電路仍為一困難的任務。Integrated circuits such as field programmable gate arrays (FPGAs) or application-specific integrated circuits (ASICs) can be used in many computing applications. For example, integrated circuits can be used in servers and computing clouds to handle Hyper File Transfer Protocol (HTTP) and other requests from client devices, which can provide a faster response than standard software-based applications. Despite the advantages of using integrated circuits in computing applications, designing, programming, and configuring integrated circuits is still a difficult task.
提供本[發明內容]以依一簡化形式引入下文在[實施方式]中進一步描述之概念之一選擇。本[發明內容]既不意欲識別所主張標的物之關鍵特徵或本質特徵,亦不意欲用作判定所主張標的物之範疇之一輔助。This [Summary of the Invention] is provided in a simplified form to introduce one of the concepts described further in [Embodiment] below. This [Summary of the Invention] is neither intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the category of the claimed subject matter.
本文中揭示之實施例係關於用於將一電腦碼映射至線路及閘之方法及系統。根據一實例實施例,一種方法包含獲取以一程式設計語言撰寫之一程式碼。該方法可進一步包含基於該程式碼產生一有限狀態機(FSM)。該方法可進一步包含基於該FSM產生一線路及閘表示。該線路及閘表示可包含複數個線路及複數個組合邏輯。The embodiments disclosed herein relate to methods and systems for mapping a computer code to lines and gates. According to an example embodiment, a method includes obtaining a code written in a programming language. The method may further include generating a finite state machine (FSM) based on the code. The method may further include generating a line and gate representation based on the FSM. The line and gate representation can include multiple lines and multiple combinational logic.
該方法可進一步包含基於該線路及閘表示組態一場可程式化閘陣列。該方法亦可包含判定該複數個組合邏輯之一或多個組合邏輯不取決於來自該複數個線路之線路的輸入。該方法可進一步包含回應於該判定該複數個組合邏輯之一或多個組合邏輯不取決於來自該複數個線路之線路的輸入而將該一或多個組合邏輯儲存於一移位暫存器中。The method may further include configuring a programmable gate array based on the line and gate representation. The method may also include determining that one or more of the plurality of combinational logics does not depend on an input from a line of the plurality of lines. The method may further include storing the one or more combinational logics in a shift register in response to determining that one or more combinational logics of the plurality of combinational logics do not depend on inputs from the plurality of lines in.
該方法可進一步包含判定該複數個組合邏輯之一或多個組合邏輯取決於來自該複數個線路之線路的輸入。該方法進一步可包含回應於該判定該複數個組合邏輯之一或多個組合邏輯取決於來自該複數個線路之線路的輸入而將該一或多個組合邏輯儲存於一正反器中。The method may further include determining that one or more of the plurality of combinational logic depends on an input from a line of the plurality of lines. The method may further include storing the one or more combinational logics in a flip-flop in response to determining that one or more combinational logics of the plurality of combinational logics depend on an input from a line of the plurality of lines.
在特定實施例中,該複數個線路之各者之輸入可表示選自一結構化資料封包之一組符號之一符號。該符號之大小可被選擇為等於根據一資料傳輸協定,每時脈週期傳送之該結構化資料封包之一位元數。可基於該傳送協定之每時脈週期傳送之一位元速率或該結構化資料封包之結構最佳化該線路及閘表示中之一閘數目及一線路數目。該結構化資料封包可包含一乙太網路封包、光學輸送網路封包或周邊組件快速互連封包。In a particular embodiment, the input of each of the plurality of lines may represent a symbol selected from a group of symbols of a structured data packet. The size of the symbol can be selected to be equal to the number of bits of the structured data packet transmitted per clock cycle according to a data transmission protocol. The number of gates and one line in the line and gate representation can be optimized based on a bit rate transmitted per clock cycle of the transmission protocol or the structure of the structured data packet. The structured data packet may include an Ethernet packet, an optical transport network packet, or a peripheral component fast interconnect packet.
該程式設計語言可包含一高階程式設計語言,諸如JavaScript、C、C++,或一特定領域語言。該方法可進一步包含在產生該線路及閘表示之前最佳化該FSM。最佳化該FSM包含最小化該FSM中之一狀態數目。The programming language may include a high-level programming language, such as JavaScript, C, C ++, or a domain-specific language. The method may further include optimizing the FSM before generating the line and gate representation. Optimizing the FSM includes minimizing the number of states in the FSM.
根據本發明之一項實例實施例,提供一種用於將一電腦碼映射至線路及閘之系統。該系統可包含至少一個處理器及儲存處理器可執行程式碼之一記憶體,其中該至少一個處理器可經組態以實施用於將一電腦碼映射至線路及閘之上述方法之操作。According to an example embodiment of the present invention, a system for mapping a computer code to a line and a gate is provided. The system may include at least one processor and a memory storing processor-executable code, wherein the at least one processor may be configured to implement the operations of the above method for mapping a computer code to a circuit and a gate.
根據本發明之另一實例實施例,用於將一電腦碼映射至線路及閘之該方法之步驟儲存於包括指令之一機器可讀媒體上,該等指令在藉由一或多個處理器實施時執行所敘述步驟。According to another example embodiment of the present invention, the steps of the method for mapping a computer code to a circuit and a gate are stored on a machine-readable medium including instructions, which are executed by one or more processors Perform the steps described during implementation.
相關申請案之交叉參考Cross-reference to related applications
本申請案係於2017年6月6日申請且於2018年6月12日發佈為美國專利第9,996,328號之標題為「Compiling and Optimizing a Computer Code by Minimizing a Number of States in a Finite Machine Corresponding to the Computer Code」之美國專利申請案第15/630,691號之一部分繼續申請案,該案之標的物為全部目的併入本文中。This application was filed on June 6, 2017 and was issued on June 12, 2018 as U.S. Patent No. 9,996,328 with the title `` Compiling and Optimizing a Computer Code by Minimizing a Number of States in a Finite Machine Corresponding to the Computer Code "continues to be part of US Patent Application No. 15 / 630,691, the subject matter of which is incorporated herein for all purposes.
以下[實施方式]包含對形成[實施方式]之一部分之隨附圖式的參考。圖式展示根據例示性實施例之繪示。足夠詳細地描述此等例示性實施例(其在本文中亦稱為「實例」)以使熟習此項技術者能夠實踐本標的物。在不脫離所主張內容之範疇之情況下,可組合該等實施例、可利用其他實施例或可進行結構、邏輯及電氣改變。因此,不應以一限制意義理解以下[實施方式],且僅藉由隨附發明申請專利範圍及其等效物定義範疇。The following [Embodiment] contains references to accompanying drawings forming part of the [Embodiment]. The drawing shows a drawing according to an exemplary embodiment. These illustrative embodiments (also referred to herein as "examples") are described in sufficient detail to enable those skilled in the art to practice the subject matter. The embodiments may be combined, other embodiments may be used, or structural, logical, and electrical changes may be made without departing from the scope of the claimed content. Therefore, the following [embodiments] should not be understood in a limiting sense, and the scope is defined only by the scope of the accompanying invention application patent and its equivalent.
本文中描述之技術容許將一電腦碼自一高階程式設計語言轉譯為線路及閘表示。本發明之一些實施例可有利於根據一硬體描述之要求最佳化原始碼。本發明之實施例進一步可容許基於線路及閘表示組態可程式化積體電路。The techniques described in this article allow the translation of a computer code from a high-level programming language into a circuit and gate representation. Some embodiments of the invention may facilitate optimizing the source code according to the requirements of a hardware description. Embodiments of the present invention further allow configuration of programmable integrated circuits based on line and gate representations.
根據一實例實施例,用於將一電腦碼映射至線路及閘之方法可包含獲取以一程式設計語言撰寫之一程式碼且基於經獲取程式碼產生一FSM。方法可進一步包含基於FSM產生一線路及閘表示。線路及閘表示可包含複數個線路及複數個組合邏輯。方法可進一步包含基於線路及閘表示組態一場可程式化閘陣列。According to an example embodiment, a method for mapping a computer code to a line and a gate may include obtaining a code written in a programming language and generating an FSM based on the obtained code. The method may further include generating a line and gate representation based on the FSM. The line and gate representation can include multiple lines and multiple combinational logic. The method may further include configuring a field programmable gate array based on the line and gate representation.
圖1係展示根據一些實例實施例之用於編譯原始碼之一例示性系統100之一方塊圖。例示性系統100可包含一剖析表現文法(PEG)模組110、抽象語法樹(AST)與一不確定有限狀態機(NFSM)之間之一轉換器120、NFSM與確定性有限狀態機(DFSM)之間之一轉換器130及一最佳化器140。可運用一電腦系統實施系統100。下文參考圖4描述一例示性電腦系統。FIG. 1 is a block diagram illustrating an exemplary system 100 for compiling source code according to some example embodiments. The exemplary system 100 may include a parsing presentation grammar (PEG) module 110, a converter 120 between an abstract syntax tree (AST) and an uncertain finite state machine (NFSM), an NFSM and a deterministic finite state machine (DFSM) ) Between a converter 130 and an optimizer 140. The system 100 can be implemented using a computer system. An exemplary computer system is described below with reference to FIG. 4.
在本發明之一些實施例中,PEG模組110可經組態以接收一輸入碼105。在一些實施例中,輸入碼105可以一輸入程式設計語言撰寫。輸入程式設計語言可與一文法170相關聯。在一些實施例中,文法170可由一擴充巴科斯-諾爾(Backus-Naur)形式(ABNF)判定。PEG模組可經組態以基於文法170將輸入碼105轉換為一AST 115。AST 115可進一步提供至轉換器120。In some embodiments of the present invention, the PEG module 110 may be configured to receive an input code 105. In some embodiments, the input code 105 can be written in an input programming language. The input programming language may be associated with a grammar 170. In some embodiments, the grammar 170 may be determined by an extended Backus-Naur form (ABNF). The PEG module can be configured to convert the input code 105 to an AST 115 based on the grammar 170. The AST 115 may be further provided to the converter 120.
在本發明之一些實施例中,轉換器120可經組態以將AST 115變換為NFSM 125。此後,NFSM 125可提供至轉換器130。轉換器130可經組態以將NFSM 125轉譯為DFSM 135。DFSM 135可提供至最佳化器140。In some embodiments of the invention, the converter 120 may be configured to transform the AST 115 into an NFSM 125. Thereafter, the NFSM 125 may be provided to the converter 130. The converter 130 may be configured to translate the NFSM 125 into a DFSM 135. The DFSM 135 may be provided to the optimizer 140.
在一些實施例中,最佳化器140可經組態以最佳化DFSM 135以獲得一DFSM 145。在一些實施例中,最佳化可包含最小化DFSM 135中之一狀態數目。在各種實施例中,最佳化可藉由一蘊含圖方法、Hopcroft之演算法、Moore簡化程序、Brzozowski之演算法及其他技術執行。Brzozowski之演算法包含反轉一DFSM之邊緣以產生一NFSM且藉由僅建構經轉換DFSM之可達到狀態而使用一標準冪集建構(standard powerset construction)將此NFSM轉換為一DFSM。再次重複反轉而產生一DFSM,該DFSM具有一可證明最小狀態數目。In some embodiments, the optimizer 140 may be configured to optimize the DFSM 135 to obtain a DFSM 145. In some embodiments, the optimization may include minimizing the number of one of the DFSM 135 states. In various embodiments, optimization can be performed by an implied graph method, Hopcroft's algorithm, Moore's simplified procedure, Brzozowski's algorithm, and other techniques. Brzozowski's algorithm involves inverting the edges of a DFSM to generate an NFSM and converting this NFSM to a DFSM by constructing only the reachable state of the transformed DFSM using a standard powerset construction. Repeating the inversion again produces a DFSM with a provable minimum number of states.
在一些實施例中,DFSM 145 (其係一經最佳化DFSM 135)可進一步提供至轉換器130。轉換器130可經組態以將DFSM 145轉譯為一NFSM 150。NFSM 150可進一步提供至轉換器120。轉換器120可經組態以將NFSM 150轉譯為一AST 155。AST 155可進一步提供至PEG模組110。In some embodiments, DFSM 145 (which is optimized DFSM 135) may be further provided to converter 130. The converter 130 may be configured to translate the DFSM 145 into an NFSM 150. The NFSM 150 may be further provided to the converter 120. The converter 120 may be configured to translate the NFSM 150 into an AST 155. AST 155 can be further provided to the PEG module 110.
在一些實施例中,PEG模組110可經組態以基於一文法180將AST 155轉換為輸出碼160。文法180可指定一輸出程式設計語言。In some embodiments, the PEG module 110 may be configured to convert the AST 155 to an output code 160 based on a grammar 180. The grammar 180 may specify an output programming language.
在一些實施例中,輸入語言或輸出語言可包含高階程式設計語言之一者,諸如但不限於C、C++、C#、JavaScript、PHP、Python、Perl及類似物。在各種實施例中,輸入碼及輸出原始碼可經最佳化以在各種硬體平台(如高級RISC機器(ARM)、x86至x64圖形處理單元(GPU)、一場可程式化閘陣列(FPGA)或一定製特定應用積體電路(ASIC))上運行。在各種實施例中,輸入碼或原始碼可經最佳化以在各種作業系統及平台(諸如Linux、Windows、Mac OS、Android、iOS、OpenCL/CUDA、裸機、FPGA及一客製ASIC)上運行。In some embodiments, the input or output language may include one of high-level programming languages, such as, but not limited to, C, C ++, C #, JavaScript, PHP, Python, Perl, and the like. In various embodiments, the input code and output source code can be optimized to operate on various hardware platforms such as advanced RISC machines (ARM), x86 to x64 graphics processing units (GPUs), and a programmable gate array (FPGA). ) Or a custom application specific integrated circuit (ASIC)). In various embodiments, the input code or source code can be optimized to work on various operating systems and platforms (such as Linux, Windows, Mac OS, Android, iOS, OpenCL / CUDA, bare metal, FPGA, and a custom ASIC). Run on.
在特定實施例中,輸出程式設計語言可與輸入程式設計語言相同。在此等實施例中,系統100可用於藉由將輸入碼105轉換為DFSM 135、在狀態數目方面最佳化DFSM 135且以原始程式設計語言將經最佳化DFSM 135轉換為輸出碼160而最佳化輸入碼105。In a particular embodiment, the output programming language may be the same as the input programming language. In these embodiments, the system 100 may be used to convert the optimized DFSM 135 into the output code 160 by converting the input code 105 to DFSM 135, optimizing the DFSM 135 in terms of the number of states, and in the original programming language Optimize the input code 105.
在一些其他實施例中,輸入程式設計語言可包含一特定領域語言(DSL),其藉由一嚴格文法(即,ABNF)判定。在此等實施例中,系統100可用於將以一DSL撰寫之文件轉換為以一高階程式設計語言撰寫之一輸出碼160或以一低階程式設計語言撰寫之一程式碼。在特定實施例中,輸入碼105或輸出碼160可以一呈現語言(包含但不限於HTML、XML及XHTML)撰寫。在一些實施例中,輸入碼105或輸出碼160可包含CSS。In some other embodiments, the input programming language may include a domain-specific language (DSL), which is determined by a strict grammar (ie, ABNF). In these embodiments, the system 100 can be used to convert a document written in a DSL into an output code 160 written in a high-level programming language or a code written in a low-level programming language. In a specific embodiment, the input code 105 or the output code 160 can be written in a presentation language (including but not limited to HTML, XML, and XHTML). In some embodiments, the input code 105 or the output code 160 may include CSS.
在一些實施例中,系統100可進一步包含一資料庫。資料庫可經組態以儲存以特定程式設計語言撰寫之輸入碼中之頻繁出現的型樣及對應於頻繁出現之型樣之經最佳化DFSM的部分。在此等實施例中,系統100可包含用於在資料庫中查找輸入碼105之一特定型樣的一額外模組。若資料庫包含含有一特定型樣及DFSM之對應部分的一條目,則系統100可經組態以直接運用DFSM之對應部分且藉由略過用於將特定型樣轉換為AST及產生NFSM及DFSM之步驟而取代特定型樣。In some embodiments, the system 100 may further include a database. The database can be configured to store frequently occurring patterns in the input code written in a specific programming language and an optimized DFSM portion corresponding to the frequently occurring patterns. In these embodiments, the system 100 may include an additional module for finding a specific pattern of the input code 105 in the database. If the database contains an entry containing a specific pattern and a corresponding portion of DFSM, the system 100 may be configured to directly use the corresponding portion of DFSM and by skipping to convert a specific pattern to an AST and generate NFSM and DFSM steps instead of specific patterns.
在一些實施例中,輸入碼或輸出碼可包含可藉由一處理器執行之一二進位匯編。In some embodiments, the input code or output code may include a binary assembly executable by a processor.
在一些實施例中,輸入碼105或輸出碼160可以一HDL (諸如SystemC、Verilog及極高速積體電路硬體描述語言(VHDL))撰寫。輸入碼105或輸出碼160可包含原生於使用聯合測試行動小組(JTAG)標準程式化之FPGA的位元。在特定實施例中,可使用一約束解答器最佳化DFSM 135。約束解答器可包含對由HDL描述之一硬體平台之一些要求。例如,需求可包含對硬體平台之一運行時間、功率使用及成本之要求。可實行最佳化DFSM 135以滿足要求之限制之一者。在特定實施例中,可執行最佳化DFSM以運用指派給限制之各者之權重滿足數個要求限制。在一些實施例中,DFSM 135可根據一正式規格正式地驗證以偵測軟體相關安全性漏洞,包含但不限於記憶體漏失、除以零、界外陣列存取等。In some embodiments, the input code 105 or output code 160 may be written in an HDL (such as SystemC, Verilog, and Very High Speed Integrated Circuit Hardware Description Language (VHDL)). The input code 105 or output code 160 may contain bits native to an FPGA that is programmed using the Joint Test Action Group (JTAG) standard. In a particular embodiment, a constraint solver can be used to optimize the DFSM 135. The constraint solver may contain some requirements for a hardware platform described by HDL. For example, requirements may include requirements for the runtime, power usage, and cost of one of the hardware platforms. One of the limitations that can be optimized to meet DFSM 135 requirements. In a particular embodiment, optimization of the DFSM may be performed to satisfy several required constraints using the weights assigned to each of the constraints. In some embodiments, the DFSM 135 may be formally verified according to a formal specification to detect software related security vulnerabilities, including but not limited to memory leaks, division by zero, out-of-bounds array access, and the like.
在特定實施例中,輸入源可依據一技術規範撰寫。一例示性技術規範可包含一意見請求(RFC)。在一些實施例中,技術規範可與一特定文法相關聯。使用特定文法,可將依據技術規範撰寫之輸入碼轉譯為AST 115且進一步轉譯為DFSM 135。在一些實施例中,可使用一約束解答器最佳化DFSM 135。約束解答器可包含在技術規範中描述之限制。In a specific embodiment, the input source can be written according to a technical specification. An exemplary technical specification may include a request for comment (RFC). In some embodiments, a technical specification may be associated with a particular grammar. Using specific grammars, input codes written in accordance with technical specifications can be translated into AST 115 and further into DFSM 135. In some embodiments, a constraint solver may be used to optimize the DFSM 135. Constraint solvers can contain the restrictions described in the technical specifications.
圖2係展示根據一實例實施例之用於處理HTTP請求之一例示性系統200之一方塊圖。系統200可包含一用戶端210、用於編譯原始碼之系統100及一FPGA 240。FIG. 2 is a block diagram illustrating an exemplary system 200 for processing HTTP requests according to an example embodiment. The system 200 may include a client 210, a system 100 for compiling source code, and an FPGA 240.
在特定實施例中,系統100可經組態以接收網際網路協定(IP)、傳輸控制協定(TCP)及HTTP之一RFC 105。系統100可經組態以將RFC程式化為一VHDL程式碼,且繼而將VHDT程式碼編譯為原生於FPGA 240之位元235。可用位元235程式化FPGA 240。在藉由圖2繪示之一實例中,FPGA 240包含對應於位元235之一有限狀態機(FSM) 225。在其他實施例中,位元235可儲存於一快閃記憶體中,且FPGA 240可經組態以在起動後自快閃記憶體請求位元235。In a particular embodiment, the system 100 may be configured to receive one of the Internet Protocol (IP), Transmission Control Protocol (TCP), and HTTP RFC 105. System 100 can be configured to program the RFC into a VHDL code, and then compile the VHDT code into bit 235 native to FPGA 240. FPGA 240 can be programmed with bit 235. In an example shown in FIG. 2, the FPGA 240 includes a finite state machine (FSM) 225 corresponding to the bit 235. In other embodiments, bit 235 may be stored in a flash memory, and FPGA 240 may be configured to request bit 235 from flash memory after startup.
在一些實施例中,用戶端210可經組態以將一HTTP請求215發送至FPGA 240。在一些實施例中,HTTP請求215可藉由FPGA 240讀取。FSM 225可經組態以辨識HTTP請求215且將對應於HTTP請求215之一HTTP回應245返回至用戶端210。在特定實施例中,FPGA 240可包含FSM 250至260之一組構以保持用於辨識不同HTTP請求及提供不同HTTP回應之客戶的應用程式邏輯。In some embodiments, the client 210 may be configured to send an HTTP request 215 to the FPGA 240. In some embodiments, the HTTP request 215 can be read by the FPGA 240. The FSM 225 may be configured to recognize the HTTP request 215 and return an HTTP response 245 corresponding to one of the HTTP requests 215 to the client 210. In a particular embodiment, the FPGA 240 may include one of the FSMs 250 to 260 to maintain application logic for identifying clients with different HTTP requests and providing different HTTP responses.
系統200可為優於習知HTTP伺服器之一改良,此係因為系統200不要求大量運算資源及對處置HTTP請求之軟體之維護。系統不需要在實體上較大且與習知HTTP伺服器相比需要較少之一功率量。The system 200 can be an improvement over one of the conventional HTTP servers because the system 200 does not require a large amount of computing resources and maintenance of software that handles HTTP requests. The system does not need to be physically larger and requires a smaller amount of power compared to conventional HTTP servers.
圖3係展示根據一實例實施例之用於編譯原始碼之一方法300之一程序流程圖。可運用一電腦系統實施方法300。下文參考圖4描述一例示性電腦系統。FIG. 3 shows a flowchart of a method 300 for compiling source code according to an example embodiment. The method 300 may be implemented using a computer system. An exemplary computer system is described below with reference to FIG. 4.
方法300可在方塊302中以獲取一第一程式碼開始,第一程式碼係以一第一語言撰寫。在方塊304中,方法300可包含基於與第一語言相關聯之一第一文法剖析第一程式碼以獲得一第一AST。在方塊306中,方法300可包含將第一AST轉換為一NFSM。在方塊308中,方法300可包含將第一NFSM轉換為一第一DFSM。在方塊310中,方法300可包含最佳化第一DFSM以獲得第二DFSM。在方塊312中,方法可包含將第二DFSM轉換為一第二NFSM。在方塊314中,方法300可包含將第二NFSM轉換為一第二AST。在方塊316中,方法300可包含基於與一第二語言相關聯之一第二文法將AST重新編譯為第二程式碼,第二程式碼係以第二語言撰寫。The method 300 may begin at block 302 by obtaining a first code, which is written in a first language. In block 304, the method 300 may include parsing the first code based on a first grammar associated with the first language to obtain a first AST. In block 306, the method 300 may include converting the first AST to an NFSM. In block 308, the method 300 may include converting the first NFSM to a first DFSM. In block 310, the method 300 may include optimizing the first DFSM to obtain a second DFSM. In block 312, the method may include converting the second DFSM to a second NFSM. In block 314, the method 300 may include converting the second NFSM to a second AST. In block 316, the method 300 may include recompiling the AST into a second code based on a second grammar associated with a second language, the second code being written in the second language.
圖4展示用於呈一電腦系統400之例示性電子形式之一機器的一運算裝置之一圖示,可在該機器內執行用於引起該機器執行本文中論述之方法論之任一或多者的一指令集。在各種例示性實施例中,機器操作為一獨立裝置或可連接(例如,網路連結)至其他機器。在一網路部署中,機器可在一伺服器-用戶端網路環境中以一伺服器或一用戶端機器之身份操作,或在一同級間(或分散式)網路環境中作為一同級機器。該機器可為一伺服器、一個人電腦(PC)、一平板PC、一機上盒(STB)、一PDA、一蜂巢式電話、一數位相機、一可攜式音樂播放器(例如,一可攜式硬碟音訊裝置,諸如一動畫專家群音訊層3 (MP3)播放器)、一網路器具、一網路路由器、一交換機、一橋接器或能夠執行指定由該機器採取之行動之一指令集(循序或以其他方式)之任何機器。此外,雖然僅繪示一單一機器,但術語「機器」亦應被視為包含個別地或聯合地執行之一(或多個)指令集以執行本文中論述之方法論之任一或多者的任何機器集合。FIG. 4 shows a diagram of a computing device for a machine in the exemplary electronic form of a computer system 400 within which one or more of the methodologies discussed herein can be executed An instruction set. In various exemplary embodiments, the machine operates as a stand-alone device or can be connected (eg, a network link) to other machines. In a network deployment, the machine can operate as a server or a client machine in a server-client network environment, or as a peer in a peer-to-peer (or decentralized) network environment machine. The machine may be a server, a personal computer (PC), a tablet PC, a set-top box (STB), a PDA, a cellular phone, a digital camera, a portable music player (e.g., a Portable hard disk audio devices, such as an animation expert group audio layer 3 (MP3) player), a network appliance, a network router, a switch, a bridge, or one of those capable of performing the actions specified by the machine An instruction set (sequential or otherwise) for any machine. In addition, although only a single machine is shown, the term "machine" should also be considered to include one or more instruction sets executed individually or jointly to perform any one or more of the methodologies discussed herein. Any machine collection.
例示性電腦系統400包含一處理器或多個處理器402、一硬碟機404、一主記憶體406及一靜態記憶體408,其經由一匯流排410彼此通信。電腦系統400亦可包含一網路介面裝置412。硬碟機404可包含一電腦可讀儲存媒體420,其儲存體現或由本文中描述之方法論或功能之任一或多者利用之一或多個指令422集。指令422亦可在其藉由電腦系統400執行期間完全或至少部分駐留在主記憶體406及/或處理器402內。主記憶體406及處理器402亦構成機器可讀媒體。The exemplary computer system 400 includes a processor or processors 402, a hard disk drive 404, a main memory 406, and a static memory 408, which communicate with each other via a bus 410. The computer system 400 may also include a network interface device 412. The hard drive 404 may include a computer-readable storage medium 420 that stores one or more sets of instructions 422 that embody or are utilized by any one or more of the methodologies or functions described herein. The instructions 422 may also reside entirely or at least partially within the main memory 406 and / or the processor 402 during execution by the computer system 400. The main memory 406 and the processor 402 also constitute a machine-readable medium.
雖然電腦可讀媒體420在一例示性實施例中被展示為一單一媒體,但術語「電腦可讀媒體」應被視為包含儲存一或多個指令集之一單一媒體或多個媒體(例如,一集中或分散式資料庫及/或相關聯快取區及伺服器)。術語「電腦可讀媒體」亦應被視為包含能夠儲存、編碼或載送一指令集以藉由機器執行且引起機器執行本申請案之方法論之任一或多者或能夠儲存、編碼或載送由此一指令集利用或與該指令集相關聯之資料結構的任何媒體。因此,術語「電腦可讀媒體」應被視為包含但不限於固態記憶體以及光學及磁性媒體。此等媒體亦可包含但不限於硬碟、軟碟、NAND或NOR快閃記憶體、數位視訊光碟、RAM、ROM及類似者。Although the computer-readable medium 420 is shown as a single medium in an exemplary embodiment, the term "computer-readable medium" should be considered to include a single medium or multiple media storing one or more instruction sets (e.g., , A centralized or decentralized database and / or associated caches and servers). The term "computer-readable medium" should also be considered to include any one or more of the methodologies capable of storing, encoding, or carrying an instruction set for execution by a machine and causing the machine to execute this application, or capable of storing, encoding, or carrying Send any medium of a data structure utilized by or associated with this instruction set. The term "computer-readable medium" should therefore be considered to include, but not be limited to, solid-state memory and optical and magnetic media. These media may also include, but are not limited to, hard drives, floppy drives, NAND or NOR flash memory, digital video discs, RAM, ROM, and the like.
本文中描述之例示性實施例可在包括安裝於一電腦上之電腦可執行指令(例如,軟體)之一作業環境中、硬體中或軟體及硬體之一組合中實施。電腦可執行指令可以一電腦程式設計語言撰寫或體現於韌體邏輯中。若以符合一經認知標準之一程式設計語言撰寫,則此等指令可在多種硬體平台上執行及用於與多種作業系統介接。儘管不限於此,然用於實施本方法之電腦軟體程式可以任何數目個適合程式設計語言(諸如(舉例而言) C、Python、Javascript、Go、或其他編譯器、組譯器、解譯器或其他電腦語言或平台)撰寫。The exemplary embodiments described herein may be implemented in an operating environment including computer-executable instructions (eg, software) installed on a computer, in hardware, or in a combination of software and hardware. Computer-executable instructions can be written in a computer programming language or embodied in firmware logic. If written in a programming language that meets one of the accepted standards, these instructions can be executed on multiple hardware platforms and used to interface with multiple operating systems. Although not limited to this, the computer software program used to implement the method may be any number of suitable programming languages such as, for example, C, Python, Javascript, Go, or other compilers, translators, interpreters Or other computer languages or platforms).
圖5係展示根據一些實例實施例之用於將一電腦碼映射至線路及閘之一例示性系統500之一方塊圖。例示性系統500可包含一剖析表現文法(PEG)模組110、在AST與NFSM之間轉換之一轉換器120、在NFSM與DFSM之間轉換之一轉換器130、一最佳化器140及自DFSM轉譯至線路及閘之轉譯器510。可用一電腦系統實施系統500。上文參考圖4描述一實例電腦系統。FIG. 5 shows a block diagram of an exemplary system 500 for mapping a computer code to lines and gates according to some example embodiments. The exemplary system 500 may include a parsing presentation grammar (PEG) module 110, a converter 120 that converts between AST and NFSM, a converter 130 that converts between NFSM and DFSM, an optimizer 140, and Translator 510 that translates from DFSM to lines and gates. The system 500 can be implemented with a computer system. An example computer system is described above with reference to FIG. 4.
上文關於圖1之系統100描述PEG模組110、轉換器120、轉換器130及最佳化器140。PEG模組110可接收以一輸入程式設計語言撰寫之一輸入碼105。輸入程式設計語言可與一文法170相關聯。PEG模組可經組態以將輸入碼105轉換為一AST 115。轉換器120進一步可將AST 115變換為一NFSM 125。轉換器130可經組態以將NFSM 125轉譯為一DFSM 135。最佳化器140可進一步最佳化DFSM 135以獲得一DFSM 145,其係經最佳化DFSM 135。The PEG module 110, the converter 120, the converter 130, and the optimizer 140 are described above with respect to the system 100 of FIG. The PEG module 110 can receive an input code 105 written in an input programming language. The input programming language may be associated with a grammar 170. The PEG module can be configured to convert the input code 105 into an AST 115. The converter 120 further converts the AST 115 into an NFSM 125. The converter 130 may be configured to translate the NFSM 125 into a DFSM 135. The optimizer 140 may further optimize the DFSM 135 to obtain a DFSM 145, which is optimized by the DFSM 135.
在一些實施例中,DFSM 145可進一步提供至轉譯器510。轉譯器510可經組態以將經最佳化DFSM 145轉譯為一組線路及閘520。DFSM 145之邊緣可表示為線路。狀態可表示為線路或一簡單閘之一組合邏輯。該組線路及閘520可用於匹配輸入、內部狀態及輸出。該組線路及閘520亦可用於設計、程式化或組態積體電路(諸如但不限於FPGA及ACIS)。例如,該組線路及閘520可用於組態FPGA 240之可程式化邏輯區塊及可重新組態的再連接(圖2中展示)以處理HTTP請求。In some embodiments, the DFSM 145 may be further provided to the translator 510. The translator 510 may be configured to translate the optimized DFSM 145 into a set of lines and gates 520. The edges of DFSM 145 can be represented as lines. State can be expressed as a combination of lines or a simple gate. This set of lines and gates 520 can be used to match inputs, internal states and outputs. This set of lines and gates 520 can also be used to design, program, or configure integrated circuits (such as but not limited to FPGAs and ACIS). For example, this set of lines and gates 520 can be used to configure the programmable logic blocks of FPGA 240 and reconfigurable reconnections (shown in Figure 2) to handle HTTP requests.
積體電路(例如,FPGA)可經由一網路接收封包。封包可包含乙太網路封包、光學輸送網路(OTN)封包、周邊組件快速互連(PCIE)封包或類似者。封包包含按時間具有一定義開端、若干輸入符號及一末尾之一組有序輸入。例如,封包可包含一前導起始訊框定界符、標頭、協定特定資料及循環冗餘檢查。FPGA可經組態以基於線路及閘執行包含於初始電腦碼中之操作。例如,FPGA可經組態以發送一經接收資料封包之一回覆。在另一實例中,FPGA可經組態以匹配或過濾資料封包、轉送資料封包或將資料封包儲存於FPGA中。在又一實例中,FPGA亦可基於包含於經接收資料封包中之資訊重新組態。Integrated circuits (eg, FPGAs) can receive packets via a network. The packet may include an Ethernet packet, an Optical Transport Network (OTN) packet, a Peripheral Component Interconnect Express (PCIE) packet, or the like. The packet contains a set of ordered inputs with a defined beginning, a number of input symbols, and an end according to time. For example, a packet may include a leading start frame delimiter, a header, protocol-specific data, and a cyclic redundancy check. The FPGA can be configured to perform operations contained in the initial computer code on a line and gate basis. For example, the FPGA may be configured to send a reply to a received data packet. In another example, the FPGA can be configured to match or filter data packets, forward data packets, or store data packets in the FPGA. In yet another example, the FPGA may be reconfigured based on the information contained in the received data packet.
取決於一資料傳送協定,封包中之資料按一特定速率計時。每各個時脈,可藉由一FPGA接收一資料封包之僅一特定輸入區塊,使得僅特定數目個線路可用於FPGA中。輸入中之位元數與對應線路數目及閘數目之間存在一強烈關聯。針對相同電腦碼,輸入中之較大數目個位元需要較少之閘及線路。若一資料封包之長度被量測為封包中符號之數目,則封包之長度與閘及線路之一數目之間存在一線性相依性。封包中之符號之數目與輸入中之位元數逆相關。例如,使用單熱編碼(one-hot encoding),8位元輸入及256個各別線路可表示輸入之可能0至255數字之一者。假使經由一個十億位元媒體獨立介面(GMII)介面傳送封包中資料,則各輸入區塊在各時脈週期係單一8位元/8線路輸入。Depending on a data transfer protocol, the data in the packet is timed at a specific rate. For each clock, only a specific input block of a data packet can be received by an FPGA, so that only a specific number of lines can be used in the FPGA. There is a strong correlation between the number of bits in the input and the number of corresponding lines and gates. For the same computer code, a larger number of bits in the input requires fewer gates and lines. If the length of a data packet is measured as the number of symbols in the packet, there is a linear dependency between the length of the packet and the number of gates and lines. The number of symbols in a packet is inversely related to the number of bits in the input. For example, using one-hot encoding, an 8-bit input and 256 individual lines can represent one of the possible 0-255 numbers of the input. If the data in the packet is transmitted through a Gigabit Media Independent Interface (GMII) interface, each input block is a single 8-bit / 8-line input at each clock cycle.
當使用單熱編碼及84個狀態時,用於各狀態之一個單獨線路可表示自0至83之一符號。自一個狀態轉變至另一狀態可發生在0或1個可能輸入匹配各狀態之時。在輸入未能匹配整個型樣時,狀態不會前進。假定僅存在84個可能狀態及每狀態0或1個可能輸入,則可使用256個各別線路中的最大84個線路。實務上,可多次使用相同輸入值。例如,0x55可能在一封包之開端處出現7次。因為可多次使用一個輸入線路且因為諸如在封包ID欄位中存在具有0個可能輸入之狀態,所以所使用之獨有輸入線路之數目傾向於較少。對於常見情況,獨有輸入線路之數目可為20個線路或更少。When using one-hot coding and 84 states, a single line for each state can represent a symbol from 0 to 83. Transitioning from one state to another can occur when 0 or 1 possible input matches each state. When the input fails to match the entire pattern, the state does not advance. Assuming there are only 84 possible states and 0 or 1 possible inputs per state, a maximum of 84 of the 256 individual lines can be used. In practice, the same input value can be used multiple times. For example, 0x55 may appear 7 times at the beginning of a packet. Because one input line can be used multiple times and because, for example, there is a state with 0 possible inputs in the packet ID field, the number of unique input lines used tends to be small. For common cases, the number of unique input lines can be 20 lines or less.
在平行配置之各狀態,一單一8位元符號或無符號藉由組合來自先前狀態之線路或封包開端中之信號與對應於輸入符號或無符號之線路而匹配。各狀態可表示為以下之一者:In the states arranged in parallel, a single 8-bit symbol or unsigned is matched by combining the signal from the line or the beginning of the packet from the previous state with the line corresponding to the input sign or unsigned. Each state can be expressed as one of the following:
1. 1.
2.。不需要輸入或任何輸入可接受時之一情況。2. . No input is required or any of the cases when the input is acceptable.
3. 3.
4.。不需要輸入或任何輸入可接受時之一情況。4. . No input is required or any of the cases are acceptable.
在一一般情況中,可為第零狀態,其引起起始第一狀態。對於其中任何輸入可接受之狀態,不存在需要查找之輸入線路。不查找輸入線路之多個狀態可實施為一移位暫存器。未儲存於一正反器中之任何狀態可儲存於一移位暫存器中,此係因為並不個別地存取此等狀態。In a general case, May be the zeroth state, which causes the initial first state. For any of these inputs to be acceptable, there are no input lines to look for. Multiple states that do not look for input lines can be implemented as a shift register. Any state that is not stored in a flip-flop can be stored in a shift register because these states are not individually accessed.
在經由一個佰億位元媒體獨立介面(XGMII)介面傳送封包中之資料之情況中,各符號可在一時脈之各轉變處表示為32個位元。當運用單熱編碼表示時,表示全部可能32個位元符號之線路額的最大數目超過四十億個線路。然而,資料封包之長度與一GMII介面之情況中相同。假定僅存在之可能狀態且一個輸入符號大小為GMII介面中之4倍,則線路數目限於封包之符號計數長度,一最小大小為84個位元組或1/4作為32位元之符號,64個位元符號之1/8等。歸因於冗餘,可能存在更少數目。In the case where the data in the packet is transmitted via a Gigabit Media Independent Interface (XGMII) interface, each symbol can be represented as 32 bits at each transition of a clock. When using a one-hot coding representation, the maximum number of lines representing all possible 32-bit symbols exceeds 4 billion lines. However, the length of the data packet is the same as in the case of a GMII interface. Assumed to exist only Possible state and an input symbol size is 4 times that in the GMII interface, the number of lines is limited to the packet's symbol count length, a minimum size of 84 bytes or 1/4 as a 32-bit symbol, 64 bits 1/8 of the symbol. Due to redundancy, there may be a smaller number.
在使用較高速度/符號大小輸入時(諸如在具有25 MHz、125 MHz、156.25 MHz、644.53125 MHz、1.5625 GHz等之速率之傳送協定中)可使用類似考量。一般而言,隨著一輸入之寬度增大,閘數目減少。Similar considerations can be used when using higher speed / symbol size inputs (such as in transmission protocols with rates of 25 MHz, 125 MHz, 156.25 MHz, 644.53125 MHz, 1.5625 GHz, etc.). In general, as the width of an input increases, the number of gates decreases.
當多個類似封包匹配時,決策可形成一樹。在樹中共用較早狀態。待匹配之一封包之各獨有類型要求最少1個額外閘獨有地匹配封包與閘且使不與其他類似類型之封包共用之最大數目個狀態匹配。一般而言,當封包匹配規則之數目超過一百時,需要少至1個或2個額外閘來匹配一封包。在大多數情況中,各額外匹配規則僅需要1個額外閘。When multiple similar packets match, the decision can form a tree. Share the earlier state in the tree. Each unique type of a packet to be matched requires at least one additional gate to uniquely match packets and gates and match the maximum number of states that are not shared with other similar types of packets. In general, when the number of packet matching rules exceeds one hundred, as few as one or two additional gates are required to match a packet. In most cases, each additional matching rule requires only 1 additional gate.
圖6係展示根據一些實例實施例之用於將一電腦碼映射至線路及閘之一方法600之一流程圖。可運用一電腦系統實施方法600。上文參考圖4描述一例示性電腦系統。FIG. 6 is a flowchart illustrating a method 600 for mapping a computer code to a line and a gate according to some example embodiments. The method 600 may be implemented using a computer system. An exemplary computer system is described above with reference to FIG. 4.
方法600可在方塊602中以獲取一程式碼開始。程式碼可以一程式設計語言撰寫。程式設計語言可為一高階程式設計語言,諸如(舉例而言) JavaScript、C、C++、特定領域語言及類似者。程式碼可依據一技術規範方面撰寫。一例示性技術規範可包含一RFC。The method 600 may begin at block 602 with obtaining a code. The code can be written in a programming language. The programming language may be a high-level programming language such as, for example, JavaScript, C, C ++, domain-specific languages, and the like. The code can be written according to a technical specification. An exemplary technical specification may include an RFC.
在方塊604中,方法600可基於程式碼產生一FSM。在方塊606中,方法600可以基於FSM產生一線路及閘表示而繼續進行。線路及閘表示可包含複數個線路及複數個組合邏輯。複數個線路之各者之一輸入可表示來自一結構化資料封包之一組符號之一符號。符號之大小可等於根據一資料傳輸協定,每時脈週期傳送之結構化資料封包之一位元數。封包可包含一乙太網路封包、OTN封包或PCIE封包。資料傳輸協定可包含一GMII、XGMII等。若並不直接需要來自正反器之個別狀態,則可將起因於組合邏輯之狀態儲存於正反器中或替代地儲存於移位暫存器中。In block 604, the method 600 may generate an FSM based on the code. At block 606, the method 600 may continue based on the FSM generating a line and gate representation. The line and gate representation can include multiple lines and multiple combinational logic. An input of each of the plurality of lines may represent a symbol from a group of symbols in a structured data packet. The size of the symbol may be equal to the number of bits of a structured data packet transmitted per clock cycle according to a data transmission protocol. The packet can include an Ethernet packet, an OTN packet, or a PCIE packet. The data transfer protocol may include a GMII, XGMII, and so on. If the individual states from the flip-flop are not directly needed, the states resulting from the combinational logic can be stored in the flip-flop or alternatively in the shift register.
在方塊608中,方法600可包含基於線路及閘表示組態一場可程式化閘陣列。可在一移位暫存器中實施並不取決於來自複數個線路之線路之輸入的組合邏輯。其他組合邏輯可儲存於正反器中。In block 608, the method 600 may include configuring a field programmable gate array based on the line and gate representations. Combinational logic that can be implemented in a shift register and does not depend on inputs from multiple lines. Other combinational logic can be stored in the flip-flop.
因此,揭示用於將一電腦碼映射至線路及閘之系統及方法。儘管已關於特定實例實施例描述實施例,然可顯而易見,可在不脫離在本申請案之更廣精神及範疇之情況下對此等實例實施例進行各種修改及改變。因此,說明書及圖式將被視為闡釋性而非限制性意義。Therefore, a system and method for mapping a computer code to a line and a gate are disclosed. Although the embodiments have been described with respect to specific example embodiments, it will be apparent that various modifications and changes can be made to these example embodiments without departing from the broader spirit and scope of this application. Accordingly, the description and drawings are to be regarded as illustrative rather than restrictive.
100‧‧‧系統100‧‧‧ system
105‧‧‧輸入碼/意見請求(RFC) 105‧‧‧Input Code / Request for Comments (RFC)
110‧‧‧剖析表現文法(PEG)模組 110‧‧‧Analysis of Expression Grammar (PEG) Module
115‧‧‧抽象語法樹(AST) 115‧‧‧Abstract Syntax Tree (AST)
120‧‧‧轉換器 120‧‧‧ converter
125‧‧‧不確定有限狀態機(NFSM) 125‧‧‧Uncertain Finite State Machine (NFSM)
130‧‧‧轉換器 130‧‧‧ converter
135‧‧‧確定性有限狀態機(DFSM) 135‧‧‧Deterministic Finite State Machine (DFSM)
140‧‧‧最佳化器 140‧‧‧ Optimizer
145‧‧‧確定性有限狀態機(DFSM) 145‧‧‧Deterministic Finite State Machine (DFSM)
150‧‧‧不確定有限狀態機(NFSM) 150‧‧‧Uncertain Finite State Machine (NFSM)
155‧‧‧抽象語法樹(AST) 155‧‧‧Abstract Syntax Tree (AST)
160‧‧‧輸出碼 160‧‧‧Output code
170‧‧‧文法 170‧‧‧ Grammar
180‧‧‧文法 180‧‧‧ Grammar
200‧‧‧系統 200‧‧‧ system
210‧‧‧用戶端 210‧‧‧Client
215‧‧‧超文件傳送協定(HTTP)請求 215‧‧‧ Hyper File Transfer Protocol (HTTP) request
225‧‧‧有限狀態機(FSM) 225‧‧‧Finite State Machine (FSM)
235‧‧‧位元 235‧‧‧bit
240‧‧‧場可程式化閘陣列(FPGA) 240‧‧‧ Field Programmable Gate Array (FPGA)
245‧‧‧超文件傳送協定(HTTP)回應 245‧‧‧ Hyper File Transfer Protocol (HTTP) response
250‧‧‧有限狀態機(FSM) 250‧‧‧ Finite State Machine (FSM)
260‧‧‧有限狀態機(FSM) 260‧‧‧Finite State Machine (FSM)
300‧‧‧方法 300‧‧‧ Method
302‧‧‧方塊 302‧‧‧block
304‧‧‧方塊 304‧‧‧box
306‧‧‧方塊 306‧‧‧block
308‧‧‧方塊 308‧‧‧box
310‧‧‧方塊 310‧‧‧block
312‧‧‧方塊 312‧‧‧block
314‧‧‧方塊 314‧‧‧block
316‧‧‧方塊 316‧‧‧block
400‧‧‧電腦系統 400‧‧‧Computer System
402‧‧‧處理器 402‧‧‧Processor
404‧‧‧硬碟機 404‧‧‧HDD
406‧‧‧主記憶體 406‧‧‧Main memory
408‧‧‧靜態記憶體 408‧‧‧Static memory
410‧‧‧匯流排 410‧‧‧Bus
412‧‧‧網路介面裝置 412‧‧‧ network interface device
420‧‧‧電腦可讀儲存媒體 420‧‧‧Computer-readable storage media
422‧‧‧指令 422‧‧‧Instruction
500‧‧‧系統 500‧‧‧ system
510‧‧‧轉譯器 510‧‧‧ translator
520‧‧‧一組線路及閘 520‧‧‧One line and gate
600‧‧‧方法 600‧‧‧ Method
602‧‧‧方塊 602‧‧‧box
604‧‧‧方塊 604‧‧‧box
606‧‧‧方塊 606‧‧‧block
608‧‧‧方塊 608‧‧‧box
在隨附圖式之圖中藉由實例且非限制地繪示實施例,其中相同元件符號指示類似元件。The embodiments are illustrated by way of example and not limitation in the accompanying drawings, in which the same element symbols indicate similar elements.
圖1係展示根據一些實例實施例之用於編譯原始碼之一系統之一方塊圖。FIG. 1 is a block diagram illustrating a system for compiling source code according to some example embodiments.
圖2係展示根據一實例實施例之用於處理一超文件傳送協定(HTTP)請求之一例示性系統之一方塊圖。FIG. 2 is a block diagram illustrating an exemplary system for processing a Hyper File Transfer Protocol (HTTP) request according to an example embodiment.
圖3係展示根據一實例實施例之用於編譯原始碼之一方法之一流程圖。FIG. 3 is a flowchart illustrating a method for compiling source code according to an example embodiment.
圖4展示用於呈一電腦系統之例示性電子形式之一機器的一運算裝置之一圖示,可在該機器內執行用於引起該機器執行本文中論述之方法論之任一或多者的一指令集。FIG. 4 shows a diagram of a computing device for a machine in an exemplary electronic form of a computer system, within which a machine may be executed to cause the machine to perform any one or more of the methodologies discussed herein. An instruction set.
圖5係展示根據一些實例實施例之用於將一電腦碼映射至線路及閘之一系統之一方塊圖。FIG. 5 shows a block diagram of a system for mapping a computer code to a line and a gate according to some example embodiments.
圖6係展示根據一實例實施例之用於將一電腦碼映射至線路及閘之一方法之一流程圖。FIG. 6 is a flowchart illustrating a method for mapping a computer code to a line and a gate according to an example embodiment.
Claims (20)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/970,884 US10481881B2 (en) | 2017-06-22 | 2018-05-04 | Mapping a computer code to wires and gates |
| US15/970,884 | 2018-05-04 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW201947391A true TW201947391A (en) | 2019-12-16 |
Family
ID=68386984
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108115345A TW201947391A (en) | 2018-05-04 | 2019-05-03 | Mapping a computer code to wires and gates |
Country Status (2)
| Country | Link |
|---|---|
| TW (1) | TW201947391A (en) |
| WO (1) | WO2019213539A1 (en) |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5452231A (en) * | 1988-10-05 | 1995-09-19 | Quickturn Design Systems, Inc. | Hierarchically connected reconfigurable logic assembly |
| US8966457B2 (en) * | 2011-11-15 | 2015-02-24 | Global Supercomputing Corporation | Method and system for converting a single-threaded software program into an application-specific supercomputer |
-
2019
- 2019-05-03 WO PCT/US2019/030627 patent/WO2019213539A1/en not_active Ceased
- 2019-05-03 TW TW108115345A patent/TW201947391A/en unknown
Also Published As
| Publication number | Publication date |
|---|---|
| WO2019213539A1 (en) | 2019-11-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI506556B (en) | Method and apparatus for compiling regular expressions | |
| US9251304B2 (en) | Circuit design evaluation with compact multi-waveform representations | |
| TWI517036B (en) | Programmed parallel machine and computer-implemented method, computer readable medium, non-transitory computer-readable medium, computer and system for a compiler | |
| US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
| US9996328B1 (en) | Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code | |
| JP5381710B2 (en) | Nondeterministic finite automaton generation system, method and program without ε transition | |
| JP5763784B2 (en) | Grouping states for element usage | |
| JP5857072B2 (en) | Expansion of quantifiers to control the order of entry and / or exit of automata | |
| US20170124210A1 (en) | Automated generation of web api descriptions from usage data | |
| CN113705798B (en) | Processing unit, computing device, and computational graph optimization method for deep learning model | |
| TW201033833A (en) | Method and apparatus for memory abstraction and for word level net list reduction and verification using same | |
| JP2014506693A5 (en) | ||
| CN114997380B (en) | Sampler and apparatus for executing graph neural network models | |
| CN101872369A (en) | Adaptive state-to-symbolic transformation in a canonical representation | |
| CN115509514A (en) | A front-end data simulation method, device, equipment and medium | |
| Rashid et al. | VeriPy: A Python-Powered Framework for Parsing Verilog HDL and High-Level Behavioral Analysis of Hardware | |
| TW201947391A (en) | Mapping a computer code to wires and gates | |
| US10481881B2 (en) | Mapping a computer code to wires and gates | |
| WO2018236384A1 (en) | COMPILATION AND OPTIMIZATION OF A COMPUTER CODE BY MINIMIZING A NUMBER OF STATES IN A FINAL MACHINE CORRESPONDING TO THE COMPUTER CODE | |
| Tiejun et al. | An Parallel FPGA SAT Solver Based on Multi‐Thread and Pipeline | |
| KR102117165B1 (en) | Method and apparatus for testing intermediate language for binary analysis | |
| US20120278773A1 (en) | Verifying data intensive state transition machines related application | |
| US20090248601A1 (en) | Exploiting double resolutions for proof optimizations | |
| CN119987483A (en) | Waveform analysis method, device, computer equipment, storage medium and program product | |
| EP2797017B1 (en) | Cloud-based digital verification system and method |