TW202121217A - 用於改進詮釋資料處理效率的系統和方法 - Google Patents
用於改進詮釋資料處理效率的系統和方法 Download PDFInfo
- Publication number
- TW202121217A TW202121217A TW109138687A TW109138687A TW202121217A TW 202121217 A TW202121217 A TW 202121217A TW 109138687 A TW109138687 A TW 109138687A TW 109138687 A TW109138687 A TW 109138687A TW 202121217 A TW202121217 A TW 202121217A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- input
- rule
- interpretive
- interpretation
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 166
- 238000012545 processing Methods 0.000 title claims abstract description 91
- 230000009471 action Effects 0.000 claims description 79
- 238000013507 mapping Methods 0.000 claims description 35
- 238000005457 optimization Methods 0.000 claims description 19
- 230000004048 modification Effects 0.000 claims description 16
- 238000012986 modification Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 6
- 150000001875 compounds Chemical class 0.000 claims 1
- 230000015654 memory Effects 0.000 description 154
- 230000006870 function Effects 0.000 description 45
- 230000007704 transition Effects 0.000 description 29
- 230000004044 response Effects 0.000 description 12
- 238000011156 evaluation Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 230000001960 triggered effect Effects 0.000 description 7
- 230000001066 destructive effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000002922 simulated annealing Methods 0.000 description 3
- 101710179738 6,7-dimethyl-8-ribityllumazine synthase 1 Proteins 0.000 description 2
- 101710186608 Lipoyl synthase 1 Proteins 0.000 description 2
- 101710137584 Lipoyl synthase 1, chloroplastic Proteins 0.000 description 2
- 101710090391 Lipoyl synthase 1, mitochondrial Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000005206 flow analysis Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 206010033799 Paralysis Diseases 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
用於有效率的詮釋資料處理之系統及方法,其例如是藉由提前解析輸入型態成為二進位表示。在某些實施例中,複數個輸入型態可被識別,其中所述複數個輸入型態中的一輸入型態是包括一詮釋資料標籤。複數個個別的值可被選擇用於複數個變數,其中所述複數個變數是包括對應於所述輸入型態的所述詮釋資料標籤的一變數。所述詮釋資料標籤的二進位表示可以根據所述變數的所述個別的值來加以獲得。
Description
本發明涉及用於改進詮釋資料處理效率的系統和方法。
相關的申請案
此申請案是根據第35號美國法典第119條(e)項主張2019年11月6日申請的美國臨時專利申請案序號62/931,635的益處,其名稱為「用於改進詮釋資料處理效率的系統和方法」,帶有代理人文件編號D0821.70005US00,並且藉此以其整體被納入作為參考。
電腦資安已經在社會的所有階層,從個人到商業乃至於政府機構變成是一項越來越急迫的問題。例如,在2015年,資安研究員已經識別出一零時差漏洞,其將會容許攻擊者經由網際網路駭入Jeep Cherokee的車載電腦系統,並且取得對於所述交通工具的儀表板功能、轉向、煞車以及變速箱的控制。在2017年,想哭(WannaCry)勒索軟體攻擊據估計已經影響全球超過200,000部電腦,在經濟上造成至少數億美金的損失。值得注意的是,所述攻擊癱瘓在英國的數間國家保健服務醫院的運作。在同年,在Equifax(一家美國消費者信用報告機構)的資料外洩暴露個人的資料,例如是全名、社會安全號碼、生日、地址、駕照號碼、信用卡號等等。所述攻擊據報導已經影響超過一億四千萬的消費者。
資安專業人士不斷想要趕上攻擊者。一旦一漏洞被報告出,資安專業人士趕著修補所述漏洞。無法及時修補漏洞(例如,由於管理不良及/或缺少資源)的個人及組織則變成攻擊者容易攻擊的目標。
某些資安軟體是監視在一電腦上及/或在一網路之內的活動,並且尋找可能指出一攻擊的型態。此種方法並未阻礙惡意程式碼最初的執行。等到任何可疑的型態浮現時,損壞通常已經造成。
根據某些實施例,一種用於解析輸入型態成為二進位表示之電腦實施的方法被提供,其包括以下動作:識別複數個輸入型態,其中所述複數個輸入型態中的一輸入型態是包括一詮釋資料標籤;選擇用於複數個變數的複數個個別的值,其中所述複數個變數是包括對應於所述輸入型態的所述詮釋資料標籤的一變數;並且根據所述變數的所述個別的值來獲得所述詮釋資料標籤的二進位表示。
在某些實施例中,所述方法進一步包括建構分別對應於所述複數個輸入型態的複數個限制的一動作;所述複數個限制中之一限制是對應於包括所述詮釋資料標籤的所述輸入型態;所述限制是參照對應於所述詮釋資料標籤的一變數;以及選擇用於所述複數個變數的所述複數個個別的值是包括依照所述複數個限制來解出所述複數個變數,以獲得所述複數個個別的值。
在某些實施例中,選擇用於所述複數個變數的所述複數個個別的值是包括利用最佳化技術來選擇所述複數個個別的值。
根據某些實施例,一種用於解析詮釋資料標籤成為二進位表示之電腦實施的方法被提供,其包括以下動作:在字典中查找詮釋資料標籤,所述字典包括複數個映射詮釋資料標籤至個別的二進位表示的項目;若所述詮釋資料標籤匹配在所述字典中的一項目,則獲得所述匹配的項目將所述詮釋資料標籤映射到的一個二進位表示;以及若所述詮釋資料標籤並不匹配在所述字典中的任何項目,則產生一個新的二進位表示。
根據某些實施例,一種用於識別輸入型態之電腦實施的方法被提供,其包括以下的動作:處理一策略規則以識別至少一輸入型態,其中:所述策略規則是包括在至少一輸入上的至少一條件;所述至少一輸入型態是包括對應於所述至少一輸入的至少一詮釋資料標籤;以及所述至少一詮釋資料標籤滿足在所述至少一輸入上的所述至少一條件。
根據某些實施例,一種用於處理詢問的輸入型態之電腦實施的方法被提供,其包括以下的動作:匹配所述詢問的輸入型態與一列表的具體規則,其中:所述詢問的輸入型態是包括一列表的詮釋資料標籤<L0
, …, LS-1
>,其分別對應於一列表的輸入;所述列表的具體規則的每一個具體規則是包括一列表的詮釋資料標籤<M0
, …, MS-1
>,其分別對應於所述列表的輸入;所述列表的具體規則是根據字典順序來排序的,所述字典順序是藉由在詮釋資料標籤上的一所選的排序所引起的;匹配所述詢問的輸入型態與所述列表的具體規則是包括根據所述字典順序來比較<L0
, …, LS-1
>與一所選的具體規則R0;以及根據所述字典順序使得R小於R0的具體規則的一數量R是匹配根據所述字典順序使得R大於R0的具體規則的一數量R。
根據某些實施例,一種系統被提供,其包括電路系統及/或一或多個藉由可執行的指令而被程式化的處理器,其中所述電路系統及/或所述一或多個被程式化的處理器是被配置以執行在此所述的方法的任一種。
根據某些實施例,至少一電腦可讀取的媒體被提供,其已經於其上儲存針對於在此所述的電路系統的任一個的至少一網表(netlist)。
根據某些實施例,至少一電腦可讀取的媒體被提供,其已經於其上儲存至少一硬體描述,當所述硬體描述被合成時,其產生在此所述的網表的任一個。
根據某些實施例,至少一電腦可讀取的媒體被提供,其已經於其上儲存在此所述的可執行的指令的任一個。
此申請案可包含標的是相關於2019年2月1日申請、名稱為「用於安全初始化的系統及方法」、帶有代理人文件編號D0821.70000WO00的國際專利申請案號PCT/US2019/016272的標的,所述國際專利申請案是藉此以其整體被納入作為參考。
此申請案可包含標的是相關於2019年4月30日申請、名稱為「用於檢查安全性質的系統及方法」、帶有代理人文件編號D0821.70002WO00的國際專利申請案號PCT/US2019/029880的標的,所述國際專利申請案是藉此以其整體被納入作為參考。
此申請案可包含標的是相關於2019年1月18日申請的、名稱為「用於詮釋資料分類的系統及方法」,帶有代理人文件編號D0821.70013US00的美國臨時申請案號62/794,499的標的,所述美國臨時申請案是藉此以其整體被納入作為參考。
許多攻擊者所利用的漏洞,追溯回到其中資料以及可執行的指令被混合在同一記憶體中的一種電腦架構的設計。此混合讓攻擊者能夠藉由偽裝惡意碼成為資料而將所述惡意碼注入一遠端的電腦中。譬如,一程式可以在一電腦的記憶體中配置一緩衝器來儲存經由一網路接收到的資料。若所述程式接收比所述緩衝器能夠保存的更多的資料,但是在寫入所述資料到所述緩衝器之前並不檢查所接收到的資料的尺寸,則所接收到的資料的部分將會超出所述緩衝器的邊界而被寫入相鄰的記憶體中。攻擊者可以利用此特性來注入惡意碼到所述相鄰的記憶體中。若所述相鄰的記憶體被配置用於可執行的碼,則所述惡意碼最終可藉由所述電腦來加以執行。
技術已經被提供來使得電腦硬體更有資安意識的。譬如,記憶體位置可以是和用於實行資安策略的詮釋資料相關的,並且指令可被檢查是否匹配所述資安策略。例如,給定一將被執行的指令,和所述指令相關的詮釋資料、及/或和所述指令的一或多個運算元相關的詮釋資料可被檢查,以判斷所述指令是否應該被容許。額外或替代的是,適當的詮釋資料可以是和所述指令的一輸出相關的。
圖1是展示根據某些實施例的一用於實行策略的舉例說明的硬體系統100。在此例子中,所述系統100包含一主機處理器110,其可以具有任何適當的指令集架構(instruction set architecture,ISA),例如一精簡指令集計算(reduced instruction set computing,RISC)架構、或是一複雜指令集計算(complex instruction set computing,CISC)架構。所述主機處理器110可以經由一寫入互鎖112來執行記憶體存取。所述寫入互鎖112可以連接至一系統匯流排115,所述系統匯流排115被配置以在各種的構件,例如是所述寫入互鎖112、一應用程式記憶體120、一詮釋資料記憶體125、一唯讀記憶體(ROM)130、一或多個週邊裝置135等等之間傳輸資料。
在某些實施例中,藉由所述主機處理器110處理(例如,修改、消耗、及/或產生)的資料可被儲存在所述應用程式記憶體120中。此種資料在此被稱為「應用程式資料」,以與用於實行策略的詮釋資料有區別的。後者可被儲存在所述詮釋資料記憶體125中。應該體認到的是,應用程式資料可包含藉由一作業系統(OS)處理的資料、所述OS的指令、藉由一或多個使用者應用程式處理的資料、及/或所述一或多個使用者應用程式的指令。
在某些實施例中,所述應用程式記憶體120以及所述詮釋資料記憶體125可以是實體上分開的,因而所述主機處理器110可能沒有存取到所述詮釋資料記憶體125。以此種方式,即使攻擊者成功注入惡意碼到所述應用程式記憶體120中,並且使得所述主機處理器110執行所述惡意碼,但是所述詮釋資料記憶體125可以不受影響。然而,應該體認到的是,本揭露內容的特點並不限於在實體上分開的記憶體上儲存應用程式資料以及詮釋資料。額外或替代的是,詮釋資料可被儲存在和應用程式資料的同一記憶體中,並且一記憶體管理構件可被利用,其實施一適當的保護設計以避免在所述主機處理器110上執行的指令修改所述詮釋資料。額外或替代的是,詮釋資料可以和應用程式資料混合在同一記憶體中,並且一或多個策略可被用來保護所述詮釋資料。
在某些實施例中,標籤處理硬體140可被設置,以確保正藉由所述主機處理器110執行的指令匹配一或多個策略。所述標籤處理硬體140可包含任何適當的電路構件、或是電路構件的組合。譬如,所述標籤處理硬體140可包含一標籤映射表142,其將所述應用程式記憶體120中的位址映射至所述詮釋資料記憶體125中的位址。例如,所述標籤映射表142可以將所述應用程式記憶體120中的一位址X映射至所述詮釋資料記憶體125中的一位址Y。在所述位址Y所儲存的一值在此有時被稱為一「詮釋資料標籤」。
在某些實施例中,在所述位址Y所儲存的一值可以進而是一位址Z。此種間接可以重複任意適當的次數,並且最終可以導向在用於儲存詮釋資料的詮釋資料記憶體125中的一資料結構。此種詮釋資料以及任何中間的位址(例如,所述位址Z)在此亦被稱為「詮釋資料標籤」。
應該體認到的是,本揭露內容的特點並不限於一標籤映射表,該標籤映射表儲存一詮釋資料記憶體中的位址。在某些實施例中,一標籤映射表項目本身可以儲存詮釋資料,因而所述標籤處理硬體140可以是能夠在未執行記憶體操作下存取所述詮釋資料。在某些實施例中,一標籤映射表項目可以儲存一所選的位元型態,其中所述位元型態的一第一部分可以編碼詮釋資料,並且所述位元型態的一第二部分可以編碼在一詮釋資料記憶體中的一位址,而進一步的詮釋資料可被儲存所在該位址。此可以在速度及表現度之間提供一所要的平衡。譬如,所述標籤處理硬體140可以是能夠快速地檢查某些策略,其僅利用在所述標籤映射表項目本身中所儲存的詮釋資料。對於其它具有較複雜規則的策略,所述標籤處理硬體140可以存取在所述詮釋資料記憶體125中所儲存的進一步的詮釋資料。
再次參照圖1,藉由將應用程式記憶體位址映射到詮釋資料記憶體位址,所述標籤映射表142可以在應用程式資料以及描述所述應用程式資料的詮釋資料之間產生一關聯。在一例子中,在所述詮釋資料記憶體位址Y所儲存、並且因此和在所述應用程式記憶體位址X所儲存的應用程式資料相關的詮釋資料,可以指出所述應用程式資料可能是可讀取的、可寫入的、及/或可執行的。在另一例子中,在所述詮釋資料記憶體位址Y所儲存、並且因此和在所述應用程式記憶體位址X所儲存的應用程式資料相關的詮釋資料,可以指出所述應用程式資料的一種類型(例如,整數、指標、16位元的字、32位元的字等等)。根據一將被實行的策略,任何與所述策略相關的適當的詮釋資料都可以是和一項應用程式資料相關的。
在某些實施例中,一詮釋資料記憶體位址Z可被儲存在所述詮釋資料記憶體位址Y。和在所述應用程式記憶體位址X所儲存的應用程式資料相關的詮釋資料可被儲存在所述詮釋資料記憶體位址Z,而不是(或是額外地)所述詮釋資料記憶體位址Y。譬如,一詮釋資料標籤RED的一個二進位表示可被儲存在所述詮釋資料記憶體位址Z。藉由在所述詮釋資料記憶體位址Y中儲存所述詮釋資料記憶體位址Z,在所述應用程式記憶體位址X所儲存的應用程式資料可以被標記RED。
以此種方式,所述詮釋資料標籤RED的二進位表示在所述詮釋資料記憶體125中可以只被儲存一次。譬如,若在另一應用程式記憶體位址X’所儲存的應用程式資料亦被標記RED,則所述標籤映射表142可以將所述應用程式記憶體位址X’映射到的一詮釋資料記憶體位址Y’,而所述詮釋資料記憶體位址Z亦被儲存至該詮釋資料記憶體位址Y’。
再者,以此種方式,標籤更新可以被簡化。譬如,若在所述應用程式記憶體位址X所儲存的應用程式資料,在一後續的時間將被標記BLUE,則一詮釋資料記憶體位址Z’可被寫入在所述詮釋資料記憶體位址Y,以取代所述詮釋資料記憶體位址Z,因而所述詮釋資料標籤BLUE的一個二進位表示可被儲存在所述詮釋資料記憶體位址Z’。
因此,本發明人已經體認且理解到一具有任何適當長度N的詮釋資料記憶體位址鏈可被使用於標記,其包含N=0(例如,此處一詮釋資料標籤的一個二進位表示被儲存在所述詮釋資料記憶體位址Y本身)。
在應用程式資料以及詮釋資料之間的關聯(在此亦被稱為「標記」),可以在任何適當程度的粒度、及/或可變的粒度下加以完成。譬如,標記可以逐字來加以完成。額外或替代的是,在記憶體中的一區域可被映射到單一詮釋資料標籤,因而在那區域中的所有字都是和相同的詮釋資料相關的。此可以有利地縮減所述標籤映射表142及/或所述詮釋資料記憶體125的尺寸。例如,可以針對於一整個位址範圍維持單一詮釋資料標籤,此相對於維持多個詮釋資料標籤分別對應在所述位址範圍中的不同位址。
在某些實施例中,所述標籤處理硬體140可被配置,以施加一或多個規則至和一指令相關的詮釋資料及/或和所述指令的一或多個運算元相關的詮釋資料,以判斷所述指令是否應該被容許。譬如,所述主機處理器110可以提取及執行一指令,並且可以佇列執行所述指令的一結果到所述寫入互鎖112中。在所述結果被寫回到所述應用程式記憶體120中之前,所述主機處理器110可以傳送一指令類型(例如,運算碼)、所述指令被儲存所在的一位址、所述指令所參照的一或多個記憶體位址、及/或一或多個暫存器識別符至所述標籤處理硬體140。此種暫存器識別符可以識別所述主機處理器110在執行所述指令中所用的一暫存器,例如是用於儲存所述指令的一運算元或是一結果的一暫存器。
在某些實施例中,破壞性的讀取指令可以額外或替代寫入指令而被佇列。譬如,後續嘗試存取一破壞性的讀取指令的一目標位址的指令可被佇列在一並非快取的記憶體區域中。若且當判斷出的是所述破壞性的讀取指令應該被容許時,所述佇列的指令可被載入以用於執行。
在某些實施例中,一破壞性的讀取指令可被容許進行,因而從一目標位址讀取的資料可被捕捉在一緩衝器中。若且當判斷出的是所述破壞性的讀取指令應該被容許時,在所述緩衝器中所捕捉的資料可被拋棄。若且當判斷出的是所述破壞性的讀取指令不應該被容許時,在所述緩衝器中所捕捉的資料可以被回復至所述目標位址。額外或替代的是,一後續的讀取可以藉由所述緩衝的資料來加以服務。
應該體認到的是,本揭露內容的特點並不限於在已經藉由一主機處理器執行的指令上執行詮釋資料處理,例如是已經被所述主機處理器的執行管線退休的指令。在某些實施例中,詮釋資料處理可以在所述主機處理器的執行管線之前、期間、及/或之後,在指令上加以執行。
在某些實施例中,給定一從所述主機處理器110接收到的位址(例如,一指令被儲存所在的一位址、或是被一指令所參照的一位址),所述標籤處理硬體140可以使用所述標籤映射表142來識別一對應的詮釋資料標籤。額外或替代的是,針對於一從所述主機處理器110接收到的暫存器識別符,所述標籤處理硬體140可以從所述標籤處理硬體140之內的一標籤暫存器檔146存取一詮釋資料標籤。
在某些實施例中,若一應用程式記憶體位址在所述標籤映射表142中並不具有一對應的項目,則所述標籤處理硬體140可以傳送一詢問至一策略處理器150。所述詢問可包含查詢中的應用程式記憶體位址,並且所述策略處理器150可以針對於所述應用程式記憶體位址傳回一詮釋資料標籤。額外或替代的是,所述策略處理器150可以對於一包含所述應用程式記憶體位址的位址範圍產生一新的標籤映射項目。以此種方式,所述適當的詮釋資料標籤可以在所述標籤映射表142中被做成可利用的,以供和查詢中的應用程式記憶體位址相關的未來的參考。
在某些實施例中,所述標籤處理硬體140可以傳送一詢問至所述策略處理器150,以檢查一藉由所述主機處理器110執行的指令是否應該被容許。所述詢問可包含一或多個輸入,例如是所述指令的一指令類型(例如,運算碼)、用於一程式計數器的一詮釋資料標籤、用於所述指令被提取所來自的一應用程式記憶體位址的一詮釋資料標籤(例如,所述程式計數器指向的記憶體中的一字)、用於所述指令的一運算元被儲存在其中的一暫存器的一詮釋資料標籤、及/或用於所述指令所參照的一應用程式記憶體位址的一詮釋資料標籤。在一例子中,所述指令可以是一載入指令,並且所述指令的一運算元可以是將被載入的應用程式資料所來自的一應用程式記憶體位址。除了其它方面以外,所述詢問可包含所述應用程式記憶體位址被儲存在其中的一暫存器的一詮釋資料標籤、以及用於所述應用程式記憶體位址本身的一詮釋資料標籤。在另一例子中,所述指令可以是一算術指令,因而可以有兩個運算元。除了其它方面以外,所述詢問可包含用於一第一運算元被儲存在其中的一第一暫存器的一第一詮釋資料標籤、以及用於一第二運算元被儲存在其中的一第二暫存器的一第二詮釋資料標籤。
亦應該體認到的是,本揭露內容的特點並不限於一次在單一指令上執行詮釋資料處理。在某些實施例中,在一主機處理器的ISA中的多個指令可以例如是經由單一詢問至所述策略處理器150,而作為一捆來一起被檢查。此種詢問可包含更多的輸入,以容許所述策略處理器150能夠檢查在所述捆中的全部的指令。類似地,一可以在語義上對應多個運算的CISC指令可以經由單一詢問至所述策略處理器150而被檢查,其中所述詢問可包含充分的輸入以容許所述策略處理器150能夠檢查在所述CISC指令之內的全部構成的運算。
在某些實施例中,所述策略處理器150可包含一可配置的處理單元,例如是一微處理器、一現場可程式化的閘陣列(FPGA)、及/或任何其它適當的電路系統。所述策略處理器150可以已經於其中載入一或多個策略,其描述所述主機處理器110的被容許的操作。響應於來自所述標籤處理硬體140的一詢問,所述策略處理器150可以評估所述策略中的一或多個來判斷一查詢中的指令是否應該被容許。譬如,所述標籤處理硬體140可以連同一或多個有關於查詢中的指令的輸入(例如,如上所述的),傳送一中斷信號至所述策略處理器150及。所述策略處理器150可以將所述詢問的輸入儲存在一工作記憶體中(例如,在一或多個佇列中),以用於立即或延後的處理。例如,所述策略處理器150可以用某種適當的方式(例如,根據和每一個詢問相關的一優先權旗標)來優先化詢問的處理。
在某些實施例中,所述策略處理器150可以在一或多個輸入(例如,一或多個輸入詮釋資料標籤)上評估一或多個策略,以判斷一查詢中的指令是否應該被容許。若所述指令將不被容許,則所述策略處理器150可以如此通知所述標籤處理硬體140。若所述指令將被容許,則所述策略處理器150可以計算一或多個輸出(例如,一或多個輸出詮釋資料標籤)以被回傳至所述標籤處理硬體140。舉例而言,所述指令可以是一儲存指令,因而所述策略處理器150可以計算用於應用程式資料將被儲存到的一應用程式記憶體位址的一輸出詮釋資料標籤。作為另一例子的是,所述指令可以是一算術指令,因而所述策略處理器150可以計算用於儲存執行所述算術指令的一結果的一暫存器的一輸出詮釋資料標籤。
在某些實施例中,所述策略處理器150可被程式化以執行除了那些有關於策略的評估工作之外或替代的一或多個工作。譬如,所述策略處理器150可以執行有關於標籤初始化、開機載入、應用程式載入、用於所述詮釋資料記憶體125的記憶體管理(例如,垃圾收集)、記錄、除錯支援、及/或中斷處理的工作。這些工作中的一或多個可以在背景中(例如,在來自所述標籤處理硬體140的服務詢問之間)加以執行。
在某些實施例中,所述標籤處理硬體140可包含一規則快取144,以用於映射一或多個輸入至一決策及/或一或多個輸出。譬如,一對於所述規則快取144的詢問可以類似一對於所述策略處理器150的詢問而被建構,以檢查一藉由所述主機處理器110執行的指令是否應該被容許。若有一快取命中,則所述規則快取144可以輸出一關於所述指令是否應該被容許的決策、及/或一或多個輸出詮釋資料標籤(例如,如上相關所述策略處理器150所述的)。在所述規則快取144中的此種映射可以利用來自所述策略處理器150的一詢問響應而被產生。然而,其並非必須的,因為在某些實施例中,一或多個映射可以提前被安裝到所述規則快取144中。
在某些實施例中,所述規則快取144可被用來提供一效能強化。譬如,在利用一或多個輸入詮釋資料標籤來詢問所述策略處理器150之前,所述標籤處理硬體140可以先利用所述一或多個輸入詮釋資料標籤來詢問所述規則快取144。在一快取命中的情形中,所述標籤處理硬體140可以利用來自所述規則快取144的一決策及/或一或多個輸出詮釋資料標籤來進行,而不詢問所述策略處理器150。此可以提供一顯著的加速。在一快取未命中的情形中,所述標籤處理硬體140可以詢問所述策略處理器150,並且可以安裝來自所述策略處理器150的一響應到所述規則快取144中以供可能未來的使用。
在某些實施例中,所述標籤處理硬體140可以根據一或多個輸入詮釋資料標籤來形成一雜湊密鑰,並且可以提交所述雜湊密鑰至所述規則快取144。在一快取未命中的情形中,所述標籤處理硬體140可以傳送一中斷信號至所述策略處理器150。響應於所述中斷信號,所述策略處理器150可以從一或多個輸入暫存器(例如,所述一或多個輸入詮釋資料標籤被儲存之處)提取詮釋資料、處理所提取的詮釋資料、以及寫入一或多個結果至一或多個輸出暫存器。所述策略處理器150接著可以發信號給所述標籤處理硬體140所述一或多個結果是可供利用的。
在某些實施例中,若所述標籤處理硬體140判斷一查詢中的指令應該被容許(例如,根據在所述規則快取144中的一命中、或是在所述規則快取144中的一未命中,接著是來自所述策略處理器150的一指出未發現有策略違反的響應),則所述標籤處理硬體140可以向所述寫入互鎖112指出執行所述指令的一結果可被寫入回到記憶體。額外或替代的是,所述標籤處理硬體140可以利用一或多個輸出詮釋資料標籤(例如,如同從所述規則快取144或是所述策略處理器150接收到的)來更新所述詮釋資料記憶體125、所述標籤映射表142、及/或所述標籤暫存器檔146。舉例而言,針對於一儲存指令,所述詮釋資料記憶體125可以藉由所述標籤映射表142,根據一位址轉換而被更新。譬如,所述儲存指令所參照的一應用程式記憶體位址,可被用來從所述標籤映射表142查找一詮釋資料記憶體位址,並且從所述規則快取144或是所述策略處理器150接收到的詮釋資料,可以在所述詮釋資料記憶體位址處被儲存至所述詮釋資料記憶體125。作為另一例子的是,在其中將被更新的詮釋資料是被儲存在所述標籤映射表142中的一項目內的情形(相對於被儲存在所述詮釋資料記憶體125中),在所述標籤映射表142中的該項目可被更新。作為另一例子的是,針對於一算術指令,在所述標籤暫存器檔146中的對應於所述主機處理器110用於儲存執行所述算術指令的一結果的一暫存器的一項目,可以利用一適當的詮釋資料標籤而被更新。
在某些實施例中,若所述標籤處理硬體140判斷查詢中的指令代表一策略違反(例如,根據在所述規則快取144中的一未命中,接著是來自所述策略處理器150的一指出已經發現一策略違反的響應),則所述標籤處理硬體140可以向所述寫入互鎖112指出執行所述指令的一結果應該被拋棄,而不是被寫回到記憶體。額外或替代的是,所述標籤處理硬體140可以傳送一中斷至所述主機處理器110。響應於接收所述中斷,所述主機處理器110可以切換到任何適當的違反處理碼。例如,所述主機處理器100可以停止、重置、記錄所述違反並且繼續、在應用碼及/或應用程式資料上執行一完整性檢查、通知一操作者等等。
在某些實施例中,所述規則快取144可以利用一雜湊函數以及一記憶體的一指定的部分(例如,所述詮釋資料記憶體125)來加以實施。譬如,一雜湊函數可被施加至所述規則快取144的一或多個輸入,以產生在所述詮釋資料記憶體125中的一位址。對應於所述一或多個輸入的一規則快取項目可被儲存至所述詮釋資料記憶體125中的該位址,且/或從其加以取回。此種項目可包含所述一或多個輸入及/或一或多個對應的輸出,所述輸出可以是從所述一或多個輸入在運行時間、載入時間、連結時間、或是編譯時間計算出的。
在某些實施例中,所述標籤處理硬體140可包含一或多個配置暫存器。此種暫存器可以是可經由所述標籤處理硬體140的一配置介面存取的(例如,藉由所述策略處理器150)。在某些實施例中,所述標籤暫存器檔146可被實施為配置暫存器。額外或替代的是,可以有一或多個應用程式配置暫存器及/或一或多個詮釋資料配置暫存器。
儘管實施方式的細節被展示在圖1中並且在以上論述,但應該體認到的是本揭露內容的特點並不限於任何特定的構件、或是構件的組合、或是構件的任何特定的配置的使用。譬如,在某些實施例中,所述策略處理器150的一或多個功能可以藉由所述主機處理器110來加以執行。舉例而言,所述主機處理器110可以具有不同的操作型態,例如用於使用者應用程式的一使用者型態、以及用於一作業系統的一特權型態。策略相關的碼(例如,標記、評估策略等等)可以在和所述作業系統相同的特權型態、或是一不同的特權型態(例如,具有甚至更多的保護以防止特權提升)中執行。
圖2是展示根據某些實施例的一用於實行策略的舉例說明的軟體系統200。譬如,所述軟體系統200可被程式化以產生可執行碼,且/或載入所述可執行碼到圖1的例子中的舉例說明的硬體系統100中。
在圖2所示的例子中,所述軟體系統200包含一軟體工具鏈,其具有一編譯器205、一連結器210、以及一載入器215。所述編譯器205可被程式化以處理原始碼成為可執行碼,其中所述原始碼可以是具有一較高階的語言,而所述可執行碼可以是具有一較低階的語言。所述連結器210可被程式化以結合藉由所述編譯器205產生的多個目的檔成為單一目的檔,以藉由所述載入器215而被載入記憶體中(例如,在圖1的例子中的舉例說明的應用程式記憶體120)。儘管未被展示,但藉由所述連結器210輸出之目的檔可被轉換成為一適當的格式,並且被儲存在永續儲存器中,例如是快閃記憶體、硬碟、唯讀記憶體(ROM)等等。所述載入器215可以從所述永續儲存器取回所述目的檔,並且載入所述目的檔到隨機存取記憶體(RAM)中。
在某些實施例中,所述編譯器205可被程式化以產生用於實行策略的資訊。譬如,當所述編譯器205轉換原始碼成為可執行碼時,所述編譯器205可以產生有關資料類型、程式語意及/或記憶體佈局的資訊。舉例而言,所述編譯器205可被程式化,以標記在一函式的一或多個指令、以及實施呼叫設計慣例操作(例如,從一呼叫者函式傳遞一或多個參數至一被呼叫者函式;從被呼叫者函式傳回一或多個值至呼叫者函式;儲存一返回位址以在被呼叫者函式返還控制回到呼叫者函式時,指出在所述呼叫者函式的碼中恢復繼續執行之處等等)的一或多個指令之間的一邊界。譬如,此種邊界可以在初始化期間被使用來標記某些指令為函式開頭或是函式結尾。在運行時間,一堆疊策略可以被實行,因而當函式開頭指令執行時,在一呼叫堆疊中的某些位置(例如,其中一返回位址被儲存之處)可以被標記為FRAME位置,並且當函式結尾指令執行時,所述FRAME詮釋資料標籤可被移除。所述堆疊策略可以指出實施所述函式的一主體(相對於函式開頭以及函式結尾)的指令只能讀取存取到FRAME位置。此可以避免攻擊者覆寫一返回位址並且藉此獲得控制。
作為另一例子的是,所述編譯器205可被程式化以執行控制流程分析,譬如是用以識別一或多個控制轉移點以及個別的目的地。此種資訊可被用在實行一控制流程策略。作為又一例子的是,所述編譯器205可被程式化以執行類型分析,例如是藉由施加像是指標、整數、浮點數等等的類型標籤。此種資訊可被用來實行一避免誤用(例如,利用一浮點數作為一指標)的策略。
儘管未顯示在圖2中,所述軟體系統200在某些實施例中可以包含一個二元(binary)分析構件,其被程式化以將藉由所述連結器210產生的目的碼(相對於原始碼)取作為輸入,並且執行一或多個類似於那些藉由所述編譯器205所執行的分析(例如,控制流程分析、類型分析等等)。
在圖2的例子中,所述軟體系統200進一步包含一策略編譯器220以及一策略連結器225。所述策略編譯器220可被程式化以轉換用一策略語言所撰寫的一或多個策略成為策略碼。譬如,所述策略編譯器220可以輸出用C或是某種其它適當的程式化語言撰寫的策略碼。額外或替代的是,所述策略編譯器220可以輸出由所述一或多個策略參照的一或多個詮釋資料標籤。在初始化,此種詮釋資料標籤可以是和一目標系統的一或多個記憶體位置、暫存器、及/或其它機器狀態相關的,並且可被解析成為詮釋資料的一個二進位表示以被載入所述目標系統的一詮釋資料記憶體或是某種其它硬體儲存(例如,暫存器)中。如上所論述,詮釋資料的此種二進位表示、或是一指向所述二進位表示被儲存所在的一位置的指標在此有時被稱為一「詮釋資料標籤」。
應該體認到的是,本揭露內容的特點並不限於在載入時間解析詮釋資料標籤。在某些實施例中,一或多個詮釋資料標籤可以靜態地(例如,在編譯時間或是連結時間)被解析。例如,所述策略編譯器220可以處理一或多個可應用的策略,並且解析藉由所述一或多個策略所定義的一或多個詮釋資料標籤成為一靜態決定的二進位表示。額外或替代的是,所述策略連結器225可以解析一或多個詮釋資料標籤成為一靜態決定的二進位表示、或是一指向儲存一靜態決定的二進位表示的一資料結構的指標。本發明人已經體認且領悟到靜態解析詮釋資料標籤可以有利地降低載入時間的處理。然而,本揭露內容的特點並不限於用任何特定的方式來解析詮釋資料標籤。
在某些實施例中,所述策略連結器225可被程式化以處理目的碼(例如,如同藉由所述連結器210輸出的)、策略碼(例如,如同藉由所述策略編譯器220輸出的)、及/或一目標描述,以輸出一初始化規格。所述初始化規格可被所述載入器215使用,以安全地初始化具有一或多個硬體構件(例如,在圖1的例子中的舉例說明的硬體系統100)及/或一或多個軟體構件(例如,一作業系統、一或多個使用者應用程式等等)的一目標系統。
在某些實施例中,所述目標描述可包含複數個命名實體(named entities)的描述。一命名實體可以代表一目標系統的一構件。舉例而言,一命名實體可以代表一硬體構件,例如是一配置暫存器、一程式計數器、一暫存器檔、一計時器、一狀態旗標、一記憶體轉移單元、一輸入/輸出裝置等等。作為另一例子的是,一命名實體可以代表一軟體構件,例如是一函式、一模組、一驅動程式、一服務常式等等。
在某些實施例中,所述策略連結器225可被程式化以搜尋所述目標描述,以識別與一策略有關的一或多個實體。譬如,所述策略可以將某些實體名稱映射到對應的詮釋資料標籤,並且所述策略連結器225可以搜尋所述目標描述以識別具有那些實體名稱的實體。所述策略連結器225可以從所述目標描述識別那些實體的描述,並且使用所述描述以適當的詮釋資料標籤來註釋藉由所述連結器210輸出的目的碼。譬如,所述策略連結器225可以施加一Read標籤至一可執行與可連結格式(ELF)檔的一.rodata區段,一Read標籤以及一Write標籤至所述ELF檔的一.data區段,以及一Execute標籤至所述ELF檔的一.text區段。此種資訊可被用來實行一用於記憶體存取控制及/或可執行碼保護的策略(例如,藉由檢查讀取、寫入、及/或執行特權)。
應該體認到的是,本揭露內容的特點並不限於提供一目標描述至所述策略連結器225。在某些實施例中,一目標描述可以額外或是替代所述策略連結器225而被提供至所述策略編譯器220。所述策略編譯器220可以檢查所述目標描述是否有錯誤。譬如,若在一策略中所參照的一實體並不存在於所述目標描述中,則一錯誤可以藉由所述策略編譯器220來設定旗標。額外或替代的是,所述策略編譯器220可以在所述目標描述中搜尋和一或多個將被實行的策略相關的實體,並且可以產生一經過濾的目標描述,其只包含針對於相關的實體的實體描述。譬如,所述策略編譯器220可以比對在一將被實行的策略的一「init」陳述中的一實體名稱至所述目標描述中的一實體描述,並且可以從所述目標描述移除(或是單純忽略)沒有對應的「init」陳述的實體描述。
在某些實施例中,所述載入器215可以根據藉由所述策略連結器225產生的一初始化規格來初始化一目標系統。譬如,參考圖1的例子,所述載入器215可以載入資料及/或指令到所述應用程式記憶體120中,並且可以使用所述初始化規格來識別和正被載入所述應用程式記憶體120中的資料及/或指令相關的詮釋資料標籤。所述載入器215可以解析在所述初始化規格中的詮釋資料標籤成為個別的二進位表示。然而,應該體認到的是,本揭露內容的特點並不限於在載入時間解析詮釋資料標籤。在某些實施例中,各式各樣的詮釋資料標籤可以是在策略連結期間已知的,並且因此詮釋資料標籤可以在所述時間例如藉由所述策略連結器225而被解析。此可以有利地減少所述初始化規格的載入時間處理。
在某些實施例中,所述策略連結器225及/或所述載入器215可以維持詮釋資料的二進位表示回到詮釋資料標籤的人可讀的版本的一映射。此種映射例如可被一除錯器230使用。譬如,在某些實施例中,所述除錯器230可被設置,以顯示一初始化規格的一人可讀的版本,其可以列表一或多個實體、以及對於每一個實體的一組和所述實體相關的一或多個詮釋資料標籤。額外或替代的是,所述除錯器230可被程式化以顯示被註釋有詮釋資料標籤的組合語言碼,例如是藉由反組譯被註釋有詮釋資料標籤的目的碼所產生的組合語言碼。在除錯期間,所述除錯器230可以在執行期間停止一程式,並且容許用人可讀的形式檢查實體及/或和所述實體相關的詮釋資料標籤。譬如,所述除錯器230可以容許檢查在一策略違反中牽涉到的實體、及/或造成所述策略違反的詮釋資料標籤。所述除錯器230可以利用所述詮釋資料的二進位表示回到詮釋資料標籤的映射來完成此。
在某些實施例中,一習知的除錯工具可被擴充以容許檢視相關於例如是如上所述的策略執行的問題。額外或替代的是,一獨立的策略除錯工具可加以設置。
在某些實施例中,所述載入器215可以載入所述詮釋資料標籤的二進位表示到所述詮釋資料記憶體125中,並且可以在所述標籤映射表142中記錄在應用程式記憶體位址以及詮釋資料記憶體位址之間的映射。譬如,所述載入器215可以在所述標籤映射表142中產生一項目,其映射一指令被儲存在所述應用程式記憶體120中所在的一應用程式記憶體位址至和所述指令相關的詮釋資料被儲存在所述詮釋資料記憶體125中所在的一詮釋資料記憶體位址。額外或替代的是,所述載入器215可以在所述標籤映射表142本身中(而不是所述詮釋資料記憶體125)儲存詮釋資料,以容許在無執行任何記憶體操作下的存取。
在某些實施例中,所述載入器215可以額外或替代所述標籤映射表142來初始化所述標籤暫存器檔146。譬如,所述標籤暫存器檔146可包含分別對應複數個實體的複數個暫存器。所述載入器215可以從所述初始化規格識別和所述實體相關的詮釋資料,並且在所述標籤暫存器檔146中的個別的暫存器內儲存所述詮釋資料。
再次參考圖1的例子,所述載入器215在某些實施例中可以將策略碼(例如,如同藉由所述策略編譯器220輸出的)載入到所述詮釋資料記憶體125中,以藉由所述策略處理器150來執行。額外或替代的是,一分開的記憶體(未顯示在圖1中)可被設置以供所述策略處理器150使用,並且所述載入器215可以將策略碼及/或相關的資料載入到所述分開的記憶體中。
在某些實施例中,一詮釋資料標籤可以是根據多個詮釋資料標籤而定的。譬如,一實體可能遭受到多個策略,並且因此可能是和分別對應於所述不同策略的不同詮釋資料標籤相關的。本發明人已經體認且領悟到,同一組的詮釋資料標籤被所述載入器215解析成為同一個二進位表示(其有時在此被稱為一「規範的」表示)可能是所期望的。譬如,一詮釋資料標籤{A、B、C}以及一詮釋資料標籤{B、A、C}可藉由所述載入器215解析成為同一個二進位表示。以此種方式,句法上不同,但是語義上等同的詮釋資料標籤可以具有相同的二進位表示。
本發明人已經進一步體認且領悟到確保詮釋資料的一個二進位表示並詮釋資料儲存中不重複可能是所期望的。譬如,如上所論述,在圖1的例子中舉例說明的規則快取144可以映射輸入詮釋資料標籤至輸出詮釋資料標籤,並且在某些實施例中,所述輸入詮釋資料標籤可以是詮釋資料的二進位表示被儲存所在的詮釋資料記憶體位址,而不是所述二進位表示本身。本發明人已經體認且領悟到,若詮釋資料的一相同的二進位表示被儲存在兩個不同的詮釋資料記憶體位址X及Y,則所述規則快取144可能無法辨認具有所述詮釋資料記憶體位址Y的一輸入型態為匹配具有所述詮釋資料記憶體位址X的一儲存的映射。此可能會導致大量不必要的規則快取未命中,其可能會劣化系統效能。
再者,本發明人已經體認且領悟到,具有一種在詮釋資料的二進位表示以及其儲存位置之間的一對一的對應性可以使得詮釋資料比較變得容易。譬如,在兩件詮釋資料之間的等同可以單純藉由比較詮釋資料記憶體位址來加以判斷,而非比較詮釋資料的二進位表示。此可以導致顯著的效能改善,尤其是其中所述二進位表示是大的情形(例如,許多詮釋資料符號被封入單一詮釋資料標籤內)。
於是,在某些實施例中,所述載入器215可以在儲存詮釋資料的一個二進位表示(例如,到圖1的例子中的舉例說明的詮釋資料記憶體125中)之前,檢查詮釋資料的二進位表示是否已經被儲存。若詮釋資料的二進位表示已經被儲存,則並不是在一不同的儲存位置再次儲存該詮釋資料的二進位表示,而是所述載入器215可以參照到現有的儲存位置。此種檢查可以在起動時及/或當一程式在起動後被載入時(具有或是不具有動態連結)加以完成。
額外或替代的是,一類似的檢查可以在詮釋資料的一個二進位表示由於評估一或多個策略(例如,藉由在圖1的例子中的舉例說明的策略處理器150)而被產生時加以執行。若詮釋資料的所述二進位表示已經被儲存,則對於現有的儲存位置的一參照可被使用(例如,被安裝在圖1的例子中的舉例說明的規則快取144中)。
在某些實施例中,所述載入器215可以產生一雜湊表,其將雜湊值映射到儲存位置。在儲存詮釋資料的一個二進位表示之前,所述載入器215可以使用一雜湊函數以將詮釋資料的二進位表示縮減成為一雜湊值,並且檢查所述雜湊表是否已經包含一和所述雜湊值相關的項目。若是的話,則所述載入器215可以判斷詮釋資料的二進位表示已經被儲存,並且可以從所述項目取回有關詮釋資料的二進位表示的資訊(例如,一指向詮釋資料的二進位表示的指標、或是一指向所述指標的指標)。若所述雜湊表尚未包含一和所述雜湊值相關的項目,則所述載入器215可以儲存詮釋資料的二進位表示(例如,至一暫存器或是在一詮釋資料記憶體中的一位置),在所述雜湊表中產生和所述雜湊值相關的一新的項目,並且在所述新的項目中儲存適當的資訊(例如,一暫存器識別符、一指向在所述詮釋資料記憶體中的詮釋資料的二進位表示的指標、一指向所述指標的指標等等)。然而,應該體認到的是,本揭露內容的特點並不限於使用一雜湊表以用於追蹤已經被儲存的詮釋資料的二進位表示。額外或替代的是,其它的資料結構可被使用,例如一圖形資料結構、一有序列表、一無序列表等等。任何適當的資料結構或是資料結構的組合都可以根據任何適當的標準或是標準的組合,例如是存取時間、記憶體使用率等等而被選擇。
應該體認到的是,在以上所介紹以及/或在以下更加詳細描述的技術可以用許多方式的任一種來加以實施,因為這些技術並不限於任何特定的實施方式。實施方式的細節的例子在此只是為了舉例說明的目的而被提供。再者,在此揭露的技術可以個別地或是用任何適當的組合來加以利用,因為本揭露內容的特點並不限於任何特定的技術或是技術的組合。
譬如,儘管在此論述的例子是包含一編譯器(例如,在圖2的例子中的舉例說明的編譯器205及/或舉例說明的策略編譯器220),但應該體認到的是,本揭露內容的特點並不限於利用一編譯器。在某些實施例中,一軟體工具鏈可被實施為一解譯器。例如,一種延遲初始化設計可被實施,其中一或多個預設的標籤(例如,DEFAULT、PLACEHOLDER等等)可被使用於起動時標記,並且一策略處理器(例如,在圖1的例子中的舉例說明的策略處理器150)可以評估一或多個策略,並且用一剛好及時的方式來解析所述一或多個預設的標籤。
在某些實施例中,一有限狀態機(FSM)可包含一或多個狀態及/或一或多個轉變(transition)。一轉變可以具有一源狀態以及一目標狀態。所述源狀態以及目標狀態可以是相同的狀態、或是不同的狀態。在繪圖上,一FSM可以被表示為一有向(directed)圖,其中節點是代表狀態,並且邊緣是代表在狀態之間的轉變。
發明人已經體認且領悟到,狀態機是提供一種自然的方式來表達一種系統的所要的行為。譬如,一安全性能可以根據一組被標明為安全的狀態、及/或一組被標明為許可的轉變來加以表達。一許可的轉變可以是使得若一種系統是開始在一安全的狀態並且採取所述許可的轉變,則所述系統可以結束在一安全的狀態(所述安全的狀態可以是相同或不同於所述開始的狀態)。以此種方式,一形式證明可以被給出,只要所述系統係被初始化至一安全的狀態並且只採取許可的轉變,則安全性能將會總是滿足的。
圖3是展示根據某些實施例的一舉例說明的FSM 300。譬如,所述FSM 300可以代表一用於在四向交叉路口的交通號誌控制器的安全策略,其中一面向北方(north)的號誌以及一面向南方(south)的號誌可以總是展示一相同的色彩,並且一面向東方(east)的號誌以及一面向西方(west)的號誌同樣也是展示一相同的色彩。所述安全策略可以指出若所述南北向號誌並非紅色(例如,綠色或黃色),則所述東西向號誌必須是紅色,並且反之亦然。因此,所述南北向號誌以及所述東西向號誌絕對不可以同時全部為綠色。
在圖3的例子中,所述FSM 300具有兩個狀態變數:所述南北向號誌的色彩、以及所述東西向號誌的色彩。每一個狀態變數可以具有三個可能的值:紅色(red)、黃色(yellow)、以及綠色(green)。綠色-黃色、黃色-綠色、黃色-黃色、以及綠色-綠色的狀態並未出現在所述FSM 300中,因為此種狀態在此例子中被視為違反安全的。因此,只可以有五個安全的狀態。
在某些實施例中,所述FSM 300可以具有分別代表一組號誌變為一所選的色彩的轉變。譬如,在所述FSM 300已經在所述綠色-紅色狀態一分鐘之後,一轉變可以發生,其代表所述南北向號誌從綠色轉變成黃色,同時所述東西向號誌保持紅色。此可以使得所述FSM 300進入所述黃色-紅色狀態。
在某些實施例中,所述FSM 300可被轉換成為一策略。例如,所述策略可包含對應於所述FSM 300的狀態變數的值的詮釋資料符號。在運行時間,編碼這些詮釋資料符號中的一或多個的一詮釋資料標籤可被寫入標籤處理硬體(例如,所述舉例說明的標籤處理硬體140)可存取的一記憶體位置(例如,在圖1的例子中的舉例說明的詮釋資料記憶體125內的一位置)。譬如,為了策略檢查的目的,這些詮釋資料符號中的一或多個可被寫入到由所述標籤處理硬體140所維持的一被配置以用於一詮釋資料變數(例如,一環境變數)的記憶體位置。用於所述FSM 300的狀態詮釋資料符號的例子可包含以下。
metadata:
//詮釋資料用以代表號誌狀態
data (Data) NS_T<fixed> = NS_Red
| NS_Yellow
| NS_Green
data (Data) EW_T<fixed> = EW_Red
| EW_Yellow
| EW_Green
在此例子中,每一個狀態變數的每一個值被指定一詮釋資料符號。因此,所述FSM 300的一狀態可以被表示為一對符號,例如[NS_Red, EW_Green]。然而,此並非必須的。在某些實施例中,個別的符號可以針對於組合的色彩而被使用,例如NS_Red_&_EW_Green。
額外或替代的是,所述策略可包含對應於在所述FSM 300中的轉變的詮釋資料符號。在運行時間,這些詮釋資料符號中的一或多個可被用來標記藉由所述交通號誌控制器所執行的應用程式碼。譬如,這些詮釋資料符號中的一或多個可被寫入標籤處理硬體(例如,所述舉例說明的標籤處理硬體140)可存取的一詮釋資料記憶體位置(例如,在圖1的例子中的舉例說明的詮釋資料記憶體125內的一位置)。所述詮釋資料記憶體位置可以是與一應用程式記憶體位置(例如,在所述舉例說明的應用程式記憶體120內的一位置)相關的(例如,透過所述舉例說明的標籤映射表142)。將藉由所述一或多個詮釋資料符號標記的應用程式碼可被儲存在所述應用程式記憶體位置。用於所述FSM 300的轉變詮釋資料符號的例子可包含以下。
metadata:
//詮釋資料用以標記碼函式
data (Instruction) Transition_T<fixed> = GoGreenNS
| GoGreenEW
| GoRedNS
| GoRedEW
| GoYellowNS
| GoYellowEW
在某些實施例中,在所述FSM 300中的轉變可被轉換成為策略規則,例如是以下的策略規則中的一或多個。
policy:
signalSafety =
rule_1(code == [+GoGreenNS], env == [NS_Red, EW_Red] ->
env = {NS_Green, EW_Red})
^ rule_2(code == [+GoGreenEW], env == [NS_Red, EW_Red] ->
env = {NS_Red, EW_Green})
^ rule_3(code == [+GoYellowNS], env == [NS_Green, EW_Red] ->
env = {NS_Yellow, EW_Red})
^ rule_4(code == [+GoYellowEW], env == [NS_Red, EW_Green] ->
env = {NS_Red, EW_Yellow})
^ rule_5(code == [+GoRedNS], env == [NS_Yellow, EW_Red] ->
env = {NS_Red, EW_Red})
^ rule_6(code == [+GoRedEW], env == [NS_Red, EW_Yellow] ->
env = {NS_Red, EW_Red})
^ rule_self(code == [-GoGreenNS, -GoGreenEW,
-GoYellowNS, -GoYellowEW,
-GoRedNS, -GoRedEW], env == _ ->
env = env)
在此例子中,一策略規則可以開始於一規則名稱(例如,「rule_1」),其可以單純指出用於除錯目的之策略規則。
在某些實施例中,所述策略規則的「code == …」部分可以指出一或多個轉變詮釋資料符號(例如,「GoGreenNS」)。在運行時間,所述標籤處理硬體140可以檢查一詮釋資料標籤是否匹配在所述策略規則的「code == …」部分中所指出的一或多個轉變詮釋資料符號,該詮釋資料標籤是和藉由一主機處理器(例如,所述舉例說明的主機處理器110)執行的一指令相關的。
在某些實施例中,所述策略規則的「env == …」部分(在右箭頭之前)可以指出一或多個狀態詮釋資料符號(例如,「NS_Red, EW_Red」)。在運行時間,所述標籤處理硬體140可以檢查和一程式計數器相關的一詮釋資料標籤是否匹配在所述策略規則的「env == …」部分中所指出的一或多個狀態詮釋資料符號。
在此例子的最後一個策略規則中,下劃線(underscore)字元可以是指一萬用字元(wildcard)。譬如,所述表達式「env == _」可以是指所述策略規則可被觸發,而不論和所述程式計數器相關的詮釋資料標籤為何。
在某些實施例中,若和待被執行的指令相關的詮釋資料標籤,匹配在所述策略規則的「code == …」部分中所指出的一或多個轉變詮釋資料符號,並且和所述程式計數器相關的詮釋資料標籤,匹配在所述策略規則的「env == …」部分中所指出的一或多個狀態詮釋資料符號,則所述標籤處理硬體140可以容許所述指令的執行。
在某些實施例中,所述策略規則的「env = …」部分(在右箭頭之後)可以是指一或多個狀態詮釋資料符號(例如,「NS_Green, EW_Red」)。在運行時間,若所述標籤處理硬體140判斷所述指令應該被容許,則所述標籤處理硬體可以利用在所述策略規則的「env == …」部分中所指出的一或多個狀態詮釋資料符號,來更新和所述程式計數器相關的詮釋資料標籤。以此種方式,當所述標籤處理硬體140在運行時間和所述交通號誌控制器的應用程式碼一起執行所述FSM 300時,和所述程式計數器相關的詮釋資料標籤可被所述標籤處理硬體140利用來追蹤所述FSM 300的狀態。
在以上的例子中的策略規則可以被描述如下。
1.所述第一策略規則可以代表所述南北向號誌從其中所有的號誌都是紅色的一狀態轉變為綠色,此產生其中所述南北向號誌是綠色,並且所述東西向號誌是紅色的一狀態。
2.所述第二策略規則可以代表所述東西向號誌從其中所有的號誌都是紅色的狀態轉變為綠色,此產生其中所述南北向號誌是紅色,並且所述東西向號誌是綠色的一狀態。
3.所述第三策略規則可以代表所述南北向號誌從其中所述南北向號誌是綠色,並且所述東西向號誌是紅色的狀態轉變為黃色,此產生其中所述南北向號誌是黃色,並且所述東西向號誌是紅色的一狀態。
4.所述第四策略規則可以代表所述東西向號誌從其中所述南北向號誌是紅色,並且所述東西向號誌是綠色的狀態轉變為黃色,此產生其中所述南北向號誌是紅色,並且所述東西向號誌是黃色的一狀態。
5.所述第五規則可以代表所述南北向號誌從其中所述南北向號誌是黃色,並且所述東西向號誌是紅色的狀態轉變為紅色,此產生其中所有的號誌都是紅色的狀態。
6.所述第六策略規則可以代表所述東西向號誌從其中所述南北向號誌是紅色,並且所述東西向號誌是黃色的狀態轉變為紅色,此產生其中所有的號誌都是紅色的狀態。
7.所述第七策略規則可以指出所有未用所述轉變詮釋資料符號(亦即,GoGreenNS、GoGreenEW、GoYellowNS、GoYellowEW、GoRedNS、以及GoRedEW)標示的任一個的指令都可被容許來執行,並且可以不會造成任何狀態的改變。此可以對應於在每一個狀態的一自轉變,其通常被描繪為一環返回到相同狀態的箭頭,此隱含在圖3所示的舉例說明的FSM 300中。
本發明人已經體認且領悟到代表一應用程式的所要的行為的一狀態機可以是比完整的實施程式碼較簡單的,並且因此可以是較容易驗證的。在某些實施例中,形式化方法工具可被用來證明狀態機的各種性能,例如安全性能、空間的性能(例如,資訊流)、時間的性能(例如,執行排序)等等。然而,應該體認到的是,本揭露內容的特點並不限於檢查一狀態機的任何特定的性能、或是利用任何狀態機。
如上相關圖1的例子所述,所述舉例說明的標籤處理硬體140可以傳送一詢問至所述舉例說明的策略處理器150,以檢查藉由所述舉例說明的主機處理器110執行的一指令是否應該被容許。所述詢問可包含一或多個輸入,例如所述指令的一指令類型(例如,運算碼)、用於一程式計數器的一詮釋資料標籤、用於所述指令被提取所來自的一應用程式記憶體位址的一詮釋資料標籤(例如,在記憶體中所述程式計數器所指向的一字)、用於所述指令的一運算元被儲存在其中的一暫存器的一詮釋資料標籤、及/或用於所述指令所參照的一應用程式記憶體位址的一詮釋資料標籤。
在某些實施例中,所述策略處理器150可以已經載入一或多個策略於其中,其描述所述主機處理器110的被容許的操作,例如是在圖3的例子中的舉例說明的signalSafety策略。所述策略處理器150可以響應於來自所述標籤處理硬體140的一詢問,根據在來自所述標籤處理硬體140的所述詢問中的一或多個輸入,評估所述策略中的一或多個,以判斷查詢中的一指令是否應該被容許。若所述指令並未被容許,則所述策略處理器150可以如此通知所述標籤處理硬體140。若所述指令被容許,則所述策略處理器150可以計算一或多個輸出以被回傳至所述標籤處理硬體140。額外或替代的是,所述策略處理器150可以在所述舉例說明的規則快取144中,儲存所述一或多個輸入及/或所述一或多個對應的輸出,以供未來的參考。
應該體認到的是,在所述規則快取144中的一項目可能是不同於在一策略中的一策略規則。確實,單一策略規則可能有時在所述規則快取144中引起多個項目。譬如,參考所述signalSafety策略,所述策略規則
rule_self(code == [-GoGreenNS, -GoGreenEW,
-GoYellowNS, -GoYellowEW,
-GoRedNS, -GoRedEW], env == _ ->
env = env)
可能引起以下的規則快取項目(假設沒有其它策略同時被實行),其中每一個項目可以對應於在圖3的例子中的舉例說明的FSM 300中的一個別的狀態的一自轉變。
<{}, {NS_Red, EW_Red}, {NS_Red, EW_Red}>
<{}, {NS_Green, EW_Red}, {NS_Green, EW_Red}>
<{}, {NS_Yellow, EW_Red}, {NS_Yellow, EW_Red}>
<{}, {NS_Red, EW_Green}, {NS_Red, EW_Green}>
<{}, {NS_Red, EW_Green}, {NS_Red, EW_Green}>
在此例子中,在每一個規則快取項目中有三個槽位。第一槽位可以被指定用於所述輸入code,第二槽位可以被指定用於所述輸入env,並且所述第三槽位可以被指定用於所述輸出env。然而,應該體認到的是本揭露內容的特點並不限於具有任何特定數目的輸入槽位、或甚至根本無輸入槽位。同樣地,本揭露內容的特點並不限於具有任何特定數目的輸出槽位、或甚至根本無輸出槽位。
在一策略中的策略規則在此有時可被稱為「符號的」規則。一符號規則可以利用不同的詮釋資料標籤的組合而被實例化,以獲得不同的「具體」規則。例如,以上的策略規則rule_self可以用五個不同的方式而被實例化,以獲得分別對應於以上的五個規則快取項目的五個具體規則。因此,規則快取項目可以是具體規則的例子。
本發明人已經體認且領悟到所述策略處理器150在某些實例中可以執行數百個(或甚至是數千個)指令,以便只評估在所述主機處理器110被執行的一指令上的一或多個策略。於是,在某些實施例中,所述主機處理器110可以停頓,以容許所述策略處理器150趕上。然而,此可能會產生一延遲,其對於某些即時應用程式而言可能是非所要的。例如,所述主機處理器110可以是在電動交通工具上,並且可能控制每秒發生數千次的電路切換以保持電動馬達平順地運行。若所述主機處理器110停頓來等待策略評估被完成,則此種時間敏感的控制操作可能被打亂。
本發明人已經進一步體認且領悟到儘管所述規則快取144可被用來加速存取具體規則,但是此種加速只能夠在一具體規則已經藉由所述策略處理器150而被計算出,並且被安裝到所述規則快取144中之後才是可利用的。當所述標籤處理硬體140第一次利用某個列表的一或多個輸入來詢問所述規則快取144時,所述規則快取144可能指出有一快取未命中,因而所述標籤處理硬體140可能請求所述策略處理器150在所述一或多個輸入上執行策略評估,此可能造成一非所要的延遲。
於是,在某些實施例中,一或多個具體規則可以在運行時間之前就被計算出的,並且被安裝到一規則快取中。譬如,在圖2的例子中的舉例說明的策略編譯器220可被程式化以在編譯時間計算一或多個具體規則。額外或替代的是,所述舉例說明的策略連結器225可被程式化以在連結時間計算一或多個具體規則。所述舉例說明的載入器215可以解析在藉由所述策略編譯器220及/或所述策略連結器225計算出的一或多個具體規則中的詮釋資料標籤成為二進位表示,並且可以將所述一或多個具體規則(其中二進位表示取代所述個別的詮釋資料標籤)載入所述規則快取144。以此種方式,所述一或多個具體規則可以被做成是在運行時間可利用的,而不調用所述策略處理器150。
然而,本發明人已經體認且領悟到有關在運行時間之前計算及安裝具體規則的一些挑戰。譬如,本發明人已經體認且領悟到,可能的詮釋資料標籤的數量可能隨著不同的詮釋資料符號的數量成指數地成長。參考在圖3的例子中的舉例說明的signalSafety策略,可以有12個不同的詮釋資料符號,其包含六個狀態詮釋資料符號(亦即,NS_Green、EW_Green、NS_Yellow、EW_Yellow、NS_Red、以及EW_Red)以及六個轉變詮釋資料符號(亦即,GoGreenNS、GoGreenEW、GoYellowNS、GoYellowEW、GoRedNS、以及GoRedEW)。因此,2^12=4096個不同的詮釋資料標籤可能被產生,每一個標籤對應於所述12個詮釋資料符號的一不同的子集合。[1]
再者,由於在所述signalSafety策略中的每一個符號規則可以具有兩個輸入(例如,code以及env),因此總數4096^2=16,777,216個不同的輸入型態是可能的。針對於具有三個輸入(例如,code及env、以及mem,亦即和正被檢查的指令所參照的一應用程式記憶體位置相關的一詮釋資料標籤)的一類似的策略,總數4096^3=68,719,476,736個不同的輸入型態是可能的。評估這些輸入型態的每一個,以判斷所述輸入型態是否導致一具體規則應該被安裝到所述規則快取144中可能是不切實際的。
於是,在某些實施例中,技術被提供以用於識別可以對應於將被安裝到一規則快取中的具體規則的輸入型態。譬如,一策略語言可被提供,其具有一或多個特點可被利用(例如,被所述策略編譯器220所利用)來識別具體規則可以提前被計算所針對的某些輸入型態、及/或具體規則可以不提前被計算所針對的某些輸入型態。
本發明人已經體認且領悟到,針對於提前被計算的一具體規則,運行時間效能可以改善,因為所述標籤處理硬體140可以是能夠在不調用所述策略處理器150下,從所述規則快取144取回該具體規則。在另一方面,針對於未提前被計算的一具體規則,所述標籤處理硬體140可能遭遇到在所述規則快取144中的未命中,並且可以響應地單純詢問所述策略處理器150。因此,運行時間效能可以是不差於其中沒有執行預先計算的實施方式中所觀察到的效能。
總而言之,在運行時間之前計算及安裝具體規則在某些情形中可以改善運行時間效能,而在其它情形中並不帶來任何懲罰。再者,因為一具體規則可以用相同的方式被計算,而不論所述計算何時發生(例如,不是在運行時間之前、就是在運行時間),所以對於資安、安全、或是任何其它受到關注的性能可以是沒有負面影響的。
在某些實施例中,一策略語言可被提供,其容許一策略編寫者能夠宣告一新的詮釋資料類型T為複數個其它詮釋資料類型S0
、S1
、…的總和
T = Sum (S0
, S1
, …)
參考所述舉例說明的signalSafety策略,一種新的總和類型NS_T可被宣告如下。
data (Data) NS_T<fixed> = NS_Red
| NS_Yellow
| NS_Green
在某些實施例中,所述策略編譯器220及/或所述策略連結器225可被程式化,以產生如下用於所述類型NS_T的可能的詮釋資料標籤。
{}, {NS_Green}, {NS_Yellow}, {NS_Red}
因此,所述類型NS_T的一詮釋資料標籤可包含無詮釋資料符號、或是所述詮釋資料符號NS_Green、NS_Yellow、以及NS_Red中的剛好一個。具有多個元素的子集合(亦即,{NS_Green, NS_Yellow}、{NS_Yellow, NS_Red}、{NS_Green, NS_Red}、以及{NS_Red, NS_Yellow, NS_Green})可被排除。此語義學可以是適合用於所述signalSafety策略,因為可以假設一交通號誌不可以同時展示多個色彩。
本發明人已經體認且領悟到,在上述的語義學之下,相對於隨著N呈指數地成長,用於一總和類型T = Sum (S0
, S1
, …, SN
)(其中每一個Si
包含一不同的詮釋資料符號)的可能的詮釋資料標籤的數量可以隨著N呈線性地成長。此於是可以降低將提前被計算及安裝的具體規則的數量。
在某些實施例中,一策略語言可被提供,其容許一策略編寫者能夠指定一域給一詮釋資料類型T。參考以上的例子,所述詮釋資料類型NS_T可被指定一域Data。
額外或替代的是,一新的詮釋資料類型EW_T可被宣告如下,其具有所述Data域。
data (Data) EW_T<fixed> = EW_Red
| EW_Yellow
| EW_Green
額外或替代的是,一新的詮釋資料類型Transition_T可被宣告如下,其具有一域Instruction。
data (Instruction) Transition_T<fixed> = GoGreenNS
| GoGreenEW
| GoRedNS
| GoRedEW
| GoYellowNS
| GoYellowEW
在某些實施例中,所述策略編譯器220及/或所述策略連結器225可被程式化以產生可能的詮釋資料標籤,使得Data域被指定的詮釋資料符號沒有一個能夠以Instruction域被指定的詮釋資料符號之一相同詮釋資料標籤出現。因此,例如{NS_Green, EW_Yellow}的一子集合可被納入,但是例如{NS_Green, GoYellowNS}的一子集合可被排除。此語義學可以是適合用於所述signalSafety策略,因為轉變詮釋資料符號可被用來標記指令,而不是狀態變數,而狀態詮釋資料符號可被用來標記狀態變數,而不是指令。
本發明人已經體認且領悟到,在上述所舉例說明的總和類型特點以及所舉例說明的域特點之下,相對於4096個不同的詮釋資料標籤,只有6*9=54個不同的詮釋資料標籤可被產生(針對於所述Instruction域有6種可能性,並且針對於所述Data域有3*3=9可能性)。對於具有兩個輸入的一策略而言,總數54^2=2,916個不同的輸入型態是可能的,此是從4096^2=16,777,216個不同的輸入型態的顯著的縮減。同樣地,對於具有三個輸入的一策略而言,總數54^3=157,464個不同的輸入型態是可能的,此是從4096^3=68,719,476,736個不同的輸入型態的顯著的縮減。然而,應該體認到的是,本揭露內容的特點並不限於利用具有一總和類型特點或是一域特點的一策略語言、或是任何策略語言。
本發明人已經進一步體認且領悟到,在某些實例中,可能提前已知某一輸入只能夠和來自某一域的詮釋資料標籤相關的。參考所述signalSafety策略,所述code輸入可以是和所述Instruction域相關的,而所述env輸入可以是和所述Data域相關的。
// 欄位宣告
field env : Data
field code : Instruction
因此,只有6*9=54個不同的輸入型態是可能的(針對於code有6種可能性,並且針對於env有3*3=9種可能性),此是從2,916個不同的輸入型態的進一步縮減。即使具有三個輸入,一個是和所述Instruction域相關的,並且兩個是和所述Data域相關的,也只有6*9*9=486個不同的輸入型態是可能的,此是從157,464個不同的輸入型態的進一步縮減。
本發明人已經進一步體認且領悟到,在某些實例中,對於將不被允許的指令而言,運行時間效能可能不是所關注的。例如,響應於判斷一指令將不被允許(例如,根據在所述規則快取144中的未命中,接著是來自所述策略處理器150的一響應指出已經發現一策略違反),所述標籤處理硬體140可以傳送一中斷至所述主機處理器110,此可以使得所述主機處理器110切換至適當的違反處理碼。相對於由調用所述策略處理器150來檢查所述指令所引起的延遲,由此種背景切換及/或所述違反處理碼本身所引起的延遲可能是大的。
對比之下,對於將被容許的指令而言,運行時間效能可能受到相當大的關注。譬如,在上述的電動馬達例子中,所述主機處理器110可以負責控制每秒切換數千次的電路。和此種控制操作相關的所有指令可以是被容許的指令。因此,用有效率的方式來檢查被容許的指令可能是所期望的。
於是,在某些實施例中,所述策略編譯器220及/或所述策略連結器225可被程式化以產生對應於將被容許的指令的輸入型態。額外或替代的是,所述策略編譯器220及/或所述策略連結器225可以評估此種輸入型態,以獲得對應的輸出型態。所產生的具體規則可被安裝到所述規則快取144中,以用於在運行時間有效率的存取。
本發明人已經體認且領悟到對應於將被容許的指令的輸入型態可能是所有可能的輸入型態的一小部分。就此而論,評估對應於將被容許的指令的所有輸入型態,並且安裝所產生的具體規則到所述規則快取144中在計算上可以是可行的。
參考所述signalSafety策略,假設所舉例說明的總和類型特點以及所舉例說明的域特點被使用,並且沒有其它策略同時被實行,所述前6個策略規則的每一個可以是剛好被一輸入型態所匹配。譬如,相關所述策略規則「rule_1」,所述策略編譯器220及/或所述策略連結器225可以判斷只有一詮釋資料標籤(亦即{GoGreenNS})可以匹配「code == [+GoGreenNS]」,並且只有一詮釋資料標籤(亦即{NS_Red, EW_Red})可以匹配「env == [NS_Red, EW_Red]」。
類似地,假設所舉例說明的總和類型特點以及所舉例說明的域特點被使用,並且沒有其它策略同時被實行,最後一個策略規則可以是被9個輸入型態所匹配。譬如,相關所述策略規則「rule_self」,所述策略編譯器220及/或所述策略連結器225可以判斷只有一詮釋資料標籤(亦即,所述空的標籤{ })可以匹配「code == [-GoGreenNS, -GoGreenEW, -GoYellowNS, -GoYellowEW, -GoRedNS, -GoRedEW]」,並且3*3=9個詮釋資料標籤(來自NS_T的3個可能性、以及來自EW_T的3個可能性)可以匹配針對於env的萬用字元。
因此,只有6+9=15個輸入型態可以對應於將被容許的指令,此可以是所有54個可能的輸入型態的一小部分。
在某些實施例中,所述策略編譯器220及/或所述策略連結器225可以使用一布林可滿足性解法器(Boolean satisfiability solver)以識別輸入型態。譬如,一布林可滿足性解法器可被用來識別觸發一策略中的至少一符號規則的一或多個輸入型態。任何適當的布林可滿足性解法器都可被使用,其包含但不限於可滿足性模數理論(satisfiability modulo theories,SMT)解法器。
圖4是展示根據某些實施例的可被用來識別一或多個輸入型態的一舉例說明的程序400。譬如,所述程序400可被用來識別一或多個輸入型態,其分別觸發在相關圖3的例子所述的舉例說明的signalSafety策略中的至少一符號規則。
在動作405,一或多個限制可以根據一符號規則而被建構。在某些實施例中,一限制可以是具有一或多個布林變數的一條件,所述一或多個布林變數分別對應於出現在所述符號規則中的一或多個詮釋資料符號。舉例而言,在所述策略語言中的一個加「+」建構可被轉譯成為一布林方程式。譬如,「code == [+GoGreenNS]」可被轉譯成為針對於所述輸入code的一限制code_GoGreenN=1。在某些實施例中,所述「加」建構可以被推論,因而「code == [GoGreenNS]」亦可被轉換成為針對於所述輸入code的一限制code_GoGreenN=1。
作為另一例子的是,在所述策略語言中的一個減「-」建構可被轉譯成為一布林方程式。譬如,「code == [-GoGreenNS]」可被轉譯成為針對於所述輸入code的一限制code_GoGreenN=0。
在某些實施例中,一列表的一或多個加「+」建構及/或減「-」建構可被轉譯成為一連詞。譬如,「code == [-GoGreenNS, -GoGreenEW, -GoYellowNS, -GoYellowEW, -GoRedNS, -GoRedEW]」可被轉譯成為如下針對於所述輸入code的一限制。
code_GoGreenN=0 and code_GoGreenEW=0 and code_GoYellowNS=0 and code_GoYellowEW=0 and code_GoRedNS=0 and code_GoRedEW=0
在某些實施例中,一列表的一或多個詮釋資料符號可被轉譯成為一連詞。譬如,「env == [NS_Red, EW_Red]」可被轉譯成為如下針對於所述輸入env的一限制。
env_NS_Red=1 and env_EW_Red=1
在某些實施例中,根據一相同的符號規則,但是針對於不同的輸入所建構的兩個限制可以經由一連詞來組合。例如,考量在所述signalSafety策略中的策略規則「rule_1」。
rule_1(code == [+GoGreenNS], Env == [NS_Red, EW_Red] ->
env = {NS_Green, EW_Red})
在此規則中的所述兩個條件「code == [+GoGreenNS]」以及「env == [NS_Red, EW_Red]」可被轉譯成為以下的連詞,其中字首「code」以及「env」是區別分別對應於所述輸入code以及所述輸入env的布林變數。
舉例說明的限制(1)
(code_GoGreenNS=1) and
(env_NS_Red=1 and env_EW_Red=1)
在某些實施例中,一限制可以根據一總和類型而被建構。譬如,根據所述總和類型NS_T的一限制可以用析取範式(disjunctive normal form)而被表示如下。
(NS_Red=1 and NS_Yellow=0 and NS_Green=0) or
(NS_Red=0 and NS_Yellow=1 and NS_Green=0) or
(NS_Red=0 and NS_Yellow=0 and NS_Green=1) or
(NS_Red=0 and NS_Yellow=0 and NS_Green=0)
額外或替代的是,根據所述總和類型NS_T的一限制可以用合取範式(conjunctive normal form)而被表示如下。
(NS_Red=0 or NS_Yellow=0) and
(NS_Red=0 or NS_Green=0) and
(NS_Yellow=0 or NS_Green=0)
然而,應該體認到的是本揭露內容的特點並不限於利用析取範式或合取範式、或是任何特定的邏輯形式。在某些實施例中,一等同的公式可被利用,例如是以下。
not(NS_Red=1 and NS_Yellow=1) and
not(NS_Red=1 and NS_Green=1) and
not(NS_Yellow=1 and NS_Green=1)
在某些實施例中,一限制可以根據所述總和類型EW_T而被建構,並且可以是類似於以上相關所述總和類型NS_T所述的舉例說明的限制的任一個。由於所述輸入env可以是經由所述Data域而和所述總和類型NS_T以及EW_T相關的,因此針對於所述總和類型NS_T的一限制以及針對於所述總和類型EW_T的一限制可以對於所述輸入env而例如被提供如下。
舉例說明的限制(2)
((env_NS_Red=1 and env_NS_Yellow=0 and env_NS_Green=0) or
(env_NS_Red=0 and env_NS_Yellow=1 and env_NS_Green=0) or
(env_NS_Red=0 and env_NS_Yellow=0 and env_NS_Green=1) or
(env_NS_Red=0 and env_NS_Yellow=0 and env_NS_Green=0)) and
((env_EW_Red=1 and env_EW_Yellow=0 and env_EW_Green=0) or
(env_EW_Red=0 and env_EW_Yellow=1 and env_EW_Green=0) or
(env_EW_Red=0 and env_EW_Yellow=0 and env_EW_Green=1) or
(env_EW_Red=0 and env_EW_Yellow=0 and env_EW_Green=0))
在某些實施例中,一限制可以根據所述總和類型Transition_T而被建構,並且可以是類似於以上相關所述總和類型NS_T所述的舉例說明的限制的任一個(儘管是具有六個變數,而不是三個)。由於所述輸入code可以是經由所述Instruction域而和所述類型Transition_T相關的,因此用於所述總和類型Transition_T的一限制可以對於所述輸入code而例如被提供如下。
舉例說明的限制(3)
(code_GoRedNS=1 and code_GoYellowNS=0 and code_GoGreenNS=0 and
code_GoRedEW=0 and code_GoYellowEW=0 and code_GoGreenEW=0) or
(code_GoRedNS=0 and code_GoYellowNS=1 and code_GoGreenNS=0 and
code_GoRedEW=0 and code_GoYellowEW=0 and code_GoGreenEW=0) or
(code_GoRedNS=0 and code_GoYellowNS=0 and code_ GoGreenNS=1 and
code_GoRedEW=0 and code_GoYellowEW=0 and code_GoGreenEW=0) or
(code_GoRedNS=0 and code_GoYellowNS=0 and code_GoGreenNS=0 and
code_GoRedEW=1 and code_GoYellowEW=0 and code_GoGreenEW=0) or
(code_GoRedNS=0 and code_GoYellowNS=0 and code_GoGreenNS=0 and
code_GoRedEW=0 and code_GoYellowEW=1 and code_GoGreenEW=0) or
(code_GoRedNS=0 and code_GoYellowNS=0 and code_GoGreenNS=0 and
code_GoRedEW=0 and code_GoYellowEW=0 and code_GoGreenEW=1) or
(code_GoRedNS=0 and code_GoYellowNS=0 and code_GoGreenNS=0 and
code_GoRedEW=0 and code_GoYellowEW=0 and code_GoGreenEW=0)
在某些實施例中,一限制可以根據一域而被建構。舉例而言,所述狀態詮釋資料符號NS_Red、NS_Yellow、NS_Green、EW_Red、EW_Yellow、以及EW_Green可以是和所述Data域相關的(經由所述類型NS_T以及EW_T)。以下的限制可以針對於所述Data域而被建構:p0
= 0 and … and pN-1
=0,其中p0
, …, pN-1
是所有不和所述Data域相關的詮釋資料符號(例如,所述轉變詮釋資料符號GoRedNS、GoYellowNS、GoGreenNS、GoRedEW、GoYellowEW、以及GoGreenEW、及/或一或多個其它域的一或多個詮釋資料符號)。
作為另一例子的是,所述轉變詮釋資料符號GoRedNS、GoYellowNS、GoGreenNS、GoRedEW、GoYellowEW、以及GoGreenEW可以是和所述Instruction域相關的(經由所述類型Transition_T)。以下的限制可以針對於所述Instruction域而被建構:q0
= 0 and … and qM-1
=0,其中q0
, …, qM-1
是所有不和所述Instruction域相關的詮釋資料符號(例如,所述狀態詮釋資料符號NS_Red、NS_Yellow、NS_Green、EW_Red、EW_Yellow、以及EW_Green、及/或一或多個其它域的一或多個詮釋資料符號)。
在某些實施例中,因為所述輸入env可以是和所述Data域相關的,因此根據所述Data域的一限制可以對於所述輸入env而例如被提供如下。
舉例說明的限制(4)
env_GoRedNS=0 and env_GoYellowNS=0 and env_GoGreenNS=0 and env_GoRedEW=0
and env_GoYellowEW=0 and env_GoGreenEW=0
額外或替代的是,因為所述輸入code可以是和所述Instruction域相關的,因此根據所述Instruction域的一限制可以對於所述輸入code而例如被提供如下。
舉例說明的限制(5)
code_NS_Red=0 and code_NS_Yellow=0 and code_NS_Green=0 and code_EW_Red=0
and code_EW_Yellow=0 and code_EW_Green=0
回到在圖4的例子中的動作405,一或多個限制R0
、R1
、…可以利用上述的舉例說明的技術中的任一或多個來提供。例如,所述一或多個限制R0
、R1
、…可包含所述舉例說明的限制(1)-(5)中的一或多個。
本發明人已經體認且領悟到以下的公式可以是邏輯上等同於所述一或多個限制R0
、R1
、…的一連詞的一否定
(not R0
) or (not R1
) or …
因此,以上的邏輯公式的一反例(亦即,所述布林變數使得以上的邏輯公式為假之真值的一指派)可以提供真值的一指派至所述布林變數,其滿足所述限制R0
、R1
、…的全部。
於是,在圖4的例子中的動作410,所述一或多個限制R0
、R1
、…可被否定,藉此獲得(not R0
)、(not R1
)、… 。接著,在動作415,一布林可滿足性解法器可被用來解出(not R0
) or (not R1
) or …的一反例。
本發明人已經進一步體認且領悟到,至所述布林變數滿足全部的限制R0
、R1
、…的真值的一指派,可以對應於一可以觸發在所述signalSafety策略中的策略規則「rule_1」的輸入型態。
於是,若在動作420判斷的是(not R0
) or (not R1
) or …的一反例C被找到,則從此種反例判斷出的一輸入型態可被記錄以用於在所述signalSafety策略中的策略規則「rule_1」。額外或替代的是,C可以在動作425被加入作為一新的否定的限制,並且所述程序400可以返回動作415以解出以下公式的一反例。
(not R0
) or (not R1
) or … or C
以此種方式,任何新識別出的反例都可以滿足全部的限制R0
、R1
、…,但可能是不同於所述反例C。此可以重複直到沒有新的反例被識別出為止,其可能會產生一或多個輸入型態的一集合,其中每一個輸入型態可以觸發在所述signalSafety策略中的策略規則「rule_1」。
在某些實施例中,所述程序400可以針對於所述signalSafety策略中的每一個符號規則來加以執行,以獲得一個別集合的一或多個輸入型態。在此種集合的任一集合中的一輸入型態都可被安裝到所述規則快取144中,以用於在運行時間有效率的存取。
應該體認到的是,本揭露內容的特點並不限於用任何特定的方式來識別輸入型態。譬如,在某些實施例中,所述一或多個限制R0
、R1
、…可以經由一連詞來組合,其於是可被轉換成為析取範式。本發明人已經體認且領悟到,在析取範式中的一邏輯公式內的每一個析取項(disjunct)可以對應於真值的一部分的指派,並且一或多個完全指派可被建構,其是和所述部分的指派一致的(例如,藉由指派0或1至每一個未出現在所述析取項中的布林變數)。所述一或多個完全指派接著可被用來獲得一或多個輸入型態以被安裝到所述規則快取144中,以用於在運行時間有效率的存取。
如上所論述,對於將不被允許的指令而言,運行時間效能在某些實例中可能不是所關注的。於是,在某些實施例中,對應於將不被允許的指令的輸入型態可以不提前被計算。反而,此種輸入型態可以在運行時間加以評估(例如,藉由調用在圖1的例子中的舉例說明的策略處理器150)。然而,應該體認到的是本揭露內容的特點並非限於此的。在某些實施例中,一符號規則可被提供,其可能是匹配於對應於一或多個將不被允許的指令的一輸入型態。此種規則可以映射所述輸入型態至一錯誤訊息,其可被使用於除錯及/或運行時間的診斷目的。
舉例而言,作為一或多個對應於所述FSM 300的被允許的轉變的策略規則的額外或替代的,所述舉例說明的signalSafety策略在某些實施例中可以包含一或多個對應於在圖3的例子中的FSM 300的不被允許的轉變的策略規則。譬如,作為以上七個舉例說明的策略規則中的一或多個的額外或替代的,以下的策略規則中的一或多個可被納入。
…
^ rule_8(code == [+GoGreenNS], env == [+EW_Green] ->
fail "Safety Violation – East-West Lights Still Green")
^ rule_9(code == [+GoGreenNS], env == [+EW_Yellow] ->
fail "Safety Violation – East-West Lights Still Yellow")
^ rule_10(code == [+GoYellowNS], env == [+EW_Green] ->
fail "Safety Violation – East-West Lights Still Green")
^ rule_11(code == [+GoYellowNS], env == [+EW_Yellow] ->
fail "Safety Violation – East-West Lights Still Yellow")
^ rule_12(code == [+GoGreenEW], env == [+NS_Green] ->
fail "Safety Violation – North-South Lights Still Green")
^ rule_13(code == [+GoGreenEW], env == [+NS_Yellow] ->
fail "Safety Violation – North-South Lights Still Yellow")
^ rule_14(code == [+GoYellowEW], env == [+NS_Green] ->
fail "Safety Violation – North-South Lights Still Green")
^ rule_15(code == [+GoYellowEW], env == [+NS_Yellow] ->
fail "Safety Violation – North-South Lights Still Yellow")
^ rule_16(code == _ , env == [NS_Yellow, EW_Green] ->
fail "Safety Violation – Neither Set of Lights Is Red")
^ rule_17(code == _ , env == [NS_Green, EW_Yellow] ->
fail "Safety Violation – Neither Set of Lights Is Red")
^ rule_18(code == _ , env == [NS_Green, EW_Green] ->
fail "Safety Violation – Neither Set of Lights Is Red")
^ rule_19(code == _ , env == [NS_Yellow, EW_Yellow] ->
fail "Safety Violation – Neither Set of Lights Is Red")
所述額外的策略規則可被描述如下。
8.第八策略規則可以指出所述南北向號誌從任何所述東西向號誌是綠色中的狀態變為綠色是所述安全策略的違反。
9.第九策略規則可以指出所述南北向號誌從任何所述東西向號誌是黃色的狀態中變為綠色是所述安全策略的違反。
10.第十策略規則可以指出所述南北向號誌從任何所述東西向號誌是綠色的狀態中變為黃色是所述安全策略的違反。
11.第十一策略規則可以指出所述南北向號誌從任何所述東西向號誌是黃色的狀態中變為黃色是所述安全策略的違反。
12.第十二策略規則可以指出所述東西向號誌從任何所述南北向號誌是綠色的狀態中變為綠色是所述安全策略的違反。
13.第十三策略規則可以指出所述東西向號誌從任何所述南北向號誌是黃色的狀態中變為綠色是所述安全策略的違反。
14.十四策略規則可以指出所述東西向號誌從任何所述南北向號誌是綠色的狀態中變為黃色是所述安全策略的違反。
15.第十五策略規則可以指出所述東西向號誌從任何所述南北向號誌是黃色的狀態中變為黃色是所述安全策略的違反。
16.第十六策略規則可以指出所有在所述南北向號誌是黃色,並且所述東西向號誌是綠色時執行的指令是所述安全策略的違反。
17.第十七策略規則可以指出所有在所述南北向號誌是綠色,並且所述東西向號誌是黃色時執行的指令是所述安全策略的違反。
18.第十八策略規則可以指出所有在所述南北向號誌以及所述東西向號誌是綠色時執行的指令是所述安全策略的違反。
19.第十九策略規則可以指出所有在所述南北向號誌以及所述東西向號誌是黃色時執行的指令是所述安全策略的違反。
本發明人已經體認且領悟到,在某些實例中,經由一策略規則來明確地模型化在一FSM中的一不被允許的轉變可以是有利的。譬如,當匹配於對應於一不被允許的轉變的一策略規則時,所述標籤處理硬體140可以發出一適當的錯誤訊息(例如,「東西向號誌仍然是綠色」)。在某些實施例中,此種錯誤訊息可以藉由一除錯工具(例如,在圖2的例子中的舉例說明的除錯器230)來消耗掉。
觸發一策略規則的不被允許的轉變在此有時被稱為「明確」不被允許的轉變。並不觸發任何策略規則的不被允許的轉變在此有時被稱為「隱含」不被允許的轉變。
在某些實施例中,在圖4的例子中的舉例說明的程序400(或是某些用於識別輸入型態的其它適當的程序)可以針對於以上的符號規則的每一個來加以執行,以獲得對應於明確不被允許的轉變的一或多個輸入型態的一個別集合。作為對應於被允許的轉變的一或多個輸入型態的額外或替代的,在此種集合的任一個中的一輸入型態可被安裝到所述規則快取144中,以用於在運行時間有效率的存取。
在某些實施例中,所述規則快取144可以將一或多個對應於不被允許的轉變的輸入型態映射到一失敗識別符。響應於所述規則快取144將針對於一指令的一輸入型態映射至所述失敗識別符,所述標籤處理硬體140可以記錄一對應的錯誤訊息。若所述標籤處理硬體140正操作在一記錄型態,則所述標籤處理硬體140可以容許所述指令,儘管有所述錯誤訊息。否則,所述標籤處理硬體140可以觸發策略違反處理。
在某些實施例中,一具體規則可包含一或多個輸入詮釋資料標籤及/或一或多個輸出詮釋資料標籤。譬如,參考在圖3的例子的舉例說明的signalSafety策略中的策略規則「rule_self」,以下的具體規則可包含在所述第一槽位中的一第一輸入詮釋資料標籤{}(所述空的集合)、在所述第二槽位中的一第二輸入詮釋資料標籤{NS_Red, EW_Red}、以及在所述第三槽位中的一輸出詮釋資料標籤{NS_Red, EW_Red}。
在某些實施例中,一具體規則的一或多個詮釋資料標籤可被解析成為一或多個個別的二進位表示。安裝所述具體規則到所述規則快取144中可包含利用所述一或多個二進位表示以產生一規則快取項目。為了檢查一輸入型態是否匹配在所述規則快取144中所儲存的任何具體規則,在所述輸入型態中的一或多個詮釋資料標籤可被用來執行在所述規則快取144中的查找。所述一或多個詮釋資料標籤可以從一詮釋資料儲存加以取回(例如,在圖1的例子中的舉例說明的詮釋資料記憶體125及/或標籤暫存器檔146),並且可以藉由一或多個個別的二進位表示來加以表示。
圖5是展示根據某些實施例的一用於解析一詮釋資料標籤成為一個二進位表示之舉例說明的程序500。所述程序500可以在任何適當的時間執行,例如是編譯時間、連結時間、載入時間、及/或運行時間。譬如,所述程序500的部分或全部可以藉由在圖2的例子中的舉例說明的策略編譯器220、舉例說明的策略連結器225、及/或舉例說明的載入器215來加以執行。額外或替代的是,所述舉例說明的策略處理器150可被程式化以在運行時間執行所述程序500的部分或全部。
在動作505,一詮釋資料標籤可加以獲得。譬如,一詮釋資料標籤(例如,藉由一列表的一或多個詮釋資料符號來加以表示)可被接收以作為輸入。額外或替代的是,一列表可以被動態地配置以代表一詮釋資料標籤。例如,當參照所述一或多個詮釋資料符號的一或多個策略被評估時,一或多個詮釋資料符號可以增量地被加入到所述列表。
在某些實施例中,所述列表可以根據詮釋資料符號的一適當的排序來加以定次序,因而可以產生同一列表,而不論所述一或多個詮釋資料符號被接收及/或加入所用的順序為何。在以下是用於相關圖3的例子所述的舉例說明的signalSafety策略的詮釋資料符號的一排序的一個例子。
NS_Red, NS_Yellow, NS_Green, EW_Red, EW_Yellow, EW_Green,
GoRedNS, GoYellowNS, GoGreenNS, GoRedEW, GoYellowEW, GoGreenEW
在動作510,在動作505獲得的詮釋資料標籤(例如,所述一或多個詮釋資料符號的列表)可被用來查找一字典,所述字典是將詮釋資料標籤映射到對應的二進位表示。譬如,在運行時間,此種字典可以是藉由所述標籤處理硬體140及/或所述策略處理器150來加以維持。額外或替代的是,在編譯時間、連結時間、或是載入時間,此種字典可以分別是藉由所述策略編譯器220、所述策略連結器225、或是所述載入器215來加以維持。
在某些實施例中,所述字典可以利用一雜湊表來加以實施。因此,一適當的雜湊函數可被施加至代表所述詮釋資料標籤的列表,因而一產生的雜湊可被用來查找所述雜湊表。
在動作515,可以判斷所述詮釋資料標籤是否匹配在所述字典中的一項目。若判斷出的是有一匹配,則一匹配的二進位表示可以在動作520加以獲得。否則,一個新的二進位表示可以在動作525產生。
譬如,若代表所述詮釋資料標籤的列表的雜湊是映射到實施所述字典的雜湊表中的一非空的桶(bucket),則所述列表可以與所述桶中的一或多個項目比較,以判斷是否有一匹配。若有一匹配,則所述匹配的項目的一個二進位表示可被使用。否則的話,一個新的二進位表示可加以產生。譬如,一計數器可被維持,其計數到目前為止已經被使用的二進位表示的數量。此計數器可以在每次一個新的二進位表示被請求時增量,並且代表所述計數器的一值的一個二進位串可被使用作為所述新的二進位表示。
在某些實施例中,在動作525所產生的二進位表示可被加到所述字典,因而若未來再次遭遇到相同的詮釋資料標籤,則所述二進位表示將會是可供利用的。
應該體認到的是,本揭露內容的特點完全並不限於用任何特定的方式來解析一詮釋資料標籤成為一個二進位表示。譬如,在某些實施例中,做為一雜湊表的額外或替代的,一字典可以利用一圖形來加以實施。
圖6是展示根據某些實施例的一舉例說明的圖形600,其可被用來解析一詮釋資料標籤成為一個二進位表示。譬如,所述圖形600可以提前加以建立,並且可以在請求一個二進位表示時被走訪(traversed)。然而,應該體認到的是,所述圖形600可以在任何適當的時間(例如,編譯時間、連結時間、載入時間、及/或運行時間)加以建立。同樣地,所述圖形600可以在任何適當的時間(例如,編譯時間、連結時間、載入時間、及/或運行時間)被走訪。
在某些實施例中,所述圖形600可包含所有可能的詮釋資料標籤(例如,如同利用在此所述的舉例說明的技術中的一或多個,例如是總和類型、域等等所判斷的)。以此種方式,一匹配可以總是在圖5的例子中的舉例說明的程序500的動作515被找到,因而一匹配的二進位表示可以在動作520單純地被獲得,相對於在動作525的產生一個新的二進位表示可能牽涉到較多的計算(例如,雜湊)。當一個二進位表示被請求時,此可以有利地降低延遲及/或功率消耗。
然而,本發明人已經體認且領悟到,若所述圖形600包含所有可能的詮釋資料標籤,則更多記憶體可被用來儲存所述圖形600。於是,在某些實施例中,所述圖形600最初可能不包含所有可能的詮釋資料標籤。當遭遇到詮釋資料標籤時,對應的二進位表示可被加到所述圖形600。
在某些實施例中,在所述圖形600中的一節點可以對應於一組詮釋資料符號。譬如,可以有一節點對應於所述空的集合。額外或替代的是,可以有一或多個節點,其分別對應於詮釋資料符號的一或多個非空的集合(例如,在圖6的例子中的{NS_Red}、{GoGreenEW}、{NS_Red, EW_Red}、{NS_Red, EW_Yellow}等等)。此種節點可以儲存對應的詮釋資料符號的集合的一個二進位表示。
在某些實施例中,給定對應於詮釋資料符號的一集合S的一節點可能有一邊緣,該邊緣用尚未在所述集合S(例如,{NS_Red})中的一詮釋資料符號A(例如,EW_Red)而被標示。此種邊緣可能會導向對應於一集合S’(例如,{NS_Red, EW_Red})的一目標節點,其可以是將所述詮釋資料符號A加入所述集合S的結果。額外或替代的是,可能有一邊緣,該邊緣用被標示為在所述集合S(例如,{NS_Red})中的一詮釋資料符號B(例如,NS_Red)而被標示,其中所述邊緣可能會導向對應於一集合S’’(例如,所述空的集合)的一目標節點,其可以是從所述集合S移除所述詮釋資料符號B的結果。
在圖6的例子中,在同一對的節點之間指向相反方向上的一對邊緣是被展示為一雙向的箭頭。然而,應該體認到的是本揭露內容的特點並不限於具有在一對節點之間的兩個方向上的邊緣。
在某些實施例中,所述圖形600可以從對應於所述空的集合的節點被走訪。例如,一或多個詮釋資料符號可以增量地加入,以到達具有一所要的二進位表示的一節點。額外或替代的是,從對應於詮釋資料符號的一非空的集合的一節點開始,一或多個詮釋資料符號可以增量地加入及/或移除,以到達具有一所要的二進位表示的一節點。
本發明人已經體認且領悟到,在某些實例中,一詮釋資料標籤在產生一或多個其它詮釋資料標籤時只能夠被使用作為一中間的標籤。譬如,一詮釋資料標籤{C}只能夠被使用在產生詮釋資料標籤{A、C}以及{B、C}。所述詮釋資料標籤{C}本身不可以出現在任何待被安裝到規則快取中的具體規則中。於是,在某些實施例中,沒有二進位表示可以針對於此種詮釋資料標籤而被產生,此可以降低被用來儲存詮釋資料標籤的二進位表示的記憶體的量。譬如,待被安裝的具體規則的一集合可以用一種適當的方式(例如,利用在圖4的例子中的舉例說明的程序400來識別輸入型態)而被決定,因而二進位表示可以針對於出現在至少一待被安裝的具體規則中的那些詮釋資料標籤而被產生。
本發明人已經進一步體認且領悟到,在運行時間或載入時間藉由雜湊或圖形走訪來獲得一個二進位表示可能會造成一非所要的延遲。再者,雜湊可能會消耗額外的處理器週期(以及因此的功率),而儲存二進位表示的圖形可能會消耗額外的記憶體。於是,在某些實施例中,在圖2的例子中的舉例說明的策略編譯器220及/或舉例說明的策略連結器225可以解析在一具體規則中的一或多個詮釋資料標籤成為一或多個個別的二進位表示。所述具體規則可以用二進位形式(例如,其中所述一或多個個別的二進位表示是取代所述一或多個詮釋資料標籤)而被提供至所述舉例說明的載入器215,以譬如作為一初始化規格的部分。所述載入器215可以載入具有二進位形式的具體規則到圖1的例子中的舉例說明的規則快取144。以此種方式,計算可以從運行時間及/或載入時間被移到編譯時間及/或連結時間,此可以改善針對於運行時間及/或載入時間的效能及/或降低記憶體負擔。
如上相關圖1的例子所論述的,所述規則快取144可以利用一雜湊函數以及一所選的記憶體,例如是晶片上的隨機存取記憶體(RAM)來加以實施。譬如,一規則快取項目可包含具有二進位形式的一輸入型態(例如,其中一或多個個別的二進位表示取代一或多個輸入詮釋資料標籤)。額外或替代的是,所述規則快取項目可包含具有二進位形式的一輸出型態(例如,其中一或多個個別的二進位表示取代一或多個輸出詮釋資料標籤)。一雜湊函數可被施加至所述具有二進位形式的輸入型態,以產生在所選的記憶體中的一位址。所述規則快取項目可被儲存在所選的記憶體中的該位址處。
本發明人已經體認且領悟到,一規則快取衝突在此種實施方式中可能會發生。譬如,具有一第一輸入型態的一規則快取項目可被安裝到所述規則快取144中。接著,所述規則快取144可能是以一第二輸入型態而被詢問,所述第二輸入型態可以是不同於所述第一輸入型態,但是可能雜湊到一相同的位址。所述規則快取144可以從所選的記憶體取回所述規則快取項目,只用以判斷所述第二輸入型態並不匹配在所取回的規則快取項目中儲存的所述第一輸入型態。因此,所取回的規則快取項目可能是不可適用的,並且在圖1的例子中的舉例說明的策略處理器150可以利用所述第二輸入型態而被詢問。
本發明人已經體認且領悟到,規則快取衝突可能會導致一效能劣化,尤其是若多個衝突緊密連續地發生時。例如,兩個經常被觸發的具體規則可能會發生具有雜湊到一相同的位址的輸入型態。此可能會造成快取輾轉現象(thrashing),其中所述兩個規則可能會交替地使得彼此從所述規則快取144被逐出,即使在所述規則快取144中的其它位址仍然可以是可供利用以儲存具體規則。
於是,在某些實施例中,技術被提供以用於避免(例如,使其較不頻繁或甚至是消除)規則快取衝突。譬如,詮釋資料標籤可以用一種適應性的方式而被解析成為二進位表示,藉此一或多個將會造成衝突的二進位表示可被一或多個將不會造成衝突的二進位表示所取代。
圖7是展示根據某些實施例的用於適應性解析詮釋資料標籤成為二進位表示的一舉例說明的程序700。本發明人已經體認且領悟到,在安裝具體規則到硬體中的一規則快取(例如,在圖1的例子中的舉例說明的規則快取144)之前執行所述程序700可能是所期望的。譬如,所述程序700的部分或全部可以藉由在圖2的例子中的舉例說明的策略編譯器220、舉例說明的策略連結器225、及/或舉例說明的載入器215的編譯時間、連結時間、及/或載入時間加以執行。
在動作705,一或多個第一二進位表示可加以獲得。譬如,所述一或多個第一二進位表示可被接收作為輸入。額外或替代的是,一或多個詮釋資料標籤可被解析成為一或多個個別的二進位表示(例如,利用如上相關圖5-6的例子所述的雜湊及/或圖形走訪)。所述一或多個詮釋資料標籤可包含將一被安裝到一規則快取中的具體規則的一或多個輸入詮釋資料標籤及/或一或多個輸出詮釋資料標籤。例如,所述一或多個輸入詮釋資料標籤可以是觸發在一待被實行的策略中的一符號規則的一輸入型態的部分。此種輸入型態可以用任何適當的方式而被識別,例如是利用如上相關圖4的例子所述的一布林可滿足性解法器。
在動作710,所述一或多個第一二進位表示可被檢查是否有衝突。譬如,所述一或多個第一二進位表示可被雜湊,並且一結果可被用來查找一列表的具有對應的雜湊的具體規則。若有一具有一匹配的雜湊的具體規則,則該具體規則可被取回,並且可以與所述一或多個第一二進位表示比較,以判斷所述一或多個第一二進位表示是否確實匹配所述具體規則、或是否有一衝突。
在某些實施例中,若沒有具有一匹配的雜湊的具體規則,則可以在動作715判斷沒有衝突。額外或替代的是,若有一具有一匹配的雜湊的具體規則,並且所述一或多個第一二進位表示確實匹配所述具體規則,則可以在動作715判斷沒有衝突。所述一或多個第一二進位表示可被用來解析所述具體規則成為二進位形式,並且所述具有二進位形式的具體規則可被加到具有對應的雜湊的具體規則的列表。
在另一方面,若有一具有一匹配的雜湊的具體規則,但是所述具體規則並不匹配所述一或多個第一二進位表示,則可以在動作715判斷有一衝突。所述程序700接著可以進行到動作720,其中一或多個第二二進位表示可加以獲得。
在某些實施例中,藉由以一不同的二進位表示來取代所述一或多個第一二進位表示中的至少一個,可以獲得所述一或多個第二二進位表示。譬如,可以針對於分別藉由所述一或多個第一二進位表示所代表的一或多個輸入詮釋資料標籤的至少一輸入詮釋資料標籤,產生一不同的二進位表示。此可以用任何適當的方式而被完成,例如是藉由增量追蹤至今已經產生的二進位表示的數量的一計數器。
在某些實施例中,所述程序700可以返回動作710來檢查所述一或多個第二二進位表示是否有衝突,其例如是藉由雜湊及查找具有對應的雜湊的具體規則的列表。此可以重複直到一或多個並不造成衝突的二進位表示被識別為止。
本發明人已經體認且領悟到,對於一相同的詮釋資料標籤,所述程序700可能會導向不同的二進位表示。譬如,一字典(例如,如上相關圖5-6的例子所述)可以將一詮釋資料標籤映射到一第一二進位表示,該第一二進位表示可以在動作720被一第二二進位表示所取代。於是,在某些實施例中,此種字典可被更新以便將所述詮釋資料標籤映射至所述第二二進位表示。
本發明人已經進一步體認且領悟到,一詮釋資料標籤可能發生在多個具體規則中。於是,在某些實施例中,若一詮釋資料標籤在動作720被映射到一不同的二進位表示,則一或多個亦包含所述詮釋資料標籤的其它具體規則,可以從具有對應的雜湊的具體規則的列表來加以識別。此種具體規則可以利用新被映射的二進位表示而被更新,並且一新的雜湊可以根據所述新被映射的二進位表示而被產生。即使此種具體規則的一輸入型態是在該具體規則第一次被加到具有對應的雜湊的具體規則的列表時,經由所述程序700而被檢查是否有衝突,所述程序700仍然可被重複以確保所述新被映射的二進位表示並不引入衝突。因此,所述程序700可被執行許多次直到所有所要的具體規則具有最新的二進位表示,而且仍然沒有衝突是可能的。此種沒有衝突的配置可能永不達成甚至是可能的。
儘管具有對應的雜湊的具體規則的列表是在以上相關圖7的例子被描述,但應該體認到的是本揭露內容的特點並非限於此的。在某些實施例中,所述程序700可以利用在硬體中的一規則快取來加以執行。譬如,所述程序700可以在運行時間,利用在圖1的例子中的舉例說明的規則快取144,藉由所述舉例說明的標籤處理硬體140及/或所述舉例說明的策略處理器150來加以執行。
本發明人已經體認且領悟到就晶片面積而論,在硬體中實施一規則快取為一雜湊表可能會引發相當大的成本。譬如,一輸入型態可以針對於每一個被安裝到所述規則快取中的具體規則而被儲存,此可能會使用相當大量的RAM。因此,更多晶片面積可能被用來提供所述RAM。
於是,在某些實施例中,技術被提供以用於降低、或甚至是消除輸入型態的儲存。譬如,若一具體規則的輸入型態被雜湊到某一位址,則單一位元可被儲存在該位址以指出所述位址不是空的,而不儲存所述輸入型態本身。額外或替代的是,所述具體規則的一輸出型態可被儲存在所述位址,並且若一詢問的輸入型態被雜湊到該位址時可被回傳。此在某些實例中可以在RAM尺寸以及因此的晶片面積上導致100倍的縮減。
本發明人已經進一步體認且領悟到,不同的具體規則可以共用一相同的輸出型態,儘管有不同的輸入型態。於是在某些實施例中,儲存可以藉由例如在一輸出型態表中只儲存一輸出型態的一副本而進一步被降低。對於每一個具有該輸出型態的具體規則,一對應的規則快取項目可以儲存至所述輸出型態的所述副本的一位址,而不是所述輸出型態本身。此在某些實例中可以在RAM尺寸以及因此的晶片面積上進一步導致4倍的縮減。
本發明人已經體認且領悟到,在其中一具體規則的輸入型態(其被雜湊以形成用於所述具體規則的一位址)並未被儲存的一實施例中,一規則快取衝突可能會導致所述具體規則的不正確的應用。譬如,一詢問的輸入型態可能是不同於所述具體規則的輸入型態,但可能雜湊到相同的位址。在此詢問的輸入型態上觸發所述具體規則可能是不正確的。為了避免(例如,降低或消除)此種不正確的應用,例如是那些相關圖7的例子敘述的技術可被用來避免規則快取衝突。
然而,如上所論述的,一次解析一輸入型態可能是效率差的,因為所述舉例說明的程序700可能被疊代許多次,以傳播一新被映射的二進位表示至所有相關的具體規則。本發明人已經體認且領悟到,用一種批次的方式來解析輸入型態可能是更有效率的。譬如,在某些實施例中,一批次的多個輸入型態可以藉由利用一布林可滿足性解法器、或是某些其它適當的技術而立即被解析,以識別用於一批次的多個詮釋資料標籤的二進位表示,使得規則快取衝突被降低或消除。
圖8是展示根據某些實施例的用於解析一批次的輸入型態的一舉例說明的程序800。本發明人已經體認且領悟到,在安裝具體規則到硬體中的一規則快取(例如,在圖1的例子中的舉例說明的規則快取144)之前執行所述程序800可能是所期望的。譬如,所述程序800的部分或全部可以在編譯時間、連結時間、及/或載入時間,藉由在圖2的例子中的舉例說明的策略編譯器220、舉例說明的策略連結器225、及/或舉例說明的載入器215來加以執行。
在動作805,待被解析的一批次的輸入型態可被識別出。本發明人已經體認且領悟到給定某一規則快取尺寸,規則快取衝突的可能性可能會隨著待被解析的輸入型態的數量而增加。因此,減低待被解析的輸入型態可能是所期望的。於是,在某些實施例中,例如那些以上相關圖4的例子所述的技術可被使用,以識別觸發在一或多個待被實行的策略中的一或多個符號規則的輸入型態。此種輸入型態可包含一或多個對應於將被容許的指令的輸入型態、及/或一或多個對應於明確將不被允許的指令的輸入型態。
然而,如上相關圖4的例子所論述的,對於將不被允許的指令而言,運行時間效能可能不是受到關注的。於是,在某些實施例中,可識別出對應於將被容許的指令的某些或所有的輸入型態,並且可以包含在所述批次的待被解析的輸入型態中。對應於明確將不被允許的指令的輸入型態可以或可以不被包含。
額外或替代的是,優先等級可以是用一種適當的方式來和輸入型態相關的。具有高於一所選的臨界值的某些或所有優先等級的輸入型態可被識別出,並且可以被包含在所述批次的待被解析的輸入型態中。具有低於所選的臨界值的優先等級的輸入型態可以或可以不被包含。
在動作810,一或多個限制可被建構。此種限制可包含涉及一或多個變數的一條件。譬如,每一個在動作805被識別的輸入型態可以是和一個別的位址變數相關的。用於此種變數的一值可以指出對應的輸入型態可被儲存所在的一規則快取位址。
額外或替代的是,某些或所有可能的詮釋資料標籤可以針對於每一個輸入(例如,在圖3的例子的舉例說明的signalSafety策略中的code以及env)而被識別出。此例如可以利用在此所述的舉例說明的技術中的一或多個,例如是總和類型、域等等被完成。每一個此種詮釋資料標籤可以是和一個別的整數變數相關的。代表用於此種變數的一值的一位元串可被使用作為對應的詮釋資料標籤的一個二進位表示。
在某些實施例中,一限制可以針對於在動作805識別的每一個輸入型態來加以建構。舉例而言,給定此種輸入型態P = <L0
,…,LS-1
>,一限制可被建構如下:
p = H(l0
,…,lS-1
),
其中H是一適當的雜湊函數,p是和所述輸入型態P相關的一位址變數,S是輸入槽位的數量,並且l0
,…,lS-1
是分別和所述詮釋資料標籤L0
,…,LS-1
相關的整數變數。此限制可以提供所述輸入型態P將被儲存所在的一規則快取位址匹配所述二進位形式的輸入型態P的一雜湊。
額外或替代的是,一限制可被建構如下:
(not p0
= p1
) and (not p0
= p2
) and … and (not p0
= pK-1
) and
(not p1
= p2
) and (not p1
= p3
) and … and (not p1
= pK-1
) and
…
(not pK-2
= pK-1
),
其中K是在動作805識別的輸入型態的數量,並且p0
,…,pK-1
是分別和此種輸入型態相關的位址變數。
以上舉例說明的限制可以提供在任意對的這些輸入型態之間沒有衝突。然而,應該體認到的是,本揭露內容的特點並不限於消除所有此種衝突。在某些實施例中,一或多個此種衝突可以例如藉由省略以上的合取式(conjunct)中的一或多個而被容忍。
本發明人已經體認且領悟到,在其中輸入型態本身並未被儲存在一規則快取中的一實施例中,避免在一對應於將被容許的指令的輸入型態以及一對應於將不被允許的指令的輸入型態之間的衝突可能是所期望的,因為此種衝突可能會導致一不被允許的指令錯誤地被容許。於是,一限制可被建構,以提供一對應於將不被允許的指令的輸入型態並不衝突於任何對應於將被容許的指令的輸入型態。
譬如,如上所論述,針對於每一個輸入(例如,在所述signalSafety策略中的code以及env),可能可以識別出詮釋資料標籤的一集合。因此,可以有集合A0
,…,AS-1
,其中S是輸入槽位的數量。在某些實施例中,可能的輸入型態的一集合可被建構為一笛卡兒積A0
X … X AS-1
、或是其之一子集合。不被允許的輸入型態的一集合接著可以藉由從此笛卡兒積移除被容許的輸入型態而被建構。
在某些實施例中,給定一不被允許的輸入型態Q = <L0
,…,LS-1
>,一限制可被建構如下:
(not p0
= H(l0
,…,lS-1
)) and … and (not pK-1
= H(l0
,…,lS-1
))
其中K是在動作805識別的輸入型態的數量,p0
,…,pK-1
是分別相關於此種輸入型態的位址變數,H是所述雜湊函數,S是輸入槽位的數量,並且l0
,…,lS-1
是分別和所述詮釋資料標籤L0
,…,LS-1
相關的整數變數。
以上舉例說明的限制可以提供,在所述不被允許的輸入型態Q以及在動作805識別的輸入型態(其可包含對應於將被容許的指令的輸入型態)的任一個之間沒有衝突。然而,應該體認到的是本揭露內容的特點並不限於消除所有此種衝突。在某些實施例中,一或多個此種衝突可以例如藉由省略以上的合取式中的一或多個而被容忍。
在某些實施例中,針對於每一個不被允許的輸入型態,可以建構類似於以上舉例說明的限制的一限制。然而,應該體認到的是本揭露內容的特點並不限於消除所有此種衝突。在某些實施例中,一或多個衝突可以例如藉由省略分別對應於一或多個不被允許的輸入型態的一或多個限制而被容忍。
在動作815,一布林可滿足性解法器可被使用,以解出遭受在動作810所建構的限制中的一或多個的整數變數中的一或多個、以及位址變數中的一或多個。任何適當的布林可滿足性解法器都可被使用,其包含但不限於一可滿足性模數理論(SMT)解法器。
在某些實施例中,由所述解法器回傳的一個解可包含用於對應一詮釋資料標籤的一整數變數的一值。一代表該值的位元串可被使用作為所述詮釋資料標籤的二進位表示。
額外或替代的是,所述解可包含用於對應在動作805識別的一輸入型態的一位址變數的一值。因為所述對應的限制,二進位形式的輸入型態可被雜湊至所述位址值,並且因此可以在所述位址值被安裝到一規則快取中。
儘管實施方式的細節是在以上相關圖8的例子而被描述,但應該體認到的是本揭露內容的特點並不限於任何特定方式的實施方式。譬如,在某些實施例中,所述程序800的部分或全部可以在運行時間藉由在圖1的例子中的舉例說明的標籤處理硬體140及/或舉例說明的策略處理器150來加以執行。
再者,本揭露內容的特點並不限於利用一布林可滿足性解法器來解析一批次的輸入型態。在某些實施例中,一批次的輸入型態可以藉由利用最佳化技術而被解析,以選擇一或多個二進位表示。譬如,一或多個確切及/或近似的最佳化技術(例如,模擬的退火)可被用來選擇二進位表示,以便於根據被安裝到一規則快取中的具體規則來增加一或多個分數。
舉例而言,被安裝到一規則快取中的一具體規則可被指定一個1的分數,並且所有被安裝的具體規則的分數的總和可被最佳化。因此,一個解可以有利地將大量的具體規則裝入所述規則快取中,同時降低或消除衝突。
作為另一例子的是,優先等級可以用一種適當的方式來和具體規則相關的。被安裝到一規則快取中的一具體規則可以根據和該具體規則相關的一優先等級而被指定一分數,並且所有被安裝的具體規則的分數的總和可被最佳化。因此,一個解可以有利地將大量的高優先權的具體規則裝入所述規則快取中,同時降低或消除衝突。
圖9是展示根據某些實施例的用於解析一批次的輸入型態的一舉例說明的程序900。像是在圖8的例子中的舉例說明的程序800,所述程序900的部分或全部可以在編譯時間、連結時間、及/或載入時間,藉由在圖2的例子中的舉例說明的策略編譯器220、舉例說明的策略連結器225、及/或舉例說明的載入器215來加以執行。額外或替代的是,所述程序900的部分或全部可以在運行時間藉由在圖1的例子中的舉例說明的標籤處理硬體140及/或舉例說明的策略處理器150來加以執行。
在動作905,一批次的輸入型態可以如上相關所述程序800的動作805所述而被識別出。如上相關動作810所述,出現在至少一被識別的輸入型態中的每一個詮釋資料標籤可以是和一個別的整數變數相關的。然而,作為建構限制以及利用一布林可滿足性解法器來解出二進位表示的替代(或是額外的),一或多個確切及/或近似的最佳化技術(例如,模擬的退火)可被用來選擇二進位表示。
在某些實施例中,一最佳化技術可以進行一所選的次數的疊代。最初,在動作910,可以針對於所有的整數變數而隨機地加以選擇值。一根據所述隨機所選的值的規則快取配置可被評估以決定一分數。譬如,所述分數可以是根據在所述配置中所發現的衝突的數量而定。額外或替代的是,假設在有一衝突的情形中,高於一較低優先權的規則的一較高優先權的規則被選擇,所述分數可以是根據被安裝的具體規則的優先等級(例如,此種優先等級的總和)而定。
本發明人已經體認且領悟到,出現在相當多的輸入型態中的一詮釋資料標籤,可以具有比出現在相當少的輸入型態中的一詮釋資料標籤更大的影響。譬如,用於一經常出現的詮釋資料標籤的二進位表示上的一改變,可能會導致在用於許多輸入型態的二進位表示上的改變。因此,使得所述最佳化技術優先化經常出現的詮釋資料標籤可以是有利的。
於是,在某些實施例中,作為被安裝的具體規則的衝突及/或優先等級的數量的額外或替代,一配置分數可以是根據一或多個詮釋資料標籤分數而定。譬如,一詮釋資料標籤可以是和一詮釋資料標籤分數相關的,其是根據所述詮釋資料標籤出現在其中的在動作905識別的輸入型態的數量而定,使得一經常出現的詮釋資料標籤可以比一較少出現的詮釋資料標籤具有一較高的分數。所述配置分數接著可以根據並未牽涉到任何衝突的詮釋資料標籤的分數(例如,此種詮釋資料標籤分數的總和)而被決定。
在每一疊代之內,在動作910,對於一目前的配置的一修改可以隨機地選擇。在某些實施例中,所述修改可包含用於剛好一整數變數的一新選擇的值。然而,應該體認到的是,本揭露內容的特點並非限於此的。在某些實施例中,所述修改可包含分別用於多個整數變數的新選擇的值。
在某些實施例中,產生自所述隨機選擇的修改的一配置可被評估以決定一分數。此可以用一種類似如上所述的最初的配置的評估的方式來加以完成。
在動作920,可以決定是否接受或拒絕在動作910所選的修改。在某些實施例中,此決定可以根據目前的配置的一分數、修改後的配置的一分數、及/或一熱度來加以完成。譬如,若修改後的配置的分數高於目前的配置以及熱度的分數的總和,則所述修改可被接受。然而,應該體認到的是,本揭露內容的特點並不限於用任何特定的方式來做成此決定。
在某些實施例中,所述熱度可被初始化至一正值,並且可以在每一疊代時被降低。因此,在所述程序900中的早期,當所述熱度是較高的,產生一較低的分數的一修改可能有較高的可能性被接受。此可以提升搜尋空間的探索,藉此降低卡在一局部的最大值而錯失一全域的最大值的可能性。對比之下,稍後在所述程序900中,當所述熱度是較低的,產生一較低的分數的一修改可能有較高的可能性被拒絕。此可以有助於所述程序900在終止之前收斂至一局部的最大值。
在某些實施例中,藉由所述程序900回傳的一解可包含用於對應一詮釋資料標籤的一整數變數的一值。代表該值的一位元串可被使用作為所述詮釋資料標籤的二進位表示。
額外或替代的是,藉由所述程序900回傳的解被可被檢查是否有衝突。若兩個具體規則被發現具有雜湊至一相同的位址的輸入型態,則一較高優先權的規則可以優於一較低優先權的規則而被選擇。
本發明人已經體認且領悟到,在某些實例中,藉由所述程序900回傳的一解可能並未完全填滿一規則快取。於是,在某些實施例中,一或多個具體規則可被加入。譬如,藉由所述程序900回傳的解可能只包含對應於將被容許的指令的具體規則。若此種具體規則並未完全填滿一規則快取,則對應於明確將不被允許的指令的具體規則可被加入。
額外或替代的是,藉由所述程序900回傳的解可能只包含具有高於一所選的臨界值的優先等級的具體規則。若此種具體規則並未完全填滿一規則快取,則具有較低的優先等級的具體規則可被加入。
在某些實施例中,一將被加入的具體規則可被檢查有無衝突。譬如,若一對應於明確將不被允許的指令的具體規則衝突於一對應於將被容許的指令的具體規則,則前者可以不被加入。同樣地,若具有一較低的優先等級的一具體規則衝突於具有一較高的優先等級的一具體規則,則前者可以不被加入。
儘管實施方式的細節是在以上相關圖9的例子而被描述,但應該體認到的是本揭露內容的特點並不限於任何特定的實施方式。譬如,在某些實施例中,梯度下降法(gradient descent)、分支定界法(branch and bound)、及/或一或多個其它最佳化技術可以作為模擬的退火的替代或額外而被使用。
如上所論述,本發明人已經體認且領悟到,運行時間效能可以藉由提前安裝具體規則到圖1的例子的舉例說明的規則快取144中來加以改善,因而在運行時間可以對於所述舉例說明的策略處理器150做成較少的詢問。然而,所述規則快取144可能具有有限的容量(例如,以節省在一晶片上的面積),並且因此可能無法保存所有可能在運行時間遭遇到的具體規則。於是,在某些實施例中,用於針對安裝到一規則快取中具體規則之優先化的技術是被提供。譬如,一策略語言特點可被提供,以用於關聯一詮釋資料符號與一優先等級。額外或替代的,一策略語言特點可被提供,以用於關聯一策略規則與一優先等級。
在某些實施例中,在圖2的例子中的舉例說明的策略編譯器220可被程式化,以透過編譯來保持優先權資訊。譬如,包含一詮釋資料符號的一具體規則可以是和一優先等級相關的,其至少是和所述詮釋資料符號相關的一優先等級一樣高的。額外或替代的是,產生自一策略規則的一具體規則可以是和一優先等級相關的,其至少是和所述策略規則相關的一優先等級一樣高的。因此,包含一或多個詮釋資料符號及/或產生自一策略規則的一具體規則,可以是和所述一或多個詮釋資料符號及/或所述策略規則的一或多個優先等級中的一最高的優先等級相關的。
在某些實施例中,具體規則可以根據相關的優先等級而被安裝到所述規則快取144中。譬如,和一最高的優先等級相關的具體規則可以優先被安裝。若所述規則快取144尚未滿,則和一次高的優先等級相關的具體規則可被安裝。此可以重複直到所述規則快取144已滿為止。以此種方式,較高優先權的具體規則可以在運行時間從所述規則快取144被存取,而較低優先權的具體規則可以在運行時間藉由所述策略處理器150而被計算出。
在某些實施例中,在運行時間藉由所述策略處理器150計算出的第一具體規則可被安裝到所述規則快取144中,其取代已經在所述規則快取144中的第二具體規則。若所述第一具體規則衝突於所述第二具體規則、及/或若所述規則快取144已滿,則此可能會發生。在做此種替代之前,所述第一具體規則的優先等級可以與所述第二具體規則的優先等級做比較。所述替代可以只有在具有相較於所述第二具體規則的一相同或更高的優先權的第一具體規則時才加以做成。
在某些實施例中,所述規則快取144可以是階層式的。譬如,所述規則快取144可包含1級(L1)快取及/或2級(L2)快取。所述L1快取可以是在一較快的RAM中,而所述L2快取可以是在一較慢的RAM或是一主要記憶體中。因此,具體規則的安裝可以例如是根據如上所論述的具體規則的優先等級而開始於所述L1快取。當所述L1快取已滿,所述程序可以繼續於所述L2快取。以此種方式,匹配和一較高的優先權相關的一具體規則的一輸入型態可以比匹配和一較低的優先權相關的一具體規則的一輸入型態更快速地加以處理。
應該體認到的是,本揭露內容的特點並不限於利用具有任何特定數量的階層的階層式快取、或是限於階層式快取。再者,本揭露內容的特點並不限於根據優先等級來安裝具體規則到一階層式規則快取中。在某些實施例中,對應於將被容許的指令的具體規則可被識別及安裝到一L1快取中,而對應於明確將不被允許的指令的具體規則可被識別及安裝到一L2快取中。
本發明人已經體認且領悟到,在某些實例中,利用一10位元的雜湊尺寸以在無衝突下容納所有被容許的具體規則可能是不切實際的,但是利用一32位元的雜湊尺寸來完成此可能是實際可行的。於是,在某些實施例中,技術是被提供以利用多個雜湊尺寸來有效率地儲存此種具體規則。
譬如,假設一32位元的雜湊尺寸下,一或多個例如是那些相關圖8-9所敘述的技術可被使用,以解析被容許及/或明確不被允許的具體規則的輸入型態成為二進位表示。給定此種具體規則,一10位元的雜湊以及一32位元的雜湊可以從所述具體規則的一輸入型態來加以產生。在某些實施例中,所述10位元的雜湊可以是根據所述32位元的雜湊來產生的。譬如,所述10位元的雜湊可以是所述32位元的雜湊的一指定的部分(例如,較低的10位元)。
在某些實施例中,所述10位元的雜湊可被使用作為一位址,以將所述具體規則安裝到一規則快取(例如,在圖1的例子中的舉例說明的規則快取144)中。所述32位元的雜湊的其餘的部分(例如,較高的22位元)可被儲存在所述10位元的位址處,而不儲存所述輸入型態本身。額外或替代的是,所述具體規則的一輸出型態、及/或指向所述輸出型態的一副本的一位址可被儲存在所述10位元的L1位址處。以此種方式,較小的晶片面積可被用來實施所述規則快取144。
在某些實施例中,一32位元的雜湊可以從一詢問的輸入型態而被產生。一10位元的雜湊可以根據所述32位元的雜湊而被產生,並且可被用來查找所述規則快取144。譬如,所述10位元的雜湊可以是所述32位元的位址的一指定的部分(例如,較低的10位元)。在一規則快取未命中的情形中,可以判斷一對應的指令將不被允許。在一規則快取命中的情形中,所述32位元的雜湊的其餘的部分(例如,較高的22位元)可以與所述規則快取144回傳者做比較。
若有一匹配,則可以根據所述規則快取144回傳者來判斷對應的指令是被容許的、或是明確不被允許的,端看哪個是可適用的。否則,一策略處理器(例如,在圖1的例子中的舉例說明的策略處理器150)可以利用所述詢問的輸入型態來加以調用,且/或某種其它適當的處理可加以執行。
應該體認到的是,本揭露內容的特點並不限於根據一32位元的雜湊來產生一10位元的雜湊。在某些實施例中,兩個分開的雜湊函數可被使用。譬如,一雜湊函數H1可被用來產生一10位元的雜湊,並且一雜湊函數H2可被用來產生一32位元的雜湊。所述10位元的雜湊可被使用作為所述32位元的雜湊可被儲存所在的一規則快取位址。類似地,給定一詢問的輸入型態,所述雜湊函數H1可被用來產生一10位元的雜湊,其可被用來查找所述規則快取144。在一規則快取未命中的情形中,可以判斷一對應的指令將不被允許。在一規則快取命中的情形中,所述雜湊函數H2可被用來產生一32位元的雜湊,其可以與所述規則快取144回傳者做比較。
在某些實施例中,一階層式快取可以結合上述利用多個雜湊尺寸的舉例說明的技術中的一或多個而被利用。譬如,一L1快取可被利用,其具有一10位元的位址空間,並且一L2快取可被利用,其具有一14位元的位址空間。給定一被容許及/或明確不被允許的具體規則,一32位元的雜湊可以從所述具體規則的一輸入型態而被產生。所述32位元的雜湊的一指定的10位元的部分(例如,較低的10位元)可被使用,作為所述32位元的雜湊、或是其之一其餘的部分(例如,較高的22位元)可被儲存在所述L1快取中所在的一位址處。
額外或替代的是,所述32位元的雜湊的一指定的14位元的部分(例如,較低的14位元)可被使用,作為所述32位元的雜湊、或是其之一其餘的部分(例如,較高的18位元)可被儲存在所述L2快取中所在的一位址處。以此種方式,若一詢問的輸入型態在所述L1快取中產生一命中,但是並不匹配所述L1快取回傳者,則一查找可以在所述L2快取中被執行。
在某些實施例中,一較低階層的快取(例如,L2、L3等等)可以具有一32位元、或甚至是更大的位址空間。譬如,此種較低階層的快取可被實施在一主要記憶體中。因此,所有被容許及/或明確不被允許的具體規則都可以在無衝突下被容納。以此種方式,所述策略處理器150可以完全不被調用,此可以改善運行時間效能。
應該體認到的是,本揭露內容的特點並不限於利用一10位元的雜湊尺寸、一32位元的雜湊尺寸、或是任何特定的雜湊尺寸。同樣地,本揭露內容的特點並不限於利用任何具有一10位元的位址空間、一14位元的位址空間、一32位元的位址空間、或是任何特定的位址空間的快取。
本發明人已經體認且領悟到,在某些實例中,儘管以上的技術中的一或多個被利用來提前安裝具體規則到所述規則快取144中,但仍然可能遭遇到在所述規則快取144中沒有匹配的一輸入型態。因此,所述策略處理器150可被詢問,此可能造成一非所要的延遲。於是,技術被提供以用於改進所述策略處理器150的效率。譬如,在某些實施例中,所述策略處理器150可被程式化,以從一組提前產生的具體規則搜尋匹配一輸入型態的一具體規則。作為響應於利用所述輸入型態而被詢問來評估一符號規則的替代或額外的,此搜尋可加以執行。
在某些實施例中,在一策略中的符號規則可以利用一優先權運算子,例如是在圖3的例子的舉例說明的signalSafety策略中的「^」運算子來加以組合。此種運算子可以具有依據評估順序而定的語義學。譬如,在所述signalSafety策略中的第八規則及第十六規則(被複製在以下)可能具有並非互斥的條件。就該方面來說,具有在所述輸入code上的{GoGreenNS}以及在所述輸入env上的{NS_Yellow, EW_Green}的一輸入型態可能匹配兩個規則。所述第八規則可以在此輸入型態上被觸發,因為所述第八規則被列表在所述第十六規則之前。若所述第八規則被列表在所述第十六規則之後,則所述第十六規則可以已經被觸發,而不是所述第八規則,此產生一不同的錯誤訊息。
^ rule_8 (code == [+GoGreenNS], env == [+EW_Green] ->
fail "Safety Violation – East-West Lights Still Green")
…
^ rule_16 (code == _ , env == [NS_Yellow, EW_Green] ->
fail "Safety Violation – Neither Set of Lights Is Red")
本發明人已經體認且領悟到,順序的評估可提供便利性給策略編寫。譬如,單純藉由將一較特定的規則設置在一較一般的規則之前,一策略編寫者可以相對於所述較一般的規則來優先化所述較特定的規則,而不是明確地呼叫出所述較特定的規則作為所述較一般的規則的一例外。
然而,本發明人亦已經體認且領悟到,順序的評估可能會導致某些效率低下。譬如,參考在所述signalSafety策略中的第八規則以及第九規則(被複製在以下),所述第八規則可能並未在一輸入型態上被觸發,因為所述輸入code並不匹配「+GoGreenNS」。在所述情形中,在相同的輸入型態上評估所述第九規則可能是不必要的,因為所述第九規則亦可能因為相同的原因而未被觸發。在順序的評估之下,所述第九規則仍然可被評估,此可能是浪費的。
^ rule_8 (code == [+GoGreenNS], env == [+EW_Green] ->
fail "Safety Violation – East-West Lights Still Green")
^ rule_9 (code == [+GoGreenNS], env == [+EW_Yellow] ->
fail "Safety Violation – East-West Lights Still Yellow")
本發明人已經進一步體認且領悟到,不同於符號規則,具體規則可能具有互斥的條件。因此,具體規則的評估可以是與順序無關的。於是,在某些實施例中,具體規則的一集合可以為了有效率的評估而用一所選的順序而被配置。
圖10展示根據某些實施例的具體規則的一舉例說明的配置1000。譬如,所述配置1000可以在運行時間,被圖1的例子中的舉例說明的策略處理器150使用來判斷一輸入型態是否匹配所述具體規則中的任一個。
在某些實施例中,出現在所述具體規則中的複數個布林變數可以是依照輸入(例如,code、env等等)來排序的。舉例而言,以下的排序可被使用於所述signalSafety策略中的布林變數。
code_NS_Red, code_NS_Yellow, code_NS_Green,
code_EW_Red, code_EW_Yellow, code_EW_Green,
code_GoRedNS, code_GoYellowNS, code_GoGreenNS,
code_GoRedEW, code_GoYellowEW, code_GoGreenEW,
env_NS_Red, env_NS_Yellow, env_NS_Green,
env_EW_Red, env_EW_Yellow, env_EW_Green,
env_GoRedNS, env_GoYellowNS, env_GoGreenNS,
env_GoRedEW, env_GoYellowEW, env_GoGreenEW
本發明人已經體認且領悟到,一具體規則的一條件可以對應於真值至以上的布林變數的一指派。每一個此種指派都可以對應於一根據以上的排序的二進位串。譬如,code_NS_Red可以對應於一最高有效位元,而env_GoGreenEW可以對應於一最低有效位元。以此種方式,所述具體規則可以根據在二進位串上通常的「小於」排序來加以排序。
在某些實施例中,所述具體規則可被組織成為區塊,其中每一個區塊可以對應於真值至全部的所述code布林變數的一指派。因此,可以有高達2^12=4096個區塊,每一個區塊對應於用在一24位元的二進位串的一個別的12位元的字首。然而,應該體認到的是可以有少於4096個區塊。譬如,可以沒有字首111111111111的具體規則。
在某些實施例中,一或多個指標可被提供,每一個指標是指向一個別的區塊。譬如,一指標P0
可被提供以指向一區塊B0
,其中在小於B0
的所有區塊B中的具體規則的數量可以大約是具體規則的總數的一半,一指標P1
可被提供以指向一區塊B1
,其中在小於B1
的所有區塊B中的具體規則的數量可以大約是具體規則的總數的四分之一,一指標P2
可被提供以指向一區塊B2
,其中在小於B2
的所有區塊B中的具體規則的數量可以大約是具體規則的總數的四分之三、依此類推。此可被重複以獲得指標P3
、P4
、P5
、P6
、…以及區塊B3
、B4
、B5
、B6
、…,直到在兩個相鄰的指標之間只剩一區塊為止。
在某些實施例中,對於每一個區塊Bi
,一或多個指標可被提供,每一個指標指向一個別的規則。譬如,一指標Qi,0
可被提供以指向一規則Ri,0
,其中在所述區塊Bi
中小於Ri,0
的具體規則的數量可以大約是此種具體規則的總數的一半,一指標Qi,1
可被提供以指向一規則Ri,1
,其中在所述區塊Bi
中小於Ri,1
的具體規則的數量可以大約是此種具體規則的總數的四分之一,一指標Qi,2
可被提供以指向一規則Ri,2
,其中在所述區塊Bi
中小於Ri,2
的具體規則的數量可以大約是此種具體規則的總數的四分之三、依此類推。此可被重複以獲得指標Qi,3
、Qi,4
、Qi,5
、Qi,6
、…以及規則Ri,3
、Ri,4
、Ri,5
、Ri,6
、…,直到在兩個相鄰的指標之間只剩一規則為止。
在某些實施例中,用於在一給定的輸入型態中的輸入code的一詮釋資料標籤L可以與B0
做比較。若L小於B0
,則L可以與B1
做比較。否則,L可以與B2
做比較。此可被重複,直到一匹配L的區塊Bi
被識別、或判斷出的是沒有發現此種區塊為止。若沒有此種區塊被找出,則可以判斷所述輸入型態並不匹配任何具體規則。
在某些實施例中,若一匹配L的區塊Bi
被識別出,則用於在所給定的輸入型態中的輸入env的一詮釋資料標籤M可以與Ri,0
做比較。若M小於Ri,0
的最後12個位元,則L可以與Ri,1
做比較。否則,M可以與Ri,2
做比較。此可被重複,直到一匹配M的規則Ri,j
被識別出、或是判斷出的是沒有此種規則被發現為止。若沒有此種規則被找到,則可以判斷所述輸入型態並不匹配任何具體規則。
本發明人已經體認且領悟到,利用上述的舉例說明的技術,只有log(N)次比較可加以執行來判斷一輸入型態是否匹配一具體規則,其中N是具體規則的總數。再者,上述的舉例說明的技術可被使用於具有超過兩個輸入的具體規則,例如,藉由將區塊劃分成為子區塊,每一個子區塊對應於一個別的12位元的子串。
儘管實施方式的細節是在以上相關圖10的例子而被描述,但應該體認到的是本揭露內容的特點並不限於任何特定的實施方式。譬如,在某些實施例中,具體規則可能為被劃分成區塊。反而,一指標P0
可被提供以指向一規則R0
,其中小於R0
的具體規則的數量可以大約是具體規則的總數的一半,一指標P1
可被提供以指向一規則R1
,其中在小於R1
的具體規則的數量可以大約是具體規則的總數的四分之一,一指標P2
可被提供以指向一規則R2
,其中小於R2
的具體規則的數量可以大約是具體規則的總數的四分之三、依此類推。此可被重複以獲得指標P3
、P4
、P5
、P6
、…以及規則R3
、R4
、R5
、R6
、…,直到在兩個相鄰的指標之間只剩一規則為止。
在某些實施例中,一給定的輸入型態P可以與R0
做比較。若P小於R0
,則P可以與R1
做比較。否則,P可以與R2
做比較。此可被重複,直到一匹配P的規則Rj
被識別出、或判斷出的是沒有此種規則被發現為止。若沒有此種規則被找出,則可以判斷所述輸入型態並不匹配任何具體規則。
本揭露內容的各種特點的舉例說明的配置是被提供在以下。
1.一種用於解析輸入型態成為二進位表示之電腦實施的方法,其包括以下動作:識別複數個輸入型態,其中所述複數個輸入型態中的一輸入型態是包括一詮釋資料標籤;選擇用於複數個變數的複數個個別的值,其中所述複數個變數是包括對應於所述輸入型態的所述詮釋資料標籤的一變數;並且根據所述變數的所述個別的值來獲得所述詮釋資料標籤的二進位表示。
2.如配置1的方法,其中:所述方法進一步包括建構分別對應於所述複數個輸入型態的複數個限制的一動作;所述複數個限制中之一限制是對應於包括所述詮釋資料標籤的所述輸入型態;所述限制是參照對應於所述詮釋資料標籤的一變數;以及選擇用於所述複數個變數的所述複數個個別的值是包括依照所述複數個限制來解出所述複數個變數以獲得所述複數個個別的值。
3.如配置2的方法,其中:所述變數包括第一變數;所述限制進一步參照所述複數個變數的第二變數;所述限制包括相關所述第一變數以及所述第二變數的條件。
4.如配置3的方法,其中:所述條件指出所述第二變數將包括施加一所選的雜湊函數的第一表達式匹配至包括所述第一變數的第二表達式。
5.如配置4的方法,其中:所述方法進一步包括在一規則快取中儲存用於具有所述至少一輸入型態的一具體規則的一項目的動作;以及所述項目包括所述第二變數的所述個別的值的至少一部分。
6.如配置5的方法,其中:所述規則快取包括一1級(L1)快取以及一2級(L2)快取;所述L1快取具有一位址空間是小於所述L2快取的一位址空間;所述項目包括第一項目;所述方法進一步包括以下動作:根據所述第二變數的所述個別的值來獲得第一位址,其中所述第一項目被儲存在所述L1快取中的第一位址處;根據所述第二變數的所述個別的值來獲得第二位址;以及在所述L2快取中的所述第二位址處儲存用於所述具體規則的第二項目。
7.如配置2的方法,其中:所述變數包括第一變數;所述複數個變數進一步包括複數個第二變數;所述限制包括第一限制;所述複數個變數是進一步依照第二限制而被解出,所述第二限制指出所述複數個第二變數具有成對不同的值。
8.如配置2的方法,其中:所述輸入型態包括第一輸入型態;所述方法進一步包括識別不是所述複數個輸入型態的部分的第二輸入型態;所述詮釋資料標籤包括第一詮釋資料標籤;所述第二輸入型態包括第二詮釋資料標籤;所述變數包括第一變數;所述複數個變數進一步包括對應於所述第二詮釋資料標籤的第二變數;所述複數個變數進一步包括複數個第三變數;所述限制包括第一限制;所述複數個變數是進一步依照第二限制而被解出,所述第二限制指出所述複數個第二變數並沒有將包括施加一所選的雜湊函數的第一表達式匹配至包括所述第二變數的第二表達式。
9.如配置2的方法,其中:識別複數個輸入型態是包括識別至少一觸發在一待被實行的策略中的一符號規則的輸入型態。
10.如配置9的方法,其中:所述至少一輸入型態是對應於將被容許的指令。
11.如配置2的方法,其中:識別複數個輸入型態是包括識別至少一具有高於一所選的臨界值的一優先等級的輸入型態。
12.如配置1的方法,其中:選擇用於所述複數個變數的所述複數個個別的值是包括利用最佳化技術來選擇所述複數個個別的值。
13.如配置12的方法,其中:所述複數個個別的值包括複數個個別的最終值;以及利用所述最佳化技術以選擇所述複數個個別的值是包括:隨機地選擇用於所述複數個變數的複數個個別的中間的值;以及分析所述複數個個別的中間的值。
14.如配置13的方法,其中:所述複數個變數是分別對應於複數個詮釋資料標籤;所述複數個詮釋資料標籤包括所述輸入型態的所述詮釋資料標籤;以及分析所述複數個個別的中間的值是包括:根據所述複數個個別的中間的值來獲得用於所述複數個詮釋資料標籤的複數個個別的中間的二進位表示;用所述複數個個別的中間的二進位表示來取代所述複數個詮釋資料標籤,以解析所述複數個輸入型態成為二進位形式;判斷在具有二進位形式的所述複數個輸入型態中是否有至少一衝突。
15.如配置14的方法,其中:判斷在二進位形式的所述複數個輸入型態中是否有至少一衝突是包括:施加一雜湊函數至二進位形式的第一輸入型態以獲得第一雜湊;施加所述雜湊函數至二進位形式的第二輸入型態以獲得第二雜湊;以及比較所述第一雜湊以及所述第二雜湊。
16.如配置13的方法,其中:第一分數是藉由分析所述複數個個別的中間的值來加以獲得;以及利用所述最佳化技術來選擇所述複數個個別的值進一步包括:隨機地選擇對於所述複數個個別的中間的值的一修改;以及分析施加所述修改至所述複數個個別的中間的值的一結果,藉此獲得第二分數。
17.如配置16的方法,其中:利用所述最佳化技術來選擇所述複數個個別的值進一步包括根據所述第一分數、所述第二分數、以及一熱度來判斷接受或拒絕所述修改。
18.如配置17的方法,其中:所述最佳化技術包括複數個疊代;利用所述最佳化技術來選擇所述複數個個別的值進一步包括:初始化所述熱度至一正值;以及在所述複數個疊代的一或多個疊代降低所述熱度。
19.一種用於解析詮釋資料標籤成為二進位表示之電腦實施的方法,其包括以下動作:在字典中查找詮釋資料標籤,所述字典包括複數個映射詮釋資料標籤至個別的二進位表示的項目;若所述詮釋資料標籤匹配在所述字典中的一項目,則獲得所述匹配的項目將所述詮釋資料標籤映射到的一個二進位表示;以及若所述詮釋資料標籤並不匹配在所述字典中的任何項目,則產生一個新的二進位表示。
20.如配置19的方法,其中:所述詮釋資料標籤並不匹配在所述字典中的一項目;以及所述方法進一步包括將一項目增加至所述字典的一動作,所述項目是將所述詮釋資料標籤映射至所述新的二進位表示。
21.如配置19的方法,其中:所述方法進一步包括維持一計數器的一動作,所述計數器是計數已經產生的二進位表示的數量;以及所述新的二進位表示包括代表所述計數器的一值的一個二進位串。
22.如配置19的方法,其中:所述詮釋資料標籤包括一或多個詮釋資料符號的一列表。
23.如配置22的方法,其中:一或多個詮釋資料符號的所述列表是根據詮釋資料符號的一所選的排序來加以定次序。
24.如配置22的方法,其進一步包括以下的動作:當一或多個策略被評估時,增量地將所述一或多個詮釋資料符號增加至所述列表,所述一或多個策略是參照所述一或多個詮釋資料符號。
25.如配置19的方法,其中:所述字典包括一雜湊表;以及在所述字典中查找所述詮釋資料標籤是包括:施加一雜湊函數至所述詮釋資料標籤;以及若所述詮釋資料標籤被雜湊至一非空的桶,則判斷所述詮釋資料標籤是否匹配在所述非空的桶中的一項目。
26.如配置19的方法,其中:所述字典包括一圖形;在所述字典中的所述複數個項目包括在所述圖形中的複數個節點;以及在所述字典中查找所述詮釋資料標籤是包括走訪所述圖形,以識別一匹配所述詮釋資料標籤的節點。
27.如配置26的方法,其中:所述圖形包括從第一節點至第二節點的一邊緣;所述第一節點對應於第一集合的詮釋資料符號;所述邊緣是被標示並不在所述第一集合的詮釋資料符號中的至少一詮釋資料符號;以及所述第二節點對應於第二集合的詮釋資料符號,所述第二集合的詮釋資料符號是產生自將所述至少一詮釋資料符號增加至所述第一集合的詮釋資料符號。
28.如配置26的方法,其中:所述圖形包括從第一節點至第二節點的一邊緣;所述第一節點對應於第一集合的詮釋資料符號;所述邊緣是被標示所述第一集合的詮釋資料符號中的至少一詮釋資料符號;以及所述第二節點對應於第二集合的詮釋資料符號,所述第二集合的詮釋資料符號是從所述第一集合的詮釋資料符號移除所述至少一詮釋資料符號所產生的。
29.一種用於識別輸入型態之電腦實施的方法,其包括以下的動作:處理一策略規則以識別至少一輸入型態,其中:所述策略規則是包括在至少一輸入上的至少一條件;所述至少一輸入型態是包括對應於所述至少一輸入的至少一詮釋資料標籤;以及所述至少一詮釋資料標籤是滿足在所述至少一輸入上的所述至少一條件。
30.如配置29的方法,其中:所述至少一詮釋資料標籤包括一集合的詮釋資料符號的一子集合;以及處理所述策略規則以識別所述至少一輸入型態是包括從所述集合的詮釋資料符號選擇所述子集合。
31.如配置30的方法,其中:從所述集合的詮釋資料符號選擇所述子集合是包括識別真值至所述集合的詮釋資料符號中的詮釋資料符號的一指派;1至一詮釋資料符號的一指派是指出所述詮釋資料符號是在所述子集合中;以及0至一詮釋資料符號的一指派是指出所述詮釋資料符號並不在所述子集合中。
32.如配置31的方法,其中:識別真值至所述詮釋資料符號的指派是包括識別滿足一或多個限制的一指派。
33.如配置32的方法,其中:識別滿足所述一或多個限制的所述指派是包括轉換所述一或多個限制至析取範式;以及所述指派是對應於所述一或多個具有析取範式的限制的一析取項。
34.如配置32的方法,其中:識別滿足所述一或多個限制的所述指派是包括依照所述一或多個限制來解出複數個分別對應於所述詮釋資料符號的布林變數。
35.如配置32的方法,其中:所述策略規則的所述至少一條件是參照至少一在所述集合的詮釋資料符號中的詮釋資料符號;以及所述一或多個限制包括根據所述至少一條件的至少一限制。
36.如配置35的方法,其中:所述至少一條件包括所述至少一詮釋資料符號的存在(或分別是不存在);以及所述至少一限制是指派1(或分別是0)至所述至少一詮釋資料符號。
37.如配置32的方法,其中:所述至少一輸入是和根據複數個詮釋資料類型所建構的一詮釋資料類型相關的;以及所述一或多個限制包括指出若1被指派到所述複數個詮釋資料類型的一詮釋資料類型的至少一詮釋資料符號,則0被指派到所述複數個詮釋資料類型的其它每一個詮釋資料類型的每一個詮釋資料符號的一限制。
38.如配置32的方法,其中:所述至少一輸入包括第一輸入;所述至少一策略規則進一步包括第二輸入;所述第一輸入是和第一子集合的詮釋資料符號相關的;所述第二輸入是和第二子集合的詮釋資料符號相關的,所述第二子集合的詮釋資料符號是與所述第一子集合的詮釋資料符號不相交的;所述一或多個限制包括用於所述第一輸入的第一限制,所述第一限制是指派0給在所述第二子集合的詮釋資料符號中的每一個詮釋資料符號;以及所述一或多個限制進一步包括用於所述第二輸入的第二限制,所述第二限制是指派0給在所述第一子集合的詮釋資料符號中的每一個詮釋資料符號。
39.一種用於處理詢問的輸入型態之電腦實施的方法,其包括以下的動作:匹配所述詢問的輸入型態與一列表的具體規則,其中:所述詢問的輸入型態是包括一列表的詮釋資料標籤<L0, …, LS-1>其分別對應於一列表的輸入;所述列表的具體規則的每一個具體規則是包括一列表的詮釋資料標籤<M0, …, MS-1>,其分別對應於所述列表的輸入;所述列表的具體規則是根據字典順序來排序的,所述字典順序是藉由在詮釋資料標籤上的一所選的排序所引起的;匹配所述詢問的輸入型態與所述列表的具體規則是包括根據所述字典順序來比較<L0, …, LS-1>與一所選的具體規則R0;以及根據所述字典順序使得R小於R0的具體規則的一數量R是匹配根據所述字典順序使得R大於R0的具體規則的一數量R。
40.如配置39的方法,其中:每一個詮釋資料標籤被編碼為一位元串;以及在詮釋資料標籤上所選的排序是根據在位元串上的一所選的排序。
41.一種包括電路系統及/或一或多個藉由可執行的指令而被程式化的處理器之系統,其中所述電路系統及/或所述一或多個被程式化的處理器是被配置以執行如配置1-40的任一個的方法。
42.至少一種電腦可讀取的媒體,其已經於其上儲存用於如配置41的電路系統的至少一網表。
43.至少一種電腦可讀取的媒體,其已經於其上儲存至少一硬體說明,當被合成時,其產生如配置42的所述網表。
44.至少一種電腦可讀取的媒體,其已經於其上儲存如配置41的所述可執行的指令。
用於圖3的例子中的所述signalSafety策略的舉例說明的碼是被提供在以下。
module traffic_example.traffic:
/*
* Traffic light safety protocol
*/
import:
coreguard.riscv
metadata:
// Metadata to represent light states
data (Data) NS_T<fixed> = NS_Red
| NS_Yellow
| NS_Green
data (Data) EW_T<fixed> = EW_Red
| EW_Yellow
| EW_Green
// Metadata to label code functions
data (Instruction) Transition_T<fixed> = GoGreenNS
| GoGreenEW
| GoRedNS
| GoRedEW
| GoYellowNS
| GoYellowEW
// Field declarations
field env : Data
field code : Instruction
policy:
signalSafety = transitions & isaExclusions
transitions =
rule_1 (code == [+GoGreenNS], env == [NS_Red, EW_Red] -> env = {NS_Green, EW_Red})
^ rule_2 (code == [+GoGreenEW], env == [NS_Red, EW_Red] -> env = {NS_Red, EW_Green})
^ rule_3 (code == [+GoYellowNS], env == [NS_Green, EW_Red] -> env = {NS_Yellow, EW_Red})
^ rule_4 (code == [+GoYellowEW], env == [NS_Red, EW_Green] -> env = {NS_Red, EW_Yellow})
^ rule_5 (code == [+GoRedNS], env == [NS_Yellow, EW_Red] -> env = {NS_Red, EW_Red})
^ rule_6 (code == [+GoRedEW], env == [NS_Red, EW_Yellow] -> env = {NS_Red, EW_Red})
^ rule_self(code == [-GoGreenNS, -GoGreenEW,
-GoYellowNS, -GoYellowEW,
-GoRedNS, -GoRedEW],
env == _ -> env = env)
^ rule_8 (code == [+GoGreenNS], env == [+EW_Green] ->
fail "Safety Violation – East-West Lights Still Green")
^ rule_9 (code == [+GoGreenNS], env == [+EW_Yellow] ->
fail "Safety Violation – East-West Lights Still Yellow")
^ rule_10 (code == [+GoYellowNS], env == [+EW_Green] ->
fail "Safety Violation – East-West Lights Still Green")
^ rule_11 (code == [+GoYellowNS], env == [+EW_Yellow] ->
fail "Safety Violation – East-West Lights Still Yellow")
^ rule_12 (code == [+GoGreenEW], env == [+NS_Green] ->
fail "Safety Violation – North-South Lights Still Green")
^ rule_13 (code == [+GoGreenEW], env == [+NS_Yellow] ->
fail "Safety Violation – North-South Lights Still Yellow")
^ rule_14 (code == [+GoYellowEW], env == [+NS_Green] ->
fail "Safety Violation – North-South Lights Still Green")
^ rule_15 (code == [+GoYellowEW], env == [+NS_Yellow] ->
fail "Safety Violation – North-South Lights Still Yellow")
^ rule_16 (code == _ , env == [NS_Yellow, EW_Green] ->
fail "Safety Violation – Neither Set of Lights Is Red")
^ rule_17 (code == _ , env == [NS_Green, EW_Yellow] ->
fail "Safety Violation – Neither Set of Lights Is Red")
^ rule_18 (code == _ , env == [NS_Green, EW_Green] ->
fail "Safety Violation – Neither Set of Lights Is Red")
^ rule_19 (code == _ , env == [NS_Yellow, EW_Yellow] ->
fail "Safety Violation – Neither Set of Lights Is Red")
require:
init application.code.function.go_green_EW {GoGreenEW}:(code)
init application.code.function.go_green_NS {GoGreenNS}:(code)
init application.code.function.go_yellow_EW {GoYellowEW}:(code)
init application.code.function.go_yellow_NS {GoYellowNS}:(code)
init application.code.function.go_red_EW {GoRedEW}:(code)
init application.code.function.go_red_NS {GoRedNS}:(code)
init ISA.RISCV.env {NS_Red, EW_Red}:(env)
圖11是概要地展示一舉例說明的電腦1100,本揭露內容的任何特點都可被實施在其上。在圖11所示的例子中,所述電腦1100包含一處理單元1101,其具有一或多個處理器、以及一電腦可讀取的儲存媒體1102,其例如可包含揮發性及/或非揮發性記憶體。所述記憶體1102可以儲存一或多個指令,以程式化所述處理單元1101以執行在此所述的功能的任一個。除了所述系統記憶體1102以外,所述電腦1100亦可包含其它類型的電腦可讀取的媒體,例如儲存體1105(例如,一或多個磁碟機)。所述儲存體1105可以儲存一或多個應用程式及/或應用程式所用的資源(例如,軟體函式庫),其可被載入所述記憶體1102中。
所述電腦1100可以具有一或多個輸入裝置及/或輸出裝置,例如在圖11中所描繪的輸出裝置1106以及輸入裝置1107。這些裝置譬如可被使用來呈現一使用者介面。可被用來呈現一使用者介面的輸出裝置的例子包含印表機、顯示器螢幕、以及用於視覺輸出的其它裝置、揚聲器及其它用於可聽見的輸出的裝置、點字顯示器及其它用於觸覺輸出的裝置等等。可被使用於一使用者介面的輸入裝置的例子包含鍵盤、指向裝置(例如,滑鼠、觸控板、以及數位化平板電腦)、麥克風等等。譬如,所述輸入裝置1107可包含一用於捕捉音訊信號的麥克風,並且所述輸出裝置1106可包含一用於視覺上顯現辨識的文字的顯示器螢幕、及/或一用於可聽見地顯現辨識的文字的揚聲器。
在圖11的例子中,所述電腦1100亦可包含一或多個網路介面(例如,網路介面1110)來致能經由各種的網路(例如,通訊網路1120)的通訊。網路的例子包含本地區域網路(例如,企業網路)、廣域網路(例如,網際網路)等等。此種網路可以是基於任何適當的技術,並且可以根據任何適當的協定來運作。譬如,此種網路可包含無線的網路及/或有線的網路(例如,光纖網路)。
至此已經敘述至少一實施例的數個特點,所體認到的是各種的改變、修改、以及改善都將會輕易地為熟習此項技術者所思及。此種改變、修改、以及改善欲在本揭露內容的精神及範疇之內。於是,先前的說明及圖式只是舉例而已。
上述本揭露內容的實施例可以用許多方式的任一種來加以實施。例如,所述實施例可以利用硬體、軟體、或是其之一組合來加以實施。當用軟體來加以實施時,所述軟體程式碼可以在任何適當的處理器或是一組處理器上加以執行,而不論其是否被設置在單一電腦中、或是被分散在多個電腦之間。
再者,在此概述的各種方法或程序都可被編碼為軟體,其可在一或多個處理器上執行,所述處理器執行各種作業系統或平台的任一種。此種軟體可以利用一些適當的程式語言及/或程式化工具(其包含腳本語言及/或腳本工具)的任一種來加以撰寫。在某些實例中,此種軟體可被編譯為可執行的機器語言程式碼或是中間的程式碼,其在一框架或是虛擬機器上加以執行。額外或替代的是,此種軟體可被直譯。
在此揭露的技術可以被體現為一非暫態的電腦可讀取的媒體(或是多個非暫態的電腦可讀取的媒體)(例如,一電腦記憶體、一或多個軟碟片、壓縮碟片、光碟、磁帶、快閃記憶體、在現場可程式化的閘陣列或其它半導體裝置中的電路配置、或是其它實體的電腦可讀取的媒體),其被編碼一或多個程式,當所述程式在一或多個處理器上執行時,其執行實施以上論述的本揭露內容的各種實施例的方法。所述一或多個電腦可讀取的媒體可以是可攜式的,使得一或多個被儲存於其上的程式可被載入到一或多個不同的電腦或其它處理器上,以實施如上所論述的本揭露內容的各種特點。
所述術語「程式」或「軟體」在此被使用來指稱任意類型的電腦程式碼或是電腦可執行的指令集,其可被採用來程式化一或多個處理器以實施如上所論述的本揭露內容的各種特點。再者,應該體認到的是,根據此實施例的一特點,一或多個電腦程式(當被執行時,其執行本揭露內容的方法)並不需要存在於單一電腦或處理器上,而是可以用一種模組化方式被分散在一些不同的電腦或處理器之間以實施本揭露內容的各種特點。
電腦可執行的指令可以具有許多形式(例如是程式模組),其藉由一或多個電腦或其它裝置來加以執行。程式模組可包含常式、程式、物件、構件、資料結構等等,其執行特定的任務、或是實施特定的抽象資料類型。所述程式模組的功能可以根據在各種實施例中的需要來加以組合或分散。
再者,資料結構可以用任何適當的形式而被儲存在電腦可讀取的媒體中。為了圖示的簡化起見,資料結構可能被展示以具有透過在所述資料結構中的位置相關的欄位。此種關係同樣地可以藉由指定針對於所述欄位的儲存至一電腦可讀取的媒體中的位置來加以達成,所述位置傳達所述欄位是如何相關的。然而,任何適當的機制都可被用來關聯在一資料結構的欄位中的資訊,其包含透過指標、標籤、或是其它資料元素是如何相關的機制的使用。
本揭露內容的各種特點及方面都可以單獨、用兩個或多個的任意組合、或是用各種未明確地在先前敘述的實施例中論述的配置來加以利用,並且因此並不受限於在先前的說明中闡述或是在圖式中描繪的構件的細節及配置。例如,在一實施例中敘述的特點可以用任何方式與在其它實施例中敘述的特點加以組合。
再者,在此揭露的技術可以被體現為方法,所述方法的例子已經加以提供。被執行作為一種方法的部分的動作可以用任何適當的方式來加以排序。於是,其中動作是以一不同於所描繪的順序而被執行的實施例可被建構,其可以包含同時執行某些動作,即使所述動作在舉例說明的實施例中被展示為順序的動作。
例如是「第一」、「第二」、「第三」等等的序數詞在所述申請專利範圍中用以修飾一申請專利範圍元件的使用本身並不意味著一申請專利範圍元件相對於另一申請專利範圍元件的任何優先權、先後次序、或是順序、或是一種方法的動作被執行所在的時間順序,而是僅僅被使用作為標籤以區別具有某一名稱的一申請專利範圍元件與另一具有相同名稱(但是為了所述序數詞的使用)的元件,來區別所述申請專利範圍元件而已。
再者,在此使用的措辭及術語是為了說明之目的,因而不應該被視為限制性的。「包含」、「包括」、「具有」、「內含」、「涉及」、「根據」、「依據」、「編碼」、以及其之變化在此的使用意謂涵蓋被列表在其後的項目及其等同物與額外的項目。
100:硬體系統
110:主機處理器
112:寫入互鎖
115:系統匯流排
120:應用程式記憶體
125:詮釋資料記憶體
130:唯讀記憶體(ROM)
135:週邊裝置
140:標籤處理硬體
142:標籤映射表
144:規則快取
146:標籤暫存器檔
150:策略處理器
200:軟體系統
205:編譯器
210:連結器
215:載入器
220:策略編譯器
225:策略連結器
230:除錯器
300:有限狀態機(FSM)
400:程序
405:動作
410:動作
415:動作
420:動作
425:動作
500:程序
505:動作
510:動作
515:動作
520:動作
525:動作
600:圖形
700:程序
705:動作
710:動作
715:動作
720:動作
800:程序
805:動作
810:動作
815:動作
900:程序
905:動作
910:動作
915:動作
920:動作
1000:配置
1100:電腦
1101:處理單元
1102:電腦可讀取的儲存媒體
1105:儲存體
1106:輸出裝置
1107:輸入裝置
1110:網路介面
1120:通訊網路
[圖1]是展示根據某些實施例的一用於實行策略的舉例說明的硬體系統100。
[圖2]是展示根據某些實施例的一用於實行策略的舉例說明的軟體系統200。
[圖3]是展示根據某些實施例的一舉例說明的有限狀態機(FSM)300。
[圖4]是展示根據某些實施例的一舉例說明的可被用來識別輸入型態的程序400。
[圖5]是展示根據某些實施例的一舉例說明的用於解析詮釋資料標籤成為二進位表示的程序500。
[圖6]是展示根據某些實施例的一舉例說明的圖形600,其可被用來解析詮釋資料標籤成為二進位表示。
[圖7]是展示根據某些實施例的一舉例說明的用於適應性解析詮釋資料標籤成為二進位表示的程序700。
[圖8]是展示根據某些實施例的一舉例說明的用於解析一批次的輸入型態的程序800。
[圖9]是展示根據某些實施例的一舉例說明的用於解析一批次的輸入型態的程序900。
[圖10]是展示根據某些實施例的一舉例說明的具體規則的配置1000。
[圖11]是概要地展示本揭露內容的任何特點可被實施在其上的一舉例說明的電腦1100。
800:程序
805:動作
810:動作
815:動作
Claims (44)
- 一種用於解析輸入型態成為二進位表示之電腦實施的方法,其包括以下動作: 識別複數個輸入型態,其中所述複數個輸入型態中的一輸入型態是包括一詮釋資料標籤; 選擇用於複數個變數的複數個個別的值,其中所述複數個變數是包括對應於所述輸入型態的所述詮釋資料標籤的一變數;以及 根據所述變數的所述個別的值來獲得所述詮釋資料標籤的二進位表示。
- 如請求項1之方法,其中: 所述方法進一步包括建構分別對應於所述複數個輸入型態的複數個限制的動作; 所述複數個限制中之一限制是對應於包括所述詮釋資料標籤的所述輸入型態; 所述限制是參照對應於所述詮釋資料標籤的一變數;以及 選擇用於所述複數個變數的所述複數個個別的值是包括依照所述複數個限制來解出所述複數個變數,以獲得所述複數個個別的值。
- 如請求項2之方法,其中: 所述變數包括第一變數; 所述限制進一步參照所述複數個變數的第二變數; 所述限制包括相關所述第一變數以及所述第二變數的條件。
- 如請求項3之方法,其中: 所述條件指出所述第二變數匹配包括施加所選雜湊函數的第一表達式至包括所述第一變數的第二表達式。
- 如請求項4之方法,其中: 所述方法進一步包括在規則快取中儲存用於具有所述至少一輸入型態的具體規則的項目的動作;以及 所述項目包括所述第二變數的所述個別的值的至少一部分。
- 如請求項5之方法,其中: 所述規則快取包括1級(L1)快取以及2級(L2)快取; 所述L1快取具有位址空間是小於所述L2快取的位址空間; 所述項目包括第一項目; 所述方法進一步包括以下動作: 根據所述第二變數的所述個別的值來獲得第一位址,其中所述第一項目被儲存在所述L1快取中的第一位址處; 根據所述第二變數的所述個別的值來獲得第二位址;以及 在所述L2快取中的所述第二位址處儲存用於所述具體規則的第二項目。
- 如請求項2之方法,其中: 所述變數包括第一變數; 所述複數個變數進一步包括複數個第二變數; 所述限制包括第一限制; 所述複數個變數是進一步依照第二限制而被解出,所述第二限制指出所述複數個第二變數具有成對不同的值。
- 如請求項2之方法,其中: 所述輸入型態包括第一輸入型態; 所述方法進一步包括識別第二輸入型態,所述第二輸入型態不是所述複數個輸入型態的部分; 所述詮釋資料標籤包括第一詮釋資料標籤; 所述第二輸入型態包括第二詮釋資料標籤; 所述變數包括第一變數; 所述複數個變數進一步包括對應於所述第二詮釋資料標籤的第二變數; 所述複數個變數進一步包括複數個第三變數; 所述限制包括第一限制; 所述複數個變數是進一步依照第二限制而被解出,所述第二限制指出所述複數個第二變數並沒有將包括施加所選雜湊函數的第一表達式匹配至包括所述第二變數的第二表達式。
- 如請求項2之方法,其中: 識別複數個輸入型態是包括識別至少一觸發在待被實行的策略中的符號規則的輸入型態。
- 如請求項9之方法,其中: 所述至少一輸入型態是對應於將被容許的指令。
- 如請求項2之方法,其中: 識別複數個輸入型態是包括識別至少一具有高於所選的臨界值的優先等級的輸入型態。
- 如請求項1之方法,其中: 選擇用於所述複數個變數的所述複數個個別的值是包括利用最佳化技術來選擇所述複數個個別的值。
- 如請求項12之方法,其中: 所述複數個個別的值包括複數個個別的最終值;以及 利用所述最佳化技術以選擇所述複數個個別的值是包括: 隨機地選擇用於所述複數個變數的複數個個別的中間的值;以及 分析所述複數個個別的中間的值。
- 如請求項13之方法,其中: 所述複數個變數是分別對應於複數個詮釋資料標籤; 所述複數個詮釋資料標籤包括所述輸入型態的所述詮釋資料標籤;以及 分析所述複數個個別的中間的值是包括: 根據所述複數個個別的中間的值來獲得用於所述複數個詮釋資料標籤的複數個個別的中間的二進位表示; 用所述複數個個別的中間的二進位表示來取代所述複數個詮釋資料標籤,以解析所述複數個輸入型態成為二進位形式; 判斷在具有二進位形式的所述複數個輸入型態中是否有至少一衝突。
- 如請求項14之方法,其中: 判斷在二進位形式的所述複數個輸入型態中是否有至少一衝突是包括: 施加一雜湊函數至二進位形式的第一輸入型態以獲得第一雜湊; 施加所述雜湊函數至二進位形式的第二輸入型態以獲得第二雜湊;以及 比較所述第一雜湊以及所述第二雜湊。
- 如請求項13之方法,其中: 第一分數是藉由分析所述複數個個別的中間的值來加以獲得;以及 利用所述最佳化技術來選擇所述複數個個別的值進一步包括: 隨機地選擇對於所述複數個個別的中間的值的修改;以及 分析施加所述修改至所述複數個個別的中間的值的結果,藉此獲得第二分數。
- 如請求項16之方法,其中: 利用所述最佳化技術來選擇所述複數個個別的值進一步包括根據所述第一分數、所述第二分數、以及熱度來判斷接受或拒絕所述修改。
- 如請求項17之方法,其中: 所述最佳化技術包括複數個疊代; 利用所述最佳化技術來選擇所述複數個個別的值進一步包括: 初始化所述熱度至正值;以及 在所述複數個疊代的一或多個疊代降低所述熱度。
- 一種用於解析詮釋資料標籤成為二進位表示之電腦實施的方法,其包括以下動作: 在字典中查找詮釋資料標籤,所述字典包括複數個項目,所述複數個項目映射詮釋資料標籤至個別的二進位表示; 若所述詮釋資料標籤匹配在所述字典中的一項目,則獲得所述匹配的項目將所述詮釋資料標籤映射到的一個二進位表示;以及 若所述詮釋資料標籤並不在所述字典中的任何項目,則產生一個新的二進位表示。
- 如請求項19之方法,其中: 所述詮釋資料標籤並不匹配在所述字典中的一項目;以及 所述方法進一步包括將一項目增加至所述字典的動作,所述項目是將所述詮釋資料標籤映射至所述新的二進位表示。
- 如請求項19之方法,其中: 所述方法進一步包括維持計數器的動作,所述計數器是計數已經產生的二進位表示的數量;以及 所述新的二進位表示包括代表所述計數器的值的二進位串。
- 如請求項19之方法,其中: 所述詮釋資料標籤包括一或多個詮釋資料符號的一列表。
- 如請求項22之方法,其中: 一或多個詮釋資料符號的所述列表是根據詮釋資料符號的一所選的排序來加以定次序。
- 如請求項22之方法,其進一步包括以下的動作: 當一或多個策略被評估時,增量地將所述一或多個詮釋資料符號增加至所述列表,所述一或多個策略是參照所述一或多個詮釋資料符號。
- 如請求項19之方法,其中: 所述字典包括雜湊表;以及 在所述字典中查找所述詮釋資料標籤是包括: 施加雜湊函數至所述詮釋資料標籤;以及 若所述詮釋資料標籤被雜湊至非空的桶,則判斷所述詮釋資料標籤是否匹配在所述非空的桶中的一項目。
- 如請求項19之方法,其中: 所述字典包括圖形; 在所述字典中的所述複數個項目包括在所述圖形中的複數個節點;以及 在所述字典中查找所述詮釋資料標籤是包括走訪所述圖形,以識別匹配所述詮釋資料標籤的節點。
- 如請求項26之方法,其中: 所述圖包括從第一節點至第二節點的邊緣; 所述第一節點對應於第一集合的詮釋資料符號; 所述邊緣是用不在所述第一集合的詮釋資料符號中的至少一詮釋資料符號而被標示;以及 所述第二節點對應於第二集合的詮釋資料符號,所述第二集合的詮釋資料符號是從將所述至少一詮釋資料符號增加至所述第一集合的詮釋資料符號所產生的。
- 如請求項26之方法,其中: 所述圖形包括從第一節點至第二節點的一邊緣; 所述第一節點對應於第一集合的詮釋資料符號; 所述邊緣是用所述第一集合的詮釋資料符號中的至少一詮釋資料符號而被標示;以及 所述第二節點對應於第二集合的詮釋資料符號,所述第二集合的詮釋資料符號是從所述第一集合的詮釋資料符號移除所述至少一詮釋資料符號所產生的。
- 一種用於識別輸入型態之電腦實施的方法,其包括以下的動作: 處理一策略規則以識別至少一輸入型態,其中: 所述策略規則是包括在至少一輸入上的至少一條件; 所述至少一輸入型態是包括對應於所述至少一輸入的至少一詮釋資料標籤;以及 所述至少一詮釋資料標籤是滿足在所述至少一輸入上的所述至少一條件。
- 如請求項29之方法,其中: 所述至少一詮釋資料標籤包括一集合的詮釋資料符號的一子集合;以及 處理所述策略規則以識別所述至少一輸入型態是包括從所述集合的詮釋資料符號選擇所述子集合。
- 如請求項30之方法,其中: 從所述集合的詮釋資料符號選擇所述子集合是包括識別真值至所述集合的詮釋資料符號中的詮釋資料符號的指派; 1至一詮釋資料符號的指派是指出所述詮釋資料符號是在所述子集合中;以及 0至一詮釋資料符號的指派是指出所述詮釋資料符號並不在所述子集合中。
- 如請求項31之方法,其中: 識別真值至所述詮釋資料符號的指派是包括識別滿足一或多個限制的一指派。
- 如請求項32之方法,其中: 識別滿足所述一或多個限制的所述指派是包括轉換所述一或多個限制至析取範式;以及 所述指派是對應於所述一或多個析取範式的限制的一析取項。
- 如請求項32之方法,其中: 識別滿足所述一或多個限制的所述指派是包括依照所述一或多個限制來解出複數個布林變數,所述複數個布林變數分別對應於所述詮釋資料符號。
- 如請求項32之方法,其中: 所述策略規則的所述至少一條件是參照在所述集合的詮釋資料符號中的至少一詮釋資料符號;以及 所述一或多個限制包括根據所述至少一條件的至少一限制。
- 如請求項35之方法,其中: 所述至少一條件包括所述至少一詮釋資料符號的存在(或分別是不存在);以及 所述至少一限制指派1(或分別是0)至所述至少一詮釋資料符號。
- 如請求項32之方法,其中: 所述至少一輸入是和根據複數個詮釋資料類型所建構的一詮釋資料類型相關的;以及 所述一或多個限制包括一限制,該限制指出若1被指派到所述複數個詮釋資料類型的一詮釋資料類型的至少一詮釋資料符號,則0被指派到所述複數個詮釋資料類型的其它每一個詮釋資料類型的每一個詮釋資料符號。
- 如請求項32之方法,其中: 所述至少一輸入包括第一輸入; 所述至少一策略規則進一步包括第二輸入; 所述第一輸入是和第一子集合的詮釋資料符號相關的; 所述第二輸入是和第二子集合的詮釋資料符號相關的,所述第二子集合的詮釋資料符號是與所述第一子集合的詮釋資料符號不相交的; 所述一或多個限制包括用於所述第一輸入的第一限制,所述第一限制是指派0給在所述第二子集合的詮釋資料符號中的每一個詮釋資料符號;以及 所述一或多個限制進一步包括用於所述第二輸入的第二限制,所述第二限制是指派0給在所述第一子集合的詮釋資料符號中的每一個詮釋資料符號。
- 一種電腦實施的方法,其包括以下的動作: 匹配一詢問的輸入型態與一列表的具體規則,其中: 所述詢問的輸入型態是包括一列表的詮釋資料標籤<L0 , …, LS-1 >,其分別對應於一列表的輸入; 所述列表的具體規則的每一個具體規則是包括一列表的詮釋資料標籤<M0 , …, MS-1 >,其分別對應於所述列表的輸入; 所述列表的具體規則是根據字典順序來排序的,所述字典順序是藉由在詮釋資料標籤上的一所選的排序所引起的; 匹配所述詢問的輸入型態與所述列表的具體規則是包括根據所述字典順序來比較<L0 , …, LS-1 >與一所選的具體規則R0 ;以及 根據所述字典順序使得R小於R0 的具體規則的一數量R是匹配根據所述字典順序使得R大於R0 的具體規則的一數量R。
- 如請求項39之方法,其中: 每一個詮釋資料標籤被編碼為一位元串;以及 在詮釋資料標籤上所選的排序是根據在位元串上的一所選的排序。
- 一種包括電路系統及/或一或多個藉由可執行的指令而被程式化的處理器之系統,其中所述電路系統及/或所述一或多個被程式化的處理器是被配置以執行如請求項1-40的任一項的方法。
- 至少一種電腦可讀取的媒體,其已經於其上儲存用於如請求項41之電路系統的至少一網表。
- 至少一種電腦可讀取的媒體,其已經於其上儲存至少一硬體描述,當被合成時,其產生如請求項42的所述網表。
- 至少一種電腦可讀取的媒體,其已經於其上儲存如請求項41的所述可執行的指令。 [1] 相同的分析可適用於一複合的策略,其中成分策略集體利用12個不同的詮釋資料符號。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962931635P | 2019-11-06 | 2019-11-06 | |
US62/931,635 | 2019-11-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202121217A true TW202121217A (zh) | 2021-06-01 |
Family
ID=73654887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109138687A TW202121217A (zh) | 2019-11-06 | 2020-11-05 | 用於改進詮釋資料處理效率的系統和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220398312A1 (zh) |
TW (1) | TW202121217A (zh) |
WO (1) | WO2021092138A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235176B2 (en) | 2015-12-17 | 2019-03-19 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
WO2019152805A1 (en) | 2018-02-02 | 2019-08-08 | Dover Microsystems, Inc. | System and method for translating mapping policy into code |
SG11202007272QA (en) | 2018-02-02 | 2020-08-28 | Charles Stark Draper Laboratory Inc | Systems and methods for policy execution processing |
TW201945971A (zh) | 2018-04-30 | 2019-12-01 | 美商多佛微系統公司 | 用於檢查安全性能的系統和方法 |
WO2020097177A1 (en) | 2018-11-06 | 2020-05-14 | Dover Microsystems, Inc. | Systems and methods for stalling host processor |
US11841956B2 (en) | 2018-12-18 | 2023-12-12 | Dover Microsystems, Inc. | Systems and methods for data lifecycle protection |
US12079197B2 (en) | 2019-10-18 | 2024-09-03 | Dover Microsystems, Inc. | Systems and methods for updating metadata |
US20230029331A1 (en) * | 2021-07-26 | 2023-01-26 | Microsoft Technology Licensing, Llc | Dynamically allocatable physically addressed metadata storage |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019152805A1 (en) * | 2018-02-02 | 2019-08-08 | Dover Microsystems, Inc. | System and method for translating mapping policy into code |
-
2020
- 2020-11-05 WO PCT/US2020/059057 patent/WO2021092138A1/en active Application Filing
- 2020-11-05 US US17/774,799 patent/US20220398312A1/en active Pending
- 2020-11-05 TW TW109138687A patent/TW202121217A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021092138A1 (en) | 2021-05-14 |
US20220398312A1 (en) | 2022-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202121217A (zh) | 用於改進詮釋資料處理效率的系統和方法 | |
US11977613B2 (en) | System and method for translating mapping policy into code | |
US12079197B2 (en) | Systems and methods for updating metadata | |
US20220092173A1 (en) | Systems and methods for metadata classification | |
EP3746922B1 (en) | Systems and methods for transforming instructions for metadata processing | |
US11875180B2 (en) | Systems and methods for stalling host processor | |
US11841956B2 (en) | Systems and methods for data lifecycle protection | |
EP3881190A1 (en) | Systems and methods for metadata encoding | |
US11797398B2 (en) | Systems and methods for checking safety properties | |
US20220129343A1 (en) | Systems and methods for reducing exception latency | |
WO2023034586A1 (en) | Systems and methods for on-demand loading of metadata | |
US20240296122A1 (en) | Systems and methods for caching metadata | |
US12124566B2 (en) | Systems and methods for metadata encoding | |
WO2023212149A1 (en) | Systems and methods for enforcing encoded policies | |
US20240354412A1 (en) | Systems and methods for on-demand loading of metadata |