DE202017007536U1 - Inductive equivalence in instruction machining - Google Patents
Inductive equivalence in instruction machining Download PDFInfo
- Publication number
- DE202017007536U1 DE202017007536U1 DE202017007536.9U DE202017007536U DE202017007536U1 DE 202017007536 U1 DE202017007536 U1 DE 202017007536U1 DE 202017007536 U DE202017007536 U DE 202017007536U DE 202017007536 U1 DE202017007536 U1 DE 202017007536U1
- Authority
- DE
- Germany
- Prior art keywords
- function
- processor
- equivalence
- candidate
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000001939 inductive effect Effects 0.000 title description 2
- 238000003754 machining Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 79
- 238000012545 processing Methods 0.000 claims abstract description 54
- 238000011156 evaluation Methods 0.000 claims abstract description 5
- 230000001131 transforming effect Effects 0.000 claims abstract 2
- 230000006870 function Effects 0.000 claims description 295
- 230000015654 memory Effects 0.000 claims description 28
- 238000013519 translation Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 2
- 239000000243 solution Substances 0.000 description 69
- 230000008569 process Effects 0.000 description 39
- 238000012360 testing method Methods 0.000 description 28
- 238000013500 data storage Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 7
- 238000013468 resource allocation Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 241000207875 Antirrhinum Species 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 235000000332 black box Nutrition 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Abstract
Prozessor, ausgebildet zum Ausführen eines Verfahrens, das die folgenden Schritte aufweist:
Abrufen eines Kandidaten-Quellcodes mit einer Kandidaten-Funktion aus einem Datenspeicher;
Zugreifen auf eine Ersatzfunktion aus dem Datenspeicher;
Zugreifen auf ein Niveau der Hypothesenstärke und eine Ressourcenbegrenzung, wobei das Niveau der Hypothesenstärke durch erfolgreiches Abschließen einer Anzahl von Äquivalenzbewertungen bestimmt wird;
automatisches Bestimmen der Äquivalenz zwischen der Kandidaten-Funktion und der Ersatzfunktion, wobei der Prozessor die Anzahl von Äquivalenzbewertungen ausführt, indem er Eingaben durch eine Vielzahl von Verarbeitungsoperationen laufen lässt und die entsprechenden Ausgaben vergleicht, bis entweder das Niveau der Hypothesenstärke oder die Ressourcenbegrenzung erreicht ist;
wenn die Äquivalenz durch Erreichen des Niveaus der Hypothesenstärke bestimmt wird, automatisches Bereitstellen von Indizien der Äquivalenz, die der Kandidaten-Funktion und der Ersatzfunktion zugeordnet sind;
wenn die Indizien bereitgestellt werden, automatisches Transformieren des Kandidaten-Quellcodes, aufweisend das Ersetzen der Kandidaten-Funktion durch die Ersatzfunktion;
Ausgeben des veränderten Kandidaten-Quellcodes; und
Speichern oder anderweitiges Verfügbarmachen des veränderten Quellcodes für zukünftigen Zugriff und/oder Verarbeitung.
Processor configured to execute a method comprising the following steps:
retrieving candidate source code having a candidate function from a data store;
accessing a surrogate function from the data store;
accessing a hypothesis strength level and a resource constraint, the hypothesis strength level being determined by successfully completing a number of equivalency evaluations;
automatically determining the equivalence between the candidate function and the replacement function, wherein the processor performs the number of equivalence evaluations by running inputs through a plurality of processing operations and comparing the corresponding outputs until either the hypothesis strength level or the resource limit is reached;
if equivalence is determined by reaching the hypothesis strength level, automatically providing indicia of equivalence associated with the candidate function and the surrogate function;
if the indicia are provided, automatically transforming the candidate source code, comprising replacing the candidate function with the replacement function;
outputting the modified candidate source code; and
Store or otherwise make available the modified source code for future access and/or processing.
Description
Gebiet der Offenbarungfield of revelation
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf eine oder mehrere maschinelle Mustererkennung und selektive Bearbeitung.The present disclosure generally relates to one or more pattern recognition and selective editing machines.
Technischer HintergrundTechnical background
Die Entwicklung programmierbarer Maschinen schreitet mit der Weiterentwicklung der Software und der Software-Schreibwerkzeuge voran. Dennoch schreiben Programmierer oft noch immer Software, die bereits geschrieben wurde, sei es aus Zeitgründen, die dem Auffinden und Überprüfen vorhandener Software zugeordnet sind, aus persönlichen Vorlieben, aus Unkenntnis über das Vorhandensein vorhandener Software oder aus anderen Gründen. Infolgedessen weist die Software oft Abschnitte auf, die nicht ideal sind, auch wenn sie funktional äquivalent sind. Frühere Lösungen enthalten „Software Equivalence Checking“, U.S.-Patent-Veröffentlichung 2011/0138362, deren Inhalt hier vollständig durch Bezugnahme aufgenommen wird.The development of programmable machines progresses with the advancement of software and software writing tools. However, programmers often still write software that has already been written, whether for reasons of time associated with finding and verifying existing software, personal preference, ignorance of the existence of existing software, or other reasons. As a result, the software often has sections that are not ideal, even though they are functionally equivalent. Previous solutions include "Software Equivalence Checking," U.S. Patent Publication 2011/0138362, the contents of which are incorporated herein by reference in their entirety.
Compiler und Interpreter wandeln menschenlesbaren Quellcode in maschinenlesbaren Code (z.B. Objektcode, ausführbaren Code, etc.) zur Ausführung um. Compiler können die Auswirkungen vieler Kodierungsprobleme beseitigen, aber nicht alle und nicht immer vollständig. Beispielsweise kann ein Softwarecode, der das Durchlaufen der einzelnen Elemente eines Arrays aufweist, unterschiedliche Leistungsmerkmale aufweisen, wenn der Programmierer das Array nach Zeilenelementen durchläuft und dann die Spalte inkrementiert, oder nach Spaltenelementen und dann die Zeile inkrementiert. Objektcode, wie z. B. ein Assembler, kann Werte unterschiedlich speichern und bei Verwendung einer Technik mehr Verarbeitungsschritte erfordern als bei einer anderen, auch wenn das Endergebnis dasselbe ist. Ebenso kann die Wahl einer bestimmten Sortiermethode je nach den zu sortierenden Daten erhebliche Auswirkungen auf die Leistung haben. Ein Bubble Sort ist beispielsweise effizient, wenn eine relativ kleine Anzahl von Elementen oder eine große Anzahl von Elementen mit nur wenigen Elementen, die nicht in der Sortierreihenfolge sind, sortiert wird. Für die meisten anderen Anwendungen oder Anmeldungen ist der Bubble Sort jedoch wahrscheinlich eine schlechte Wahl.Compilers and interpreters convert human-readable source code into machine-readable code (e.g., object code, executable code, etc.) for execution. Compilers can eliminate the effects of many coding problems, but not all and not always completely. For example, software code that involves iterating through each element of an array may perform differently if the programmer iterates through the array by row elements and then increments the column, or by column elements and then increments the row. object code, such as An assembly language, for example, can store values differently and require more processing using one technique than another, even if the end result is the same. Likewise, the choice of a particular sorting method can have a significant performance impact, depending on the data being sorted. For example, a bubble sort is efficient when sorting a relatively small number of items, or a large number of items with only a few items that are not in the sort order. However, for most other uses or logins, the Bubble Sort is probably a poor choice.
Selbst wenn zwei Softwaresätze jeweils das gleiche Ergebnis liefern, hat nicht jede Software die gleiche Wirkung, z. B. innerhalb einer Anwendung oder eines Softwaremanagementsystems. Software kann Ineffizienzen oder andere unerwünschte Probleme aufweisen. Infolgedessen können Computer oder andere Maschinen, die Software ausführen, nicht optimal arbeiten.Even if two software sets each give the same result, not every software has the same effect, e.g. B. within an application or a software management system. Software may have inefficiencies or other undesirable issues. As a result, computers or other machines running software cannot perform optimally.
Zusammenfassende DarstellungSummary presentation
Bestimmte offenbare Ausführungsformen können SMT-Solver verwenden und können mit Hilfe von „Decision Procedures, An Algorithmic Point of View“, Kroening und Strichman, 2008, ISBN: 978-3-540-74104-6, das hier durch Bezugnahme in seiner Gesamtheit und für alles, was es lehrt, aufgenommen wird, besser verstanden werden. Darüber hinaus können die hier offenbaren Ausführungsformen besser verstanden werden, wenn man die internationale Anmeldung „Machine-Based Instruction Editing“,
Software oder „Code“ bezieht sich auf Anweisungen, die von einem Menschen für die Verwendung durch eine Maschine, wie z. B. einen Mikroprozessor (oder allgemeiner „Prozessor“), geschrieben wurden, sobald der Code in eine maschinenlesbare Form gebracht wurde. Software kann auch in Schaltkreisen (z.B. Logikschaltung, Firmware usw.) verkörpert sein. Software hat viele Eigenschaften, die über die Funktionalität, für die sie geschrieben wurde, oder das Ergebnis, das sie erzeugt, hinausgehen. So benötigt Software beispielsweise Platz, benötigt Maschinenzyklen, wird von Menschen gelesen, die die Software geschrieben haben können oder auch nicht, kann Sicherheitslücken aufweisen, muss möglicherweise aktualisiert werden, muss auf eine andere Plattform portiert werden, und/oder andere Aspekte. Oft steht eine ideale oder bevorzugte Funktion zur Verfügung, die zuvor geprüft, untersucht und als bevorzugt bestimmt worden ist. Als allgemeine Einführung und bei einer Ausführungsform wird eine maschinenbasierte Anweisung bereitgestellt, um automatisch einen Kandidatenfunktions-Quellcode zu identifizieren, zu bestimmen, ob die Kandidatenfunktion (candidate function) funktionell äquivalent (z.B. dasselbe Ergebnis erzeugt) zu einem Vorzugsfunktions-Quellcode ist, der zuvor überprüft und als autorisierter Quellcode bestimmt wurde, und, falls er innerhalb einer bestimmten Hypothesenstärke und/oder Ressourcenbeschränkung äquivalent ist, den Kandidaten-Quellcode in einen Vorzugsquellcode zu verändern, indem die Kandidatenfunktion durch die Vorzugsfunktion (preferred function) ersetzt wird und der veränderte Quellcode gespeichert oder anderweitig für einen zukünftigen Zugriff und/oder eine zukünftige Verarbeitung verfügbar gemacht wird.Software or "code" refers to instructions written by a human for use by a machine such as an a microprocessor (or more generally "processor"), once the code has been put into a machine-readable form. Software may also be embodied in circuitry (eg, logic circuitry, firmware, etc.). Software has many properties that go beyond the functionality it was written to provide or the result it produces. For example, software requires space, requires machine cycles, is read by humans who may or may not have written the software, may have security vulnerabilities, may need to be updated, need to be ported to another platform, and/or other considerations. Often an ideal or preferred function is available that has previously been tested, studied, and determined to be preferred. As a general introduction and in one embodiment, a machine-based instruction is provided to automatically identify candidate function source code, determine whether the candidate function is functionally equivalent (e.g., produces the same result) to a preferred function source code previously checked and determined to be authorized source code, and if equivalent within a given hypothesis strength and/or resource constraint, the candidate Modify source code to preferred source code by replacing the candidate function with the preferred function and storing or otherwise making the modified source code available for future access and/or processing.
Eine „Funktion“, wie sie hier verwendet wird, weist Softwarefunktionen, Unterprogramme, Prozeduren, (maschinenausführbare) Verfahren, Prädikate, Folgen von Anweisungen oder Regeln innerhalb eines größeren Computerprogramms auf, eine Beziehung, die eine Eingabe einer einzelnen Ausgabe gemäß einer Regel zuordnet. Die einzelne Ausgabe kann einen primitiven Datentyp oder einen komplexeren Datentyp wie einen zusammengesetzten oder abstrakten Datentyp aufweisen.A "function" as used herein includes software functions, subprograms, procedures, (machine-executable) methods, predicates, sequences of instructions, or rules within a larger computer program, a relationship that associates an input with a single output according to a rule. The single output can be a primitive data type or a more complex data type such as a composite or abstract data type.
Bei einer Ausführungsform werden zwei Abschnitte des Quellcodes betrachtet: eine Kandidatenfunktion und eine Vorzugsfunktion. Wie hier noch genauer erläutert wird, wird bestimmt, dass die Kandidatenfunktion und die Vorzugsfunktion identische Ergebnisse oder identische Ergebnisse mit mindestens einer vorbestimmten Hypothesenstärke liefern. Beispielsweise ist die Ausgabe der Kandidatenfunktion und der Vorzugsfunktion über alle bereitgestellten Eingaben äquivalent. Bei einer anderen Ausführungsform wird eine logische Gleichung für die Kandidatenfunktion und die Vorzugsfunktion bestimmt und dann einem automatisierten Theorembeweiser, z. B. einem Satisfiability Modulo Theories („SMT“)-Löser, zur Verfügung gestellt, der die Äquivalenz der Funktionen über eine endliche Menge von Eingaben bestimmen kann. Es können jedoch noch Unterschiede bestehen. Die Kandidatenfunktion kann auf einen oder mehrere Faktoren geprüft worden sein, wie Speichereffizienz, Ausführungsleistung, Lesbarkeit, Wartbarkeit, Sicherheit und/oder andere funktionsunabhängige Unterschiede. Bei einer Ausführungsform weist der Unterschied die Programmiersprache auf. Bei einer anderen Ausführungsform weist der Unterschied auf die Kompaktheit des Codes hin. Zum Beispiel kann „C=2A+2B“ gegenüber „C=A+A+B+B“ und C=2*(A+B) gegenüber „C=2A+2B“ bevorzugt werden. Bei einer anderen Ausführungsform weist der Unterschied auf die Lesbarkeit hin. Zum Beispiel kann „RechteckUmfang =2(SeiteA + SeiteB)“ gegenüber „X=2A+2B“ bevorzugt werden. Bei einer anderen Ausführungsform kann der Unterschied die Ressourceneffizienz aufweisen. So kann es z. B. effizienter sein, auf die Gesamtheit eines Datensatzes aus einer entfernten Datenbank zuzugreifen und den Datensatz im Speicher zu halten, auch wenn nicht alle Felder des Datensatzes benötigt werden, als wiederholt auf die entfernte Datenbank zuzugreifen, um nur die benötigten Felder abzurufen. Die vorstehenden Ausführungen stellen eine Einführung in funktionsunabhängige Unterschiede dar, die zwischen einer Kandidatenfunktion und einer Vorzugsfunktion bestehen können, und sind nicht als erschöpfende Liste gedacht.In one embodiment, two sections of source code are considered: a candidate function and a preferred function. As explained in more detail herein, it is determined that the candidate function and the preference function produce identical results or identical results with at least a predetermined hypothesis strength. For example, the output of the candidate function and the preference function is equivalent over all the inputs provided. In another embodiment, a logical equation for the candidate function and the preference function is determined and then submitted to an automated theorem prover, e.g. B. a Satisfiability Modulo Theories ("SMT") solver that can determine the equivalence of the functions over a finite set of inputs. However, differences may still exist. The candidate function may have been checked for one or more factors such as memory efficiency, execution performance, readability, maintainability, security, and/or other function-independent differences. In one embodiment, the difference includes the programming language. In another embodiment, the difference indicates compactness of the code. For example, "C=2A+2B" may be preferred over "C=A+A+B+B" and C=2*(A+B) over "C=2A+2B". In another embodiment, the difference indicates readability. For example, RectanglePerimeter=2(SideA + SideB) may be preferred over X=2A+2B. In another embodiment, the difference may include resource efficiency. So it can e.g. For example, it may be more efficient to access the entirety of a record from a remote database and keep the record in memory even if not all of the record's fields are needed than to access the remote database repeatedly to retrieve only the fields needed. The foregoing is an introduction to role-independent differences that may exist between a candidate role and a preferred role, and is not intended to be an exhaustive list.
Bei einer anderen Ausführungsform unterscheidet sich die Kandidatenfunktion von der Vorzugsfunktion; der Unterschied beschränkt sich jedoch auf Mitglieder (z.B. Eingänge und/oder Ausgänge) innerhalb der gleichen Äquivalenzklasse. Eine Äquivalenzklasse können z.B. die binären Wertepaare (z.B. {(1,0), (TRUE, FALSE), (ON, OFF)}) oder numerische Äquivalente (z.B. {„.1“, „0.1“, „0.1000“}) sein.In another embodiment, the candidate function differs from the preferred function; however, the difference is limited to members (e.g. inputs and/or outputs) within the same equivalence class. An equivalence class can be, for example, the binary value pairs (e.g. {(1,0), (TRUE, FALSE), (ON, OFF)}) or numeric equivalents (e.g. {".1", "0.1", "0.1000"}). .
Wenn die Vorzugsfunktion und die Kandidatenfunktion bei gleicher(n) Eingabe(n) unterschiedliche Ausgaben erzeugen, die jedoch alle in derselben Äquivalenzklasse liegen, können die Vorzugsfunktion und die Kandidatenfunktion als funktional äquivalent bestimmt werden. Wenn beispielsweise die Vorzugsfunktion und die Kandidatenfunktion dieselben Eingaben erhalten und die Vorzugsfunktion „WAHR“ und die Kandidatenfunktion „1“ (eines binären Datentyps) ausgibt, kann eine funktionale Äquivalenz gegeben sein, selbst bei nicht identischen Ausgaben. Wenn jedoch bei gleicher Eingabe die Vorzugsfunktion „EIN“ und die Kandidatenfunktion „0“ ausgibt, ist die Äquivalenz widerlegt.Given the same input(s), if the preferred function and the candidate function produce different outputs, but they are all in the same equivalence class, then the preferred function and the candidate function can be determined to be functionally equivalent. For example, if the preferred function and the candidate function receive the same inputs, and the preferred function outputs TRUE and the candidate function outputs 1 (of a binary data type), then there can be functional equivalence, even if the outputs are not identical. However, if the preferred function returns "ON" and the candidate function returns "0" given the same input, the equivalence is broken.
Bei bestimmten Ausführungsformen, die hier offenbart werden, können die Probleme, die durch frühere Computersysteme und Softwareentwicklung entstanden sind, gemildert werden. Die Computerprogrammierindustrie konnte viele Probleme ignorieren, die mit der begrenzten Verarbeitungs-, Bandbreiten- und Speicherkapazität zusammenhängen. Die Hardware ist immer billiger und kleiner geworden. Die Investitionen, die erforderlich sind, um einen angemessenen Softwarecode, der die Funktion ausführt, für die er entwickelt wurde, in einen effizienten Code zu verwandeln, werden häufig mit Hardware gelöst. Die Verbesserung der Software über ihre Funktionalität hinaus wurde weitgehend aufgegeben zugunsten der Entwicklung einer angemessenen Funktionalität und, sobald dies geschehen ist, des Übergangs zu anderen Aufgaben - ein Kompromiss, der in der Entwicklungspraxis nach dem Stand der Technik leicht akzeptiert wird.In certain embodiments disclosed herein, the problems posed by previous computer systems and software development can be mitigated. The computer programming industry has been able to ignore many of the problems associated with limited processing, bandwidth, and storage capacity. The hardware has become cheaper and smaller. The investments required to turn adequate software code into efficient code that performs the function it was designed to do are often solved in hardware. Improving the software beyond its functionality has largely been abandoned in favor of developing adequate functionality and, once done, moving on to other tasks - a compromise easily accepted in prior art development practice.
In den Anfängen der Programmierung war prägnante Programmierung ein Artefakt der Sprache. Sprachen wie Assembler ließen kaum Möglichkeiten, mehr als das Wesentliche zu tun, um den Prozessor in die Lage zu versetzen, die erforderliche Funktionalität bereitzustellen. Heute gibt es viele funktionale und objektorientierte Sprachen, die den Programmierern reichlich Gelegenheit geben, ihre Programmierung und Dokumentation zu verschönern. Wenn das Programm jedoch seine funktionale Aufgabe ausführt, wird selten mehr als das geboten.In the early days of programming, concise programming was an artifact of language. Languages like assembler left few opportunities to do more than the essentials to enable the processor to provide the required functionality. Today there are many functional and object-oriented languages that give programmers ample opportunity to develop their programming and beautify documentation. However, when the program performs its functional task, it rarely offers more than that.
Es reicht nicht mehr aus, eine Software bereitzustellen, die lediglich eine gewünschte Funktion ausführt. Bestimmte Computerimplementierungen reagieren nach wie vor sehr empfindlich auf den Speicherbedarf für den Code, die Verarbeitungszeit und den Energiebedarf. Während Desktop-Computer und andere an einem festen Ort angeordnete Computersysteme oft jede Einschränkung bei der Verarbeitung oder Speicherung mit zusätzlicher Hardware lösen, ist die mobile Datenverarbeitung besonders empfindlich gegenüber Speicher-, Verarbeitungs- und Energieanforderungen. Selbst eine sehr bescheidene Verbesserung der Speicher-, Verarbeitungs- und Leistungsanforderungen kann einen epochalen Durchbruch bedeuten, durch den ein zuvor unpraktisches Gerät nun zu einem praktischen Produkt wird. Darüber hinaus werden Faktoren wie die Wiederverwendbarkeit immer wieder angepriesen, kommen aber in der Praxis nur selten zum Einsatz, und wenn, dann ist ein erheblicher Aufwand für einen menschlichen Programmierer erforderlich, um die funktionale Äquivalenz sicherzustellen. Mit Hilfe der hierin enthaltenen Offenbarung können die Computerwissenschaften jedoch von der maschinellen Bearbeitung von Software profitieren, um einen robusteren, sichereren und wiederverwendbaren Code zu erhalten.It is no longer enough to provide software that only performs a desired function. Certain computer implementations remain very sensitive to code memory requirements, processing time, and power requirements. While desktop computers and other fixed-location computing systems often solve any processing or storage limitations with additional hardware, mobile computing is particularly sensitive to storage, processing, and power requirements. Even a very modest improvement in storage, processing, and performance requirements can mean a game-changing breakthrough that turns a previously impractical device into a practical product. In addition, factors such as reusability are often touted but rarely used in practice, and when they are, a significant effort by a human programmer is required to ensure functional equivalence. However, with the aid of the disclosure contained herein, the computer sciences can benefit from software machining to achieve more robust, secure, and reusable code.
Ein weiterer Vorteil der hier offenbaren Ausführungsformen besteht darin, dass Tests und Verifizierungen reduziert oder sogar eliminiert werden können, da die funktionale Äquivalenz innerhalb einer vorgegebenen Begrenzung der Hypothesenstärke und/oder der Ressourcennutzung (z.B. Prozessoren, Prozesszyklen, Zeit usw.) gewährleistet ist. Ein wesentlicher Abschnitt eines jeden Softwareentwicklungsprojekts, das den Stand der Technik nutzt, beinhaltet die Bestätigung, dass die funktionalen Ziele durch das Programm erfüllt werden. Die vorliegende Offenbarung bietet jedoch den Vorteil, dass, sobald eine Funktion genehmigt ist, jeder funktional äquivalente nachfolgende Code durch den genehmigten Code ersetzt werden kann und die funktionale Äquivalenz gewährleistet ist, ohne dass der genehmigte Code anschließend getestet werden muss.Another advantage of the embodiments disclosed herein is that testing and verification can be reduced or even eliminated since functional equivalence is guaranteed within a given constraint on hypothesis strength and/or resource usage (e.g., processors, process cycles, time, etc.). An essential part of any software development project that uses the state of the art involves confirming that the functional goals will be met by the program. However, the present disclosure provides the advantage that once a function is approved, any functionally equivalent subsequent code can be replaced with the approved code and functional equivalence is assured without the need to subsequently test the approved code.
Die Ausdrücke „mindestens eines“, „eines oder mehrere“ und „und/oder“ sind unbestimmte Ausdrücke, die sowohl konjunktiv als auch disjunktiv verwendet werden können. Zum Beispiel bedeutet jeder der Ausdrücke „mindestens eines von A, B und C“, „mindestens eines von A, B oder C“, „eines oder mehrere von A, B und C“, „eines oder mehrere von A, B oder C“ und „A, B und/oder C“, A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen oder A, B und C zusammen.The expressions "at least one", "one or more" and "and/or" are indefinite expressions that can be used both conjunctively and disjunctively. For example, each of the phrases means "at least one of A, B and C", "at least one of A, B or C", "one or more of A, B and C", "one or more of A, B or C ' and 'A, B and/or C', A alone, B alone, C alone, A and B together, A and C together, B and C together or A, B and C together.
Der Begriff „eine“ oder „ein“ Einheit bezieht sich auf eine oder mehrere dieser Einheiten. Die Begriffe „eine“ (oder „ein“), „eine oder mehrere“ und „mindestens eine“ können hier austauschbar verwendet werden. Es ist auch zu beachten, dass die Begriffe „aufweisend“, „beinhaltend“ und „umfassend“ austauschbar verwendet werden können.The term "a" or "an" entity refers to one or more of such entities. The terms "a" (or "an"), "one or more" and "at least one" may be used interchangeably herein. It is also noted that the terms "comprising," "including," and "comprising" can be used interchangeably.
Der Begriff „automatisch“ und Variationen davon, wie er hier verwendet wird, bezieht sich auf jeden Prozess oder Vorgang, der ohne wesentliche menschliche Eingaben durchgeführt wird, wenn der Prozess oder Vorgang ausgeführt wird. Ein Prozess oder Vorgang kann jedoch automatisch sein, auch wenn die Ausführung des Prozesses oder Vorgangs materielle oder immaterielle menschliche Eingaben erfordert, wenn die Eingaben vor der Ausführung des Prozesses oder Vorgangs empfangen werden. Menschliche Eingaben gelten als wesentlich, wenn sie die Art und Weise, wie der Prozess oder Vorgang ausgeführt wird, beeinflussen. Menschliche Eingaben, die der Ausführung des Prozesses oder Vorgangs zustimmen, gelten nicht als „wesentlich“.The term "automatic" and variations thereof, as used herein, refers to any process or operation that is performed without significant human input when the process or operation is executed. However, a process or operation may be automatic even if execution of the process or operation requires tangible or intangible human input if the input is received prior to execution of the process or operation. Human input is considered material if it affects how the process or operation is performed. Human input consenting to the execution of the process or operation is not considered "essential".
Der Begriff „computerlesbares Medium“, wie er hier verwendet wird, bezieht sich auf jeden dinglichen Speicher, der dazu beiträgt, Anweisungen an einen Prozessor zur Ausführung zu liefern. Ein solches Medium kann viele Formen annehmen, die nichtflüchtige Medien, flüchtige Medien und Übertragungsmedien aufweisen, aber nicht darauf beschränkt sind. Nichtflüchtige Medien weisen z. B. NVRAM oder magnetische oder optische Platten auf. Flüchtige Medien weisen dynamische Speicher, wie z. B. Hauptspeicher, auf. Gängige Formen von computerlesbaren Medien weisen beispielsweise eine Diskette, eine flexible Platte, eine Festplatte, ein Magnetband oder ein anderes magnetisches Medium, ein magnetooptisches Medium, eine CD-ROM, ein anderes optisches Medium, Lochkarten, ein Papierband, ein anderes physikalisches Medium mit Lochmustern, ein RAM, ein PROM, ein EPROM, ein FLASH-EPROM, ein Festkörpermedium wie eine Speicherkarte, ein anderer Speicherchip oder eine Kassette oder ein anderes Medium auf, von dem ein Computer lesen kann. Wenn das computerlesbare Medium als Datenbank ausgebildet ist, kann die Datenbank jede Art von Datenbank sein, wie z. B. relational, hierarchisch, objektorientiert und/oder ähnliches. Dementsprechend wird davon ausgegangen, dass die Offenbarung ein materielles Speichermedium und nach dem Stand der Technik anerkannte Äquivalente und Nachfolgemedien aufweist, in denen die Softwareimplementierungen der vorliegenden Offenbarung gespeichert sind.As used herein, the term "computer-readable medium" refers to any tangible storage device that helps deliver instructions to a processor for execution. Such a medium may take many forms, including but not limited to non-volatile media, volatile media, and transmission media. Non-volatile media have z. B. NVRAM or magnetic or optical disks. Volatile media include dynamic memory, such as B. main memory on. Common forms of computer-readable media include, for example, a floppy disk, flexible disk, hard disk, magnetic tape or other magnetic medium, magneto-optical medium, CD-ROM, other optical medium, punched cards, paper tape, other physical medium with punched patterns , RAM, PROM, EPROM, FLASH EPROM, a solid state medium such as a memory card, other memory chip or cartridge, or other medium from which a computer can read. If the computer-readable medium is embodied as a database, the database can be any type of database, such as e.g. B. relational, hierarchical, object-oriented and / or the like. Accordingly, the disclosure is deemed to exist on a tangible medium and as of the prior art includes art-recognized equivalents and successor media in which the software implementations of the present disclosure are stored.
Während maschinenausführbare Anweisungen lokal auf einer bestimmten Maschine (z.B. einem Personalcomputer, einer mobilen Rechenvorrichtung, einem Laptop usw.) gespeichert und ausgeführt werden können, sollte man sich darüber im Klaren sein, dass die Speicherung von Daten und/oder Anweisungen und/oder die Ausführung mindestens eines Abschnitts der Anweisungen über eine Verbindung zu einer entfernten Datenspeicher- und/oder Verarbeitungsvorrichtung oder einer Sammlung von Vorrichtungen bereitgestellt werden kann, die gemeinhin als „die Wolke“ bekannt ist, aber ein öffentliches, privates, dediziertes, gemeinsam genutztes und/oder anderes Servicebüro, einen Rechendienst und/oder eine „Serverfarm“ aufweisen kann.While machine-executable instructions may be stored and executed locally on a specific machine (e.g., a personal computer, mobile computing device, laptop, etc.), it should be recognized that the storage of data and/or instructions and/or execution at least a portion of the instructions may be provided via a connection to a remote data storage and/or processing device or collection of devices commonly known as "the cloud," but public, private, dedicated, shared, and/or other service bureau, a computing service and/or a "server farm".
Die Begriffe „bestimmen“ bzw. „feststellen“, „berechnen“ und „rechnen“ und Variationen davon werden hier austauschbar verwendet und weisen jede Art von Methodik, Prozess, mathematischer Operation oder Technik auf.The terms "determine," "calculate," and "calculate," and variations thereof, are used interchangeably herein and encompass any type of methodology, process, mathematical operation, or technique.
Der Begriff „Modul“, wie er hier verwendet wird, bezieht sich auf jede bekannte oder später entwickelte Hardware, Software, Firmware, künstliche Intelligenz, Fuzzy-Logik oder Kombination von Hardware und Software, die in der Lage ist, die diesem Element zugeordnete Funktionalität auszuführen. Auch wenn die Offenbarung in Form von beispielhaften Ausführungsformen beschrieben wird, sollte man sich darüber im Klaren sein, dass andere Aspekte der Offenbarung separat beansprucht werden können.The term "module" as used herein refers to any known or later developed hardware, software, firmware, artificial intelligence, fuzzy logic, or combination of hardware and software capable of performing the functionality associated with that element to execute. Although the disclosure is described in terms of exemplary embodiments, it should be understood that other aspects of the disclosure may be separately claimed.
Der Begriff „menschenlesbar“ in Bezug auf Quellcode, Code, Software oder Äquivalente, wie er hier verwendet wird, bezieht sich auf Computeranweisungen, die ein computerlesbares Format verwenden, das ohne Interpretation oder Kompilierung nicht von einer Maschine zum Zwecke der Ausführung der Anweisungen gelesen werden kann. Der Quellcode kann symbolische Darstellungen aufweisen, wie z.B. benannte Variablen, Funktionen (z.B. „float payment (int principle, float interest)“), die sprachliche Darstellungen aufweisen können (z.B. „if“, „return“, „get“, „fetch“, usw.) und sprachliche Zeichendarstellungen (z.B. „=“, „.“, „(“, „)“, usw.), die als „reservierte Wörter“ bekannt sein können. Die Programmiersprache, die für den menschenlesbaren Quellcode verwendet wird, kann spezifische Regeln dafür haben, was ein reserviertes Wort oder ein äquivalentes Symbol ist und was nicht. Im Allgemeinen ist der Quellcode die menschliche Ausgabe einer entwickelten Programmieranweisung und allgemein bekannt durch die Quellcode-Sprache (z.B. Python, C, C++, FORTRAN, BASIC, usw.).The term "human-readable" in relation to source code, code, software, or equivalent, as used herein, refers to computer instructions that use a computer-readable format that cannot be read by any machine for the purpose of executing the instructions without interpretation or compilation can. The source code may have symbolic representations, such as named variables, functions (e.g. "float payment (int principle, float interest)"), which may have linguistic representations (e.g. "if", "return", "get", "fetch" , etc.) and linguistic character representations (e.g. "=", ".", "(", ")", etc.) which may be known as "reserved words". The programming language used for the human-readable source code may have specific rules as to what is and is not a reserved word or equivalent symbol. In general, the source code is the human output of a developed programming instruction and is commonly known by the source code language (e.g. Python, C, C++, FORTRAN, BASIC, etc.).
Der Begriff „maschinenlesbar“ in Bezug auf Maschinencode, Code, Software oder Äquivalente, wie er hier verwendet wird, bezieht sich auf menschenlesbaren Code, der über einen Compiler oder Interpreter verarbeitet wurde, um eine maschinenlesbare und ausführbare Form des menschenlesbaren Quellcodes aufzuweisen. Bei einer Ausführungsform handelt es sich bei dem maschinenlesbaren Code um Assembler. Bei einer anderen Ausführungsform handelt es sich bei dem maschinenlesbaren Code um Maschinencode (z.B. Binärcode). Der maschinenlesbare Code kann standardisierte Bezeichner verwenden, die symbolische Darstellungen von menschenlesbarem Quellcode übersetzen (z.B., „Prinzip“ und „Zinsen“ werden zu „$01“ und „$02“, „Verkauf“ und „Steuer“ werden zu „$03“ und „$04“ usw.), um Unterschiede zwischen ähnlichen Funktionen, die von verschiedenen Quellcode-Sprachen bereitgestellt werden, ganz oder teilweise zu beseitigen, und kann auch plattformspezifischer werden (z.B. Intel x86, Motorola 8000x, CISC, RISC usw.), um den Anweisungssatz für Prozessoren oder Prozessorfamilien zu berücksichtigen. Maschinenlesbarer Code muss unter Umständen nicht weiter verarbeitet werden, um von einer Maschine, wie z.B. einem Mikroprozessor, gelesen werden zu können, kann aber zusätzliche Verarbeitung (z.B. Verknüpfung) erfordern, um von der Maschine ausgeführt werden zu können. Ein erfahrener Programmierer kann zwar in der Lage sein, Maschinencode zu „lesen“, aber wenn eine solche Form der Software keine sprachbasierten Symbole enthält, wird ein solcher Maschinencode als nicht menschenlesbar betrachtet.As used herein, the term "machine-readable" in relation to machine code, code, software, or equivalent, refers to human-readable code that has been processed via a compiler or interpreter to have a machine-readable and executable form of human-readable source code. In one embodiment, the machine-readable code is assembler. In another embodiment, the machine-readable code is machine code (e.g., binary code). The machine-readable code may use standardized identifiers that translate symbolic representations from human-readable source code (e.g., "principle" and "interest" become "$01" and "$02", "sale" and "tax" become "$03" and "$04 ', etc.) to eliminate, in whole or in part, differences between similar functions provided by different source code languages, and may also become more platform-specific (e.g. Intel x86, Motorola 8000x, CISC, RISC, etc.) to improve the instruction set for Processors or processor families to consider. Machine-readable code may not require further processing to be read by a machine, such as a microprocessor, but may require additional processing (e.g., linking) to be executable by the machine. While a skilled programmer may be able to "read" machine code, if such form of software does not contain language-based symbols, such machine code is considered non-human readable.
Der Begriff „Datenspeicher“, wie er hier verwendet wird, ist ein Gerät, ein Medium, eine Komponente, ein Abschnitt einer Komponente, eine Sammlung von Komponenten und/oder eine andere Struktur, die in der Lage ist, Daten zu speichern, die für einen Prozessor zugänglich sind. Beispiele für hier betrachtete Datenspeicher weisen z.B. Prozessorregister, On-Chip-Speicher, On-Board-Speicher, Festplatten, Solid-State-Geräte, feste Mediengeräte, Wechselmediengeräte, logisch angeschlossene Speicher, vernetzte Speicher, verteilte lokale und/oder entfernte Speicher (z.B. Serverfarmen, „Cloud“-Speicher usw.), Medien (z.B. Solid-State, optische, magnetische usw.) und/oder Kombinationen davon auf. Auf den Datenspeicher kann mindestens ein Prozessor zugreifen, er kann jedoch logisch und/oder physisch von dem Prozessor getrennt sein, wenn kein Prozessor einen aktuellen Zugriffsbedarf hat. Auf die Datenablage kann direkt oder über eine oder mehrere dazwischenliegende Komponenten zugegriffen werden, die unter anderem einen Cache und/oder Puffer aufweisen. Bei bestimmten Ausführungsformen kann die Datenablage in einer Datenbank, einer Datei, einem Datensatz oder einer anderen logischen Speicherstruktur und/oder einem Abschnitt oder einer Sammlung davon organisiert sein.The term "data storage" as used herein is a device, medium, component, portion of a component, collection of components, and/or other structure capable of storing data required for a processor are accessible. Examples of data storage considered here include processor registers, on-chip memory, on-board storage, hard drives, solid-state devices, fixed media devices, removable media devices, logically attached storage, networked storage, distributed local and/or remote storage (eg server farms, "cloud" storage, etc.), media (eg, solid-state, optical, magnetic, etc.), and/or combinations thereof. The data store can be accessed by at least one processor, but may be logically and/or physically separate from the processor if no processor has a current need for access. The data storage can be accessed directly or via a or multiple intervening components including, but not limited to, a cache and/or buffer. In certain embodiments, data storage may be organized into a database, file, record, or other logical storage structure and/or a portion or collection thereof.
Figurenlistecharacter list
Die vorliegende Offenbarung wird in Verbindung mit den beigefügten Figuren beschrieben:
-
1 zeigt ein erstes System gemäß den Ausführungsformen der vorliegenden Offenbarung; -
2 zeigt ein zweites System gemäß den Ausführungsformen der vorliegenden Offenbarung; -
3 zeigt ein drittes System gemäß den Ausführungsformen der vorliegenden Offenbarung; -
4 zeigt ein viertes System gemäß den Ausführungsformen der vorliegenden Offenbarung; -
5 zeigt ein Verfahren gemäß den Ausführungsformen der vorliegenden Offenbarung; -
6 zeigt ein fünftes System gemäß den Ausführungsformen der vorliegenden Offenbarung; -
7 zeigt eine Begrenzungskomponente der Äquivalenzbestimmung gemäß den Ausführungsformen der vorliegenden Offenbarung;; -
8 zeigt eine Ressourcenbelegungskomponente der Äquivalenzbestimmung gemäß den Ausführungsformen der vorliegenden Offenbarung; -
9 zeigt ein sechstes Verfahren gemäß den Ausführungsformen der vorliegenden Offenbarung; und -
10-71 zeigen eine Lösung gemäß den Ausführungsformen der vorliegenden Offenbarung.
-
1 Figure 1 shows a first system according to embodiments of the present disclosure; -
2 12 shows a second system according to embodiments of the present disclosure; -
3 Figure 13 shows a third system according to embodiments of the present disclosure; -
4 12 shows a fourth system according to embodiments of the present disclosure; -
5 Figure 12 shows a method according to embodiments of the present disclosure; -
6 12 shows a fifth system according to the embodiments of the present disclosure; -
7 12 shows a limiting component of the equivalence determination according to the embodiments of the present disclosure; -
8th FIG. 12 shows a resource allocation component of the equivalency determination according to embodiments of the present disclosure; FIG. -
9 12 shows a sixth method according to the embodiments of the present disclosure; and -
10-71 show a solution according to the embodiments of the present disclosure.
Detaillierte BeschreibungDetailed description
Die nachfolgende Beschreibung enthält lediglich Ausführungsformen und soll den Umfang, die Anwendbarkeit oder die Ausgestaltung der Ansprüche nicht einschränken. Vielmehr soll die nachfolgende Beschreibung dem Fachmann die Umsetzung der Ausführungsformen ermöglichen. Es versteht sich, dass verschiedene Änderungen in der Funktion und Anordnung der Elemente vorgenommen werden können, ohne vom Geist und Umfang der beigefügten Ansprüche abzuweichen.The following description is merely exemplary in nature and is not intended to limit the scope, applicability, or phrase of the claims. Rather, the following description should enable the person skilled in the art to implement the embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the spirit and scope of the appended claims.
Jeder Verweis in der Beschreibung, der eine Elementnummer aufweist, ohne einen Unterelement-Identifikator, wenn ein Unterelement-Identifikator in den Figuren vorhanden ist, soll, wenn er im Plural verwendet wird, auf zwei oder mehr Elemente mit einer gleichen Elementnummer verweisen. Wenn ein solcher Verweis in der Einzahl erfolgt, soll er auf eines der Elemente mit der gleichen Elementnummer verweisen, ohne sich auf ein bestimmtes Element zu beschränken. Jede gegenteilige ausdrückliche Verwendung hierin oder eine weitere Qualifizierung oder Identifizierung hat Vorrang.Any reference in the specification having an element number without a sub-element identifier when a sub-element identifier is present in the figures, when used in the plural, is intended to refer to two or more elements with a same element number. When such a reference is in the singular, it shall refer to one of the elements with the same element number, without being limited to any particular element. Any express use herein to the contrary, or any further qualification or identification, takes precedence.
Die beispielhaften Systeme und Verfahren dieser Offenbarung werden auch in Bezug auf Analysesoftware, Module und zugeordnete Analysehardware beschrieben. Um die vorliegende Offenbarung jedoch nicht unnötig zu verschleiern, wird in der folgenden Beschreibung auf bekannte Strukturen, Komponenten und Geräte verzichtet, die in Form von Blockschaltbildern dargestellt werden können und die bekannt sind oder anderweitig zusammengefasst werden.The example systems and methods of this disclosure are also described in terms of analysis software, modules, and associated analysis hardware. However, in order not to unnecessarily obscure the present disclosure, the following description avoids well-known structures, components, and devices that may be shown in block diagram form that are known or otherwise summarized.
Zu Erklärungszwecken werden zahlreiche Details dargelegt, um ein umfassendes Verständnis der vorliegenden Offenbarung zu ermöglichen. Es sollte jedoch anerkannt werden, dass die vorliegende Offenbarung über die hierin dargelegten spezifischen Details hinaus auf vielfältige Weise praktiziert werden kann.For purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the present disclosure. However, it should be appreciated that the present disclosure can be practiced in a variety of ways beyond the specific details set forth herein.
Bei einer Ausführungsform kann der Quellcode 102 Kandidatenfunktionen 104 aufweisen, die von einem Programmierer geschrieben wurden, beispielsweise unter Verwendung einer integrierten Entwicklungsumgebung oder eines anderen Software-Autorenwerkzeugs. Bei einer Ausführungsform ist der Quellcode 102 mit einer Vielzahl von Funktionen 104 dargestellt. Bei einer anderen Ausführungsform kann der Quellcode 102 eine einzige Funktion 104 aufweisen, wie z.B. 104A.In one embodiment,
Der Prozessor 106 greift auf den Quellcode 102 und die Funktionen 104 zu und vergleicht einige der Kandidatenfunktionen 104 mit einigen der Vorzugsfunktionen 108A-108n, die in der Datenspeicher 114 verwaltet werden. Der Prozessor 106 kann dann diejenigen der Kandidatenfunktionen 104 identifizieren, die durch welche der Vorzugsfunktionen 108 zu ersetzen sind, und der Prozessor 106 kann dann Datensätze erstellen, wie z. B. solche, die Funktionskennungen 110 aufweisen, die den Indizien 112 zugeordnet sind, um eine Verbindung zwischen einigen der Kandidatenfunktionskennungen 116A-116D und einigen der Ersatzkennungen 118A-118-D herzustellen. So ist beispielsweise die Funktionskennung 116A („Kandidatenfunktion 1“), die eine bestimmte Funktion, die Kandidatenfunktion 1 (104A), identifiziert, den Funktionsindizien 118A zugeordnet, die das Ersetzen durch die Vorzugsfunktion 108C (bestimmt als „Vorzugsfunktion C“) anzeigen. Bei einer anderen Ausführungsform können die der Funktionskennung 116B zugeordneten Ersetzungsindizen 118B anzeigen, dass die zugeordnete Funktion Kandidatenfunktion 2 (104B) beibehalten werden soll. Beispielsweise kann die Kandidatenfunktion 2 (104B) eventuell kein Gegenstück oder kein bestimmbares Gegenstück im Datenspeicher 114 haben oder anderweitig funktional nicht äquivalent zu einer der Vorzugsfunktionen 108 sein. Bei einer anderen Ausführungsform kann zusätzlich oder alternativ zum Ausführen der Ersetzung eine Empfehlung oder Lehre implementiert werden. Beispielsweise kann einem Programmierer eine Nachricht präsentiert werden, die anzeigt, dass eine vom Programmierer geschriebene Funktion (z.B. „Kandidatenfunktion 1“) verbessert werden kann, und optional das Verbesserungskriterium präsentiert werden, um einer anderen Funktion (z.B. „Vorzugsfunktion C“) ähnlicher zu sein.
Die Indizien 112 sind so dargestellt, dass sie menschenlesbare englische Dateneinträge aufweisen, eine Ausführungsform, die zum Teil aus Gründen der Anschaulichkeit ausgewählt wurde. Andere Ausführungsformen, die hier in Betracht gezogen werden, weisen einen Datenwert auf, wie z.B. einen Eintrag in einem Datenelement (z.B. binär, aufgezählter Datentyp, Datenstruktur usw.) und/oder das Vorhandensein eines Datenelements (z.B, Flag/kein Flag, Datensatz/kein Datensatz, Objekt/kein Objekt usw.), das in einem flüchtigen Speicher, einem nichtflüchtigen Speicher, einem Medium, einem Datenspeicher 114, einem anderen Datenspeicher, einem Medium und/oder einer anderen datenspeichernden Komponente, einer Sammlung von Komponenten oder Abschnitten davon gehalten wird, und kann in den hier offenbaren Ausführungsformen implementiert werden, ohne vom Umfang der Offenbarung abzuweichen.The
Bei einer Ausführungsform wird die Vorzugsfunktion 1 (104A) durch die Vorzugsfunktion C (108C) ersetzt, die Vorzugsfunktion 2 (104B) wird beibehalten, die Vorzugsfunktion 3 (104C) wird durch die Vorzugsfunktion A (108A) ersetzt, und die Vorzugsfunktion 4 (104D) wird durch die Vorzugsfunktion X (108X) ersetzt. Vorzugsquellcode 202 kann dann gespeichert und als Vorzugsquellcode bestimmt werden und für zusätzliche Entwicklung, Kompilierung oder Interpretation, Verknüpfung, Ausführung und/oder Speicherung bereitgestellt werden, um zu einem späteren Zeitpunkt zugänglich zu sein.In one embodiment, preference 1 (104A) is replaced with preference C (108C), preference 2 (104B) is retained, preference 3 (104C) is replaced with preference A (108A), and preference 4 (104D ) is replaced by the preferred function X (108X).
Bei einer anderen Ausführungsform wird die funktionale Äquivalenz durch die Nichtäquivalenz mit allen außer einem Mitglied einer aufgezählten Menge bestimmt, für die die Kandidatenfunktion 402 ein bekanntes Mitglied ist. So kann beispielsweise bekannt sein, dass die Kandidatenfunktion 402 eine grundlegende mathematische Funktion ausführt, nämlich eine der Funktionen Addition, Subtraktion, Multiplikation und Division. Die Vorzugsfunktion 404 kann als funktional äquivalent zur Kandidatenfunktion 402 bestimmt werden, wenn die Vorzugsfunktion 404 ein Mitglied der Menge der vier mathematischen Grundfunktionen ist und für drei andere Funktionen eine Nicht-Äquivalenz bestimmt wird, so dass die Vorzugsfunktion 404 die einzige Funktion ist, für die eine Äquivalenz bestimmt wird, und somit funktional äquivalent ist.In another embodiment, functional equivalence is determined by non-equivalence with all but one member of an enumerated set for which
Die Kandidatenfunktion 402 hat eine Eingabe-/Ausgabesignatur, die über die Parse-Funktion I/O 406 geparst wird. In ähnlicher Weise verfügt die Vorzugsfunktion 404 über eine Ein-/Ausgangssignatur, die über die Parse-Funktion I/O 408 geparst wird. Liste 1 enthält ein Beispiel für die Kandidatenfunktion 402:
int sum_mod (int x, int y) { if (y == 0) { }throw domain_error ("Modulus cannot be 0."); } if (y<0) { int pos_y = -y; }return sum_mod(x, pos_y); } if (x<0) { while (x<0) { x+=y; } return x; } while (x>=0) { x -= y; } }return (x+y) }The
int sum_mod (int x, int y) { if (y == 0) { }throw domain_error ("Modulus cannot be 0."); } if (y<0) { int pos_y = -y; }return sum_mod(x, pos_y); } if (x<0) { while (x<0) { x+=y; } return x; } while (x>=0) { x -= y; } }return (x+y) }
LISTE 1
Liste 2 zeigt ein Beispiel für die Vorzugsfunktion 404:
int div_mod (int x, int y) { if (y==0) { throw domain error ("Modulus cannot be 0."); } int div = x/y; int rem = x - (div*y); return rem; }
int div_mod (int x, int y) { if (y==0) { throw domain error ("Modulus cannot be 0."); } int div = x/y; int rem = x - (div*y); return rem; }
LISTE 2
Bei einer Ausführungsform wurde die Vorzugsfunktion 404 geprüft und als bevorzugt bestimmt, z. B. aufgrund der Prägnanz des darin enthaltenen menschenlesbaren Codes. Prägnanz kann durch eine abstrakte syntaktische Struktur, wie z.B. einen abstrakten Syntaxbaum (Abstract Syntax Tree, AST), erreicht werden. Beispielsweise können wenige Knoten, weniger Blattknoten, Knotentiefe und Knotenbreite eine Prägnanzmetrik darstellen. Der funktionale Äquivalenzdienst 410 bestimmt dann, ob die Äquivalenz wahr ist. Bei einer Ausführungsform leitet der funktionale Äquivalenzdienst die Logik erster Ordnung 412 für die geparste Kandidatenfunktion 402 und die Logik erster Ordnung 414 für die geparste Vorzugsfunktion 404 ab, um eine Logik erster Ordnung abzuleiten, die in einer Ausführungsform die SMT-Abfrage 416 aufweist.In one embodiment, the
Liste 3 zeigt ein Beispiel für eine Funktion, die in Logik, Eingänge und Ausgänge zerlegt ist.
f1-sum_mod: [...f1 Logic ...] Inputs: [f1(x), f1(y)] Outputs: [f1(retVal)]
f1-sum_mod: [...f1 logic...] inputs: [f1(x), f1(y)] outputs: [f1(retVal)]
LISTE 3
Liste 4 zeigt ein weiteres Beispiel einer Funktion, die in Logik, Eingaben und Ausgaben zerlegt wurde.
f2-div_mod: [...f2 Logic ...] Inputs: [f1(x), f2(y)] Outputs: [f2(retVal)]
f2-div_mod: [...f2 logic...] inputs: [f1(x), f2(y)] outputs: [f2(retVal)]
LISTE 4
Liste 5 zeigt ein Beispiel einer SMT-Abfrage.
LISTE 5
Bei einer weiteren Ausführungsform wird die SMT-Abfrage 416 an den SMT-Solver 420 übermittelt, um eine Ausgabe zu erzeugen, die ein erfülltes („SAT“) Nicht-Äquivalenz-Ergebnis oder ein NEIN-Ergebnis 422 oder ein nicht-erfüllbares („UNSAT“) Äquivalenz-Ergebnis oder ein JA-Ergebnis 424 anzeigt.In another embodiment, the
Als nächstes bestimmt Schritt 506, ob die Funktionen funktional äquivalent sind (z.B. dieselben Ergebnisse erzeugen, wenn dieselben Eingaben gegeben werden) innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung, und wenn ja, fährt der Prozess 500 mit dem optionalen Schritt 508 fort, um Indizien für die Ersetzung bereitzustellen oder, wenn Schritt 508 nicht implementiert ist, um die Indizien extern für den Prozess 500 bereitzustellen. Andernfalls wird die Verarbeitung mit Schritt 510 fortgesetzt. In Schritt 510 wird die Kandidatenfunktion 502 durch die Vorzugsfunktion 504 ersetzt. Wenn Schritt 506 negativ bestimmt wird, ist keine Ersetzung erforderlich, und der Prozess 500 kann beendet werden. Optional kann im Anschluss an Schritt 510 der Quellcode, der die nun ersetzte Vorzugsfunktion 504 aufweist, auf einem Medium gespeichert oder auf andere Weise für eine zusätzliche oder zukünftige Verarbeitung und/oder Referenz aufbewahrt werden.Next,
Wie hierin vorgesehen, kann ein Vorzugsquellcode, der beispielsweise eine oder mehrere Vorzugsfunktionen 108 aufweist, durch automatisches Ersetzen eines funktionell äquivalenten, aber nicht bevorzugten Kandidatenquellcodes, der beispielsweise eine oder mehrere Kandidatenfunktionen 104 aufweist, bereitgestellt werden. Der Vorzugsquellcode kann auf der Grundlage einer vorherigen Prüfung als bevorzugt bestimmt werden, wobei der Vorzugsquellcode zur Verwendung zugelassen wird. Der Vorzugsquellcode kann aufgrund der Speicheranforderungen der menschenlesbaren Form und/oder der maschinenlesbaren Form, der Leistungsmetrik, der Sicherheit, des Vorhandenseins interner Dokumentation, des Vorhandenseins eines bestimmten Umfangs interner Dokumentation, der Verwendung ausführlicher Variablennamen, der Prägnanz der Anweisungen, der Fehlerbehandlung und/oder anderer Attribute als Vorzugsquellcode bestimmt werden. Bei einer anderen Ausführungsform wird der Quellcode aufgrund einer vorherigen Prüfung bevorzugt. Bei einer weiteren Ausführungsform wurde der in Frage kommende Quellcode keiner vorherigen Prüfung unterzogen. Bei einer weiteren Ausführungsform wurde der Vorzugsquellcode von einer höheren Instanz überprüft als der Kandidatenquellcode, der von einer niedrigeren Instanz, wie dem Entwickler des Kandidatenquellcodes, überprüft worden sein kann. Bei einer weiteren Ausführungsform kann die Bestimmung eines Vorzugsquellcodes gemäß einem Kriterium bestimmt werden, z.B. einem oder mehreren von weniger Codezeilen, weniger prozeduralen Aufrufen, mehr Kommentaren, längeren Variablennamen, usw.As provided herein, preferred source code, for example having one or more preferred functions 108, may be provided by automatically replacing a functionally equivalent but non-preferred candidate source code, for example having one or more candidate functions 104. The preferred source code may be determined to be preferred based on a prior review, with the preferred source code being approved for use. Preferred Source Code may vary due to storage requirements of human-readable form and/or machine-readable form, performance metrics, security, existence of internal documentation, existence of a certain amount of internal documentation, use of verbose variable names, conciseness of instructions, error handling, and/or other attributes are designated as preferred source code. In another embodiment, source code is preferred based on prior verification. In a further embodiment, the source code in question has not undergone any prior testing. In another embodiment, the preferred source code has been reviewed by a higher authority than the candidate source code, which may have been reviewed by a lower authority, such as the developer of the candidate source code. In another embodiment, the determination of preferred source code may be determined according to a criterion, e.g. one or more of fewer lines of code, fewer procedural calls, more comments, longer variable names, etc.
Bei einer Ausführungsform transformiert der Prozessor 106 den Kandidatenquellcode in einen der Vorzugsquellcodes 604A-606E. Bei einer anderen Ausführungsform verändert der Prozessor 106 den Vorzugsquellcode in zwei oder mehr der Vorzugsquellcodes 604A-604E. Der Prozessor 106 verändert den Quellcode 102 in einen oder mehrere der Vorzugsquellcodes 604A-604E, um einen Quellcode, z. B. eine Quellcodedatei, auszugeben, der mindestens einen Vorzugsaspekt erfüllt. Der Vorzugsquellcode kann zu einem optimaleren Betrieb einer Maschine oder Komponente einer Maschine führen, z.B. durch Ausführen von weniger Operationen, schnelleren Operationen, geringeren Speicherbedarf, Ausführen einer Operation mit geringerem Ressourcenbedarf, Nutzung von weniger teuren Ressourcen (z.B. Energie, Ausgaben usw.), Ausführen von sichereren Operationen usw. Der bevorzugte Aspekt ist vielfältig ausgeprägt und weist unter anderem Sicherheit, CPU-Effizienz, Bandbreiteneffizienz, Speicherbedarf, Prägnanz des Codes, Datenbankzugriffe oder eine Kombination aus zwei oder mehr auf.In one embodiment,
Bei einer Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606A ist, die hinsichtlich der CPU-Nutzung (z.B. Taktzyklen, Operationen usw.) als bevorzugt bestimmt wurde. Dementsprechend verändert der Prozessor 106 den Quellcode 102 in den Vorzugsquellcode 604A, der die Vorzugsfunktion 606A anstelle der Kandidatenfunktion 602 aufweist. Infolgedessen wird der Quellcode 102 in den Quellcode 604A transformiert.In one embodiment,
Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606B ist, die in Bezug auf die Sicherheit als bevorzugt bestimmt worden ist. Beispielsweise kann die Funktion 606B ein zuvor genehmigtes Verschlüsselungsprotokoll für die Kommunikation, einen genehmigten Kommunikationsport, eine genehmigte Fehlerbehandlungsroutine usw. verwenden.In another embodiment, the
Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktionell äquivalent zu der Vorzugsfunktion 606C ist, die hinsichtlich der Prägnanz des Codes als bevorzugt bestimmt wurde. Zum Beispiel kann die Funktion 606C einen menschenlesbaren Quellcode verwenden, der als prägnanter bestimmt wurde, um die Lesbarkeit und optional die Maschineneffizienz zu fördern. Zum Beispiel kann es bevorzugt sein, einen Quellcode zu verwenden, der weniger Operatoren verwendet, wie „X++“ gegenüber „X = X+1.“In another embodiment, the
Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606D ist, die hinsichtlich der Speicherung als bevorzugt bestimmt worden ist. Selbst mit moderner Datenspeichertechnologie kann die Datenspeicherung immer noch ein Problem darstellen, insbesondere bei eingebetteten Systemen und mobiler Technologie, wo der Platzbedarf von Chip und Platine kritischer ist. Zum Beispiel kann die Funktion 606D einen Quellcode verwenden, der weniger Speicherplatz benötigt, wie z.B. „i=r*b“ kann gegenüber dem ausführlichen „interest= rate * balance“ bevorzugt werden.In another embodiment,
Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606E ist, die sowohl in Bezug auf die Sicherheit als auch auf die Bandbreite als bevorzugt bestimmt worden ist. Zum Beispiel kann die Vorzugsfunktion 606E weniger netzwerkabhängige Operationen und einen bevorzugten Port und/oder ein bevorzugtes Sicherheitsprotokoll verwenden.In another embodiment,
Oft machen die Ressourcenbeschränkungen und/oder eine akzeptable Hypothesenstärkeanforderung die Prüfung der Äquivalenz bis zur Erschöpfung unerwünscht oder unnötig. Zum Beispiel kann ein komplexer Kandidaten-Quellcode gegen einen Vorzugsquellcode evaluiert werden. Es kann eine Annahme, z. B. durch einen Menschen, getroffen werden, dass der Kandidaten-Quellcode wahrscheinlich äquivalent zu einem bestimmten Vorzugsquellcode oder einem bestimmten Satz von Vorzugsquellcodes ist. Häufig können solche Annahmen jedoch nicht getroffen werden oder sie sind ungenau. Beispielsweise kann ein vollautomatisches System möglicherweise keine vorläufigen Übereinstimmungen mit einem bestimmten Vorzugsquellcode oder einer bestimmten Menge von Codes feststellen und muss daher die Äquivalenz mit einem gesamten Pool von Vorzugsquellcodes bestimmen, bis eine ausreichende Äquivalenz festgestellt wird. Bei anderen Ausführungsformen kann ein Vorzugsquellcode Namen von Variablen, Funktionen, Modulen usw. aufweisen, die einen Hinweis darauf geben, welcher Vorzugsquellcode oder welche Vorzugsquellcodes für die Bestimmung der Äquivalenz am besten geeignet sind. Wenn zum Beispiel die Variablen „Zinsen“ und „Kontonummer“ heißen, dann ist „Banking“. „Kontoführung“ oder ein ähnlicher Quellcode kann für die Äquivalenz in Betracht gezogen werden, oder zumindest als erstes. Wird keine Übereinstimmung erkannt, kann ein anderer Bereich des Vorzugsquellcodes (z.B. „Versicherung“, „Makler“ usw.) ausgewählt werden. Often the resource limitations and/or an acceptable hypothesis strength requirement make testing equivalence to exhaustion undesirable or unnecessary. For example, a complex candidate source code can be evaluated against a preferred source code. There may be an assumption, e.g. by a human, that the candidate source code is likely to be equivalent to a particular preferred source code or set of preferred source codes. Often, however, such assumptions cannot be made or they are inaccurate. For example, a fully automated system may not be able to find preliminary matches to a particular preferred source code or set of codes, and must therefore determine equivalency against an entire pool of preferred source codes until sufficient equivalence is found. In other embodiments, a preferred source code may include names of variables, functions, modules, etc. that provide an indication of which preferred source code or codes are best suited for determining equivalence. For example, if the variables are "interest" and "account number" then it is "banking". "Accounting" or similar source code may be considered for equivalence, or at least first. If no match is found, another area of the preferred source code (e.g. "insurance", "broker", etc.) can be selected.
Folglich kann die Nicht-Bestimmung der Äquivalenz als Nicht-Bestimmung der Äquivalenz mit einem Kandidaten-Quellcode und einem bestimmten Vorzugsquellcode betrachtet werden. Ein anderer Quellcode kann äquivalent sein.Consequently, failure to determine equivalence may be viewed as failure to determine equivalence with a candidate source code and a particular preferred source code. Other source code may be equivalent.
Bei einer Ausführungsform wird die Äquivalenz im Hinblick auf eine Systembegrenzung unter Zeitdruck bestimmt. Bei unbegrenzter Zeit kann selbst der kleinste Prozessor die intensivste Verarbeitungsaktivität ausführen. Ebenso ist bei einer unbegrenzten Menge an Hardware nur eine triviale Menge an Zeit erforderlich, um die gleiche intensive Verarbeitungstätigkeit auszuführen. Solche unbegrenzten Beschränkungen liegen oft außerhalb der Realität, da Verarbeitungsaufgaben auf einer begrenzten Verarbeitungsplattform und/oder innerhalb eines begrenzten Zeitrahmens ausgeführt werden müssen. Wird die Äquivalenz nicht bewiesen, kann die Aufgabe abgebrochen werden. Der Nachweis der Äquivalenz kann jedoch auch darin bestehen, dass während einer ressourcenbeschränkten Äquivalenzprüfung keine Nicht-Äquivalenz festgestellt wird.In one embodiment, the equivalency is determined against a system limitation under time pressure. With unlimited time, even the smallest processor can perform the most intense processing activity. Likewise, with an unlimited amount of hardware, only a trivial amount of time is required to perform the same intensive processing activity. Such unbounded constraints are often outside of reality, as processing tasks must be performed on a limited processing platform and/or within a limited time frame. If the equivalence is not proven, the task can be aborted. However, proof of equivalence can also consist in the fact that no non-equivalence is found during a resource-constrained equivalence test.
Bei einer Ausführungsform ist die Verarbeitungsressource festgelegt und die Zeit, die der Verarbeitungsressource zum Ausführen der Äquivalenzbeurteilung zur Verfügung steht, ist variabel. Beispielsweise kann ein Desktop-Computer die Bewertung ausführen, und eine Antwort wird innerhalb einer Stunde erwartet. Eine fi festgelegte xierte Ressource kann vollständig festgelegt (z.B. ausschließlich für die Bewertungsaufgabe) oder teilweise festgelegt sein (z.B. ein Multitasking-Prozessor, der die Bewertungsaufgabe und andere Aufgaben ausführt). Eine teilweise festgelegte Ressource kann je nach den Anforderungen, die andere Aufgaben an den Prozessor stellen, mehr oder weniger Beurteilungsverarbeitungsvorgänge ausführen. Dementsprechend kann eine Bewertung für eine festgelegte Zeitspanne eine variable Anzahl von Prozessoroperationen zur Folge haben, oder eine festgelegte Anzahl von Prozessoroperationen kann zu einer variablen Dauer führen. Vorzugsweise wird ein menschlicher oder überwachender Computerprozess mit den potenziellen Auswirkungen versehen, die bestehen können, wenn fremde Verarbeitungsanforderungen an den Prozessor gestellt werden, der die Bewertung zur Verwaltung ausführt (z.B. Einstellung einer Prioritätsstufe, die ausreicht, um den Prozessor zuzuweisen, damit er die Bewertung innerhalb der gewünschten Anzahl von Operationen/Zeit ausführt, Deaktivierung fremder Aufgaben, Änderung einer angeforderten Ressourcenbegrenzung im Hinblick auf zusätzliche Ressourcenbegrenzungen, die durch fremde Aufgaben auferlegt werden, usw.).In one embodiment, the processing resource is fixed and the time available for the processing resource to perform the equivalence assessment is variable. For example, a desktop computer can run the assessment and a response is expected within an hour. A fixed resource may be fully committed (e.g., dedicated solely to the assessment task) or partially committed (e.g., a multitasking processor that performs the assessment task and other tasks). A partially committed resource may perform more or less judgment processing depending on the demands that other tasks place on the processor. Accordingly, an evaluation for a fixed period of time may result in a variable number of processor operations, or a fixed number of processor operations may result in a variable duration. Preferably, a human or supervisory computer process is provided with the potential impact that may exist if extraneous processing requests are made to the processor executing the assessment for management (e.g., setting a priority level sufficient to assign the processor to do the assessment within the desired number of operations/time, disabling foreign tasks, changing a requested resource limit in view of additional resource limits imposed by foreign tasks, etc.).
Bei einer Ausführungsform zeigt die Komponente 700 zur Begrenzung der Äquivalenz eine relative Priorität für eine Äquivalenz-Operation an. Zum Beispiel kann der Joystick 702 eine relative Position entlang der Zeitachse 704, der Hypothesenstärkeachse 706 und der Ressourcennutzungsachse 708 auswählen. Der Joystick 702 befindet sich, wie dargestellt, nahe der Mitte der Komponente 700 zur Begrenzung der Äquivalenz, was auf eine nahezu ausgewogene Strategie hinweist. Insbesondere wird die Reduzierung der Ressourcennutzung betont, aber nicht maximiert, wie durch das Liniensegment 712 angedeutet wird, das eine Länge ungleich Null hat, aber kürzer als die Liniensegmente 710 und 714 ist. Die Hypothesenstärke ist die zweite Achse, die betont wird, wie durch das Liniensegment 710 dargestellt wird, das länger als das Liniensegment 712, aber kürzer als das Liniensegment 714 ist. Die Zeit ist die dritte Achse und relativ weniger betont, wie durch das Liniensegment 714 dargestellt, das länger ist als die Liniensegmente 710 und 712.In one embodiment, the
Bei einer anderen Ausführungsform kann ein System, z. B. unter Verwendung des Prozessors 106, Eingaben von der Komponente 700 zur Begrenzung der Äquivalenz empfangen und eine Äquivalenzbestimmung auf der Grundlage einer geringeren Nutzung von Ressourcen, einer weiter reduzierten Hypothesenstärke und mit geringerer Beachtung des Zeitbedarfs ausführen. Das System kann solche Eingaben in maschinenausführbare Anweisungen wandeln, z.B. einen einzelnen Prozessor belegen, um einen Äquivalenzprozess mit hoher Priorität auszuführen (z.B. eine reduzierte Nutzung von Ressourcen), Äquivalenz und/oder das Nichtvorhandensein von Nicht-Äquivalenz mit einer 85%igen Hypothesenstärke auszuführen (z.B. eine reduziertere Hypothesenstärke) und die Anweisungen zwanzig Stunden lang auszuführen (z.B. mit weniger Rücksicht auf die benötigte Zeit).In another embodiment, a system, e.g. e.g., using
Der Fachmann wird erkennen, dass die Hypothesenstärke als erfolgreicher Abschluss einer Anzahl von Äquivalenzbewertungen bestimmt werden kann, die eine bestimmte Standardabweichung oder eine andere statistische Anforderung erfüllen. Das System kann dem Benutzer eine Ausgabe liefern, die auf einer bestimmten Einstellung in der Komponente 700 zur Begrenzung der Äquivalenz beruht. Zum Beispiel: „Um die Äquivalenz mit mindestens der von Ihnen gewählten Hypothesenstärke zu bestimmen, wird der Prozessor zwanzig Stunden lang fast ausschließlich auf dieser Maschine laufen und zwölf Millionen Operationen ausführen, um zu bestimmen, ob der ‚Kandidaten-Quellcode‘ mit dem ‚Vorzugsquellcode‘ äquivalent ist, und im Erfolgsfall wird die Äquivalenz mit einer Hypothesenstärke von 85,04 % bereitgestellt. Drücken Sie ‚Start‘, um zu beginnen.“Those skilled in the art will recognize that hypothesis strength can be determined as the successful completion of a number of equivalence assessments that meet a certain standard deviation or other statistical requirement. The system may provide the user with an output based on a particular setting in the
Bei einer anderen Ausführungsform kann ein System ausgeführt werden, bis es unterbrochen wird, und die Komponente zur Begrenzung der Äquivalenz 700 kann ein Display sein, das einen aktuellen Zustand anzeigt. Wenn beispielsweise eine Äquivalenz-Operation eingeleitet wird, kann sich der Joystick 702, der physisch oder ein Display-Element sein kann, in der Nähe des unteren Randes von
Bei einer anderen Ausführungsform kann die Komponente 700 zur Begrenzung der Äquivalenz bestimmte Achsen, wie z. B. die Ressource 712, weglassen, wenn die Verarbeitungsressourcen zumindest im Wesentlichen festgelegt oder zumindest nicht signifikant variabel sind. Beispielsweise kann ein Benutzer, der ein Rack mit Blade-Servern zur Verfügung hat, die Verarbeitungskapazität des Racks nicht erhöhen, ohne zusätzliche Blades hinzuzufügen. Während die Komponente 700 zur Ressourcenbegrenzung eine Option zum Hinzufügen von Hardware anzeigen kann, ist die Komponente 700 zur Ressourcenbegrenzung in anderen Ausführungsformen auf momentan verfügbare Optionen beschränkt, z. B. auf solche, die innerhalb der wenigen Sekunden verfügbar sind, die ein Benutzer zur Eingabe der gewünschten Parameter und zur Einleitung der Äquivalenz-Operationen benötigen kann.In another embodiment, the
Bei einer anderen Ausführungsform kann eine Systembegrenzung bestimmt und zur Quantifizierung einer Operation verwendet werden. Wenn beispielsweise ein bestimmter Kandidatencode mit einem einzigen Satz von Eingabevariablen in 1 Millisekunde durchlaufen werden kann und ein vollständiger Satz von Eingabevariablen 10 Millionen Werte aufweisen würde, dann würde die Äquivalenz mit absoluter Sicherheit in etwa 2,8 Stunden bestimmt werden. Der Einfachheit halber wird in dem Beispiel davon ausgegangen, dass das Durchlaufen des Vorzugsquellcodes bereits ausgeführt wurde, wobei die Eingabe-Ausgabe-Kombinationen im Speicher gehalten werden und nur eine vernachlässigbare Zugriffszeit erfordern. Es sei darauf hingewiesen, dass die Zeit für das Durchlaufen des Vorzugsquellcodes mit dem Satz von Eingaben, um den Satz von Ausgabewerten zu erhalten, möglicherweise addiert werden muss, um eine bessere Schätzung der benötigten Zeit zu erhalten, falls dies nicht bereits geschehen ist. In ähnlicher Weise kann die Zeit, die für den Vergleich der einzelnen Ausgaben aus dem Kandidaten- und dem Vorzugsquellcode benötigt wird, zu der benötigten Zeit hinzugezählt werden.In another embodiment, a system boundary may be determined and used to quantify an operation. For example, if a given candidate code could be traversed in 1 millisecond using a single set of input variables, and a full set of input variables would have 10 million values, then equivalence would be determined with absolute certainty in about 2.8 hours. For the sake of simplicity, it is assumed in the example that the iteration of the preferred source code has already been performed, with the input-output combinations being held in memory and requiring only a negligible access time. It should be noted that if it has not already been done, the time taken to iterate through the preferred source code with the set of inputs to get the set of output values may need to be added to get a better estimate of the time required. Similarly, the time taken to compare each output from the candidate and preferred source code can be added to the time taken.
In Anbetracht der benötigten Zeit kann eine Alternative gewählt werden, z. B. die Bestimmung auf einem anderen Computersystem auszuführen und/oder weniger Operationen durchzuführen. Zum Beispiel kann unter der Annahme einer Standardverteilung, bei der eine Hypothesenstärke von 50 % einem kumulativen Perzentil von 50 % entspricht, ein erster Test ausgeführt werden. Um innerhalb desselben Zeitfensters eine Hypothesenstärke von 75 % zu erreichen, die einem kumulativen Perzentil von 75 % entspricht, kann ein zusätzlicher oder leistungsfähigerer Prozessor eingesetzt werden. Es ist zu beachten, dass die Tests aufgrund des Aufwands oder der Details eines bestimmten zu testenden Werts von einer bestimmten statistischen Kurve abweichen können. Zum Beispiel kann das Ausführen von 1.000 Tests für einen Abschnitt des Codes eine Einrichtung oder einen anderen Overhead erfordern, der dazu führt, dass ein solcher Test anders ausfällt als zwei Gruppen von 500. Außerdem kann ein bestimmter Wert dazu führen, dass ein bestimmter Abschnitt des Codes ausgeführt wird, der besonders zeitaufwendig oder zeitsparend ist. So kann z.B. das zufällige Testen von Code mit einer numerischen Eingabe bei einer relativ kleinen Anzahl von Werten für eine solche Eingabe einen Offline-Vorgang auslösen (z.B. Zugriff auf einen Remote-Server, Einlegen eines Bandlaufwerks usw.). Dementsprechend kann das Ausführen eines Tests, der eine festgelegte Anzahl von Iterationen aufweist, zwei oder mehr Mal, dazu führen, dass die für jeden Test benötigte Zeit variiert. Bei einer weiteren Ausführungsform können diese Zeiten aufgezeichnet und eine Wahrscheinlichkeitskurve der Zeiten mit den sich daraus ergebenden Konfidenzwerten erstellt werden (z.B. dauert ein Test mit 1.000.000 Eingaben auf der Grundlage einer Vielzahl von Tests mit jeweils 1.000 Iterationen mit 97,7%iger Wahrscheinlichkeit 75 Sekunden +/- 10 Sekunden).Considering the time needed, an alternative can be chosen, e.g. B. to perform the determination on another computer system and/or perform fewer operations. For example, assuming a standard distribution where a hypothesis strength of 50% corresponds to a cumulative percentile of 50%, a first test can be performed. An additional or more powerful processor can be used to achieve a hypothesis strength of 75%, which corresponds to a cumulative percentile of 75%, within the same time window. It should be noted that the tests may deviate from a particular statistical curve due to the complexity or detail of a particular value being tested. For example, running 1,000 tests on a section of code may require setup or other overhead that causes such a test to fail differently than two groups of 500. Also, a specific value may cause a specific section of the Code is executed that is particularly time-consuming or time-saving. For example, randomly testing code with a numeric input given a relatively small number of values for such an input may trigger an offline operation (e.g., accessing a remote server, mounting a tape drive, etc.). Accordingly, running a test that has a fixed number of iterations two or more times may cause the time required for each test to vary. In another embodiment, these times can be recorded and a probability curve of the times constructed with the resulting confidence values (e.g., a test with 1,000,000 inputs based on multiple tests of 1,000 iterations each takes 75 with 97.7% probability seconds +/- 10 seconds).
Bei einer weiteren Ausführungsform entscheidet der Benutzer, dass die angestrebte Fehlerrate für die funktionale Äquivalenz ein bestimmter Prozentsatz (D) ist. Der Benutzer wählt ferner ein statistisches Black-Box-Stichprobenverfahren mit einem Stichprobenumfang N. Bei einer solchen Ausführungsform wird die Hypothesenstärke (HS) als Zufallswahrscheinlichkeit für die Nichtentdeckung eines Fehlers bei der angenommenen Fehlerrate berechnet, wie in Formel 1 angegeben, wenn kein Fall unterschiedlicher Ausgaben bei gleichen Eingaben für einen Kandidatencode und einen Vorzugscode entdeckt wird.In another embodiment, the user decides that the target error rate for functional equivalence is a certain percentage (D). The user also selects a black-box statistical sampling method with a sample size N. In such an embodiment, the hypothesis strength (HS) is calculated as the random probability of not detecting an error at the assumed error rate, as given in
Funktionale Äquivalenz ist die Eigenschaft zweier Rechenfunktionen, äquivalent zu sein. Äquivalenz kann in verschiedenen Ausführungsformen ausgestaltet sein. Eine Ausführungsform ist formal (oder deduktiv) und eine andere Ausführungsform ist empirisch (oder induktiv). Nach der formalen Ausführungsform sind zwei Funktionen äquivalent, wenn die von der einen ausgeführten aufeinanderfolgenden Operationen mathematisch oder logisch auf die von der anderen ausgeführten aufeinanderfolgenden Operationen reduziert werden können. Nach der empirischen Ausführungsform ist der von den beiden Funktionen zurückgegebene Wert gleich, wenn die als Eingabe eingegebenen Argumente gleich sind. Die formale Ausführungsform kann die empirische Ausführungsform nach sich ziehen, aber nicht umgekehrt.Functional equivalence is the property of two arithmetic functions to be equivalent. Equivalency can be embodied in various embodiments. One embodiment is formal (or deductive) and another embodiment is empirical (or inductive). According to the formal embodiment, two functions are equivalent if the consecutive operations performed by one can be mathematically or logically reduced to the consecutive operations performed by the other. According to the empirical embodiment, if the arguments given as input are the same, the value returned by the two functions is the same. The formal embodiment can entail the empirical embodiment, but not vice versa.
Die empirische Ausführungsform geht von einer theoretischen Fehlerwahrscheinlichkeit ungleich Null aus, selbst wenn diese Wahrscheinlichkeit sehr gering ist. Die Stärke der Hypothese der funktionalen Äquivalenz ist dann der Grad des Vertrauens, dass diese Ausfallwahrscheinlichkeit durch eine extrem niedrige Obergrenze begrenzt ist.The empirical embodiment assumes a non-zero theoretical error probability, even if this probability is very small. The strength of the functional equivalence hypothesis is then the level of confidence that this probability of failure is bounded by an extremely low upper bound.
Die funktionale Äquivalenz oder die Stärke der Funktionsäquivalenzhypothese (Functional Equivalence Hypothesis Strength, FEHS) kann wie folgt definiert werden:Functional equivalence or Functional Equivalence Hypothesis Strength (FEHS) can be defined as follows:
Angenommen, „G“ und „F“ seien Funktionen, deren funktionale Äquivalenz zueinander derzeit unbekannt ist. Die G-F-Funktionsäquivalenzhypothese ist die Hypothese, dass die Funktionen G und F induktiv äquivalent sind, d.h. in Bezug auf ihre Eingaben und Ausgaben. Formal gilt für alle Eingaben („x“), dass G(x) äquivalent zu F(x) ist, daher haben wir Formel 2:Suppose "G" and "F" are functions whose functional equivalence to each other is currently unknown. The G-F function equivalence hypothesis is the hypothesis that the functions G and F are inductively equivalent, i.e. with respect to their inputs and outputs. Formally, for all inputs (“x”), G(x) is equivalent to F(x), so we have formula 2:
Die Fehlerrate (Defect Rate, DR) einer G-F Funktionsäquivalenzhypothese ist die Wahrscheinlichkeit, dass F und G bei einer Eingabe zwei unterschiedliche Werte liefern. Wenn x eine zufällige Eingabe für F und G ist, lautet die Formel 3:The defect rate (DR) of a G-F functional equivalence hypothesis is the probability that F and G will give two different values given an input. If x is a random input to F and G, the
Wir definieren einen Parameter namens Maximale Fehlerrate (Maximum Defect Rate, MDR) als die maximale Fehlerrate, die in einem bestimmten Kontext akzeptabel ist. Als Standardwert wird diese Rate auf MDR = 0,0001 festgelegt.We define a parameter called Maximum Defect Rate (MDR) as the maximum defect rate that is acceptable in a given context. By default, this rate is set to MDR = 0.0001.
Die Stärke, siehe Formel 4, der G-F Funktionsäquivalenzhypothese ist das Vertrauensniveau für ihre Fehlerrate, die nach N erfolgreichen Versuchen zwischen 0 und 0,0001 gewählt wird, siehe Formel 5.The strength, see
Formal, gemäß Formel 6:Formally, according to formula 6:
Es ist zu beachten, dass die Fehlerrate ein Wert zwischen 0 und 1 oder ein engerer Abschnitt davon ist. Zum Beispiel, und wie hier verwendet (siehe Formel 5) ist die Fehlerrate 0,0001. Selbstverständlich können auch andere Fehlerraten gewählt werden. Bei einer anderen Ausführungsform können die ausgewählten Eingaben auch zufällig (z.B. eine unbeeinflusste Auswahl von Werten für alle potenziellen Werte eines bestimmten Datentyps), gewichtet zufällig (z.B. eine bevorzugte Tendenz, einen wahrscheinlicheren Wert auszuwählen, wie z.B. eine Normalverteilungskurve von Eingaben, die dazu führen kann, dass die Auswahl einer ähnlichen Normalverteilungskurve folgt), zurückliegend (z.B. ein Satz bekannter früherer Eingaben) oder andere Wertegruppen sein, die gemäß bekannten oder vermuteten Verteilungen bestimmt werden können. Ein Beispiel: Eine Eingabe für eine kurze Ganzzahl („short“) mit Vorzeichen ist -32.768 bis 32.767. Wenn die Eingabe jedoch den Variablennamen „Monat“ hat, kann der Wert für die „short“ über eine Nachschlagefunktion oder einen anderen Datensatz aus der Menge der Zahlen von 1 bis 12 ausgewählt werden, die die möglichen Werte für einen Monat angeben. Um jedoch mögliche Fehler bei einer solchen Auswahl zu vermeiden (z.B. können Monate aus einem bestimmten Ereignis akkumuliert werden und nicht nur ein Kalenderwert sein), können zusätzliche und/oder andere Verteilungen von Eingaben verwendet werden. Es sollte klar sein, dass ein solcher Ansatz eine optionale Ausführungsform ist, da der Vergleich zweier Funktionen, die Kalendermonate verwenden und einen großen Wert eingeben, beide einen Fehlercode zurückgeben oder anderweitig eine äquivalente Verarbeitung bieten sollten.It should be noted that the error rate is a value between 0 and 1 or a narrower fraction thereof. For example, and as used here (see Formula 5), the error rate is 0.0001. Of course, other error rates can also be selected. In another embodiment, the selected inputs can also be random (e.g., an unbiased selection of values for all potential values of a particular data type), weighted random (e.g., a preferred tendency to select a more likely value, such as a normal distribution curve of inputs that can lead to that the selection follows a similar normal distribution curve), historical (e.g., a set of known prior inputs), or other sets of values that can be determined according to known or conjectured distributions. For example, an input for a signed short integer is -32,768 to 32,767. However, if the input has the variable name "Month", the value for the "short" can be selected via a lookup function or other data set from the set of numbers from 1 to 12 that indicate the possible values for a month. However, to avoid possible errors in such a selection (e.g. months from a particular event can be accumulated and not just a calendar value), additional and/or different distributions of inputs can be used. It should be clear that such an approach is an optional embodiment, since comparing two functions that use calendar months and input a large value should both return an error code or otherwise provide equivalent processing.
Bei einer anderen Ausführungsform kann die Hypothesenstärke einer statistischen Konfidenz entsprechen. Bei anderen Ausführungsformen stellt die Hypothesenstärke ein ähnliches Konzept, aber eine andere Darstellung der ausgewählten Eingabe dar, z. B. wenn die als Eingaben ausgewählten Werte nicht zufällig oder nicht vollständig zufällig sind. Dementsprechend, und bei einer anderen Ausführungsform, wenn weniger als alle möglichen Eingaben berücksichtigt werden, kann die Auswahl der Eingabemenge eine Zufallsstichprobe aller möglichen Eingaben sein. Bei anderen Ausführungsformen können die Eingaben jedoch teilweise zufällig (z.B. zufällig, aber mit mindestens einem bestimmten Wert, wie Null und/oder Eins für eine ganze Zahl), nicht zufällig, festgelegt oder gezielt ausgewählt werden, wie z.B. als Ergebnis einer Pfadanalyse, um die Übereinstimmung mit dem Ziel sicherzustellen, dass Codezweige mindestens eine gewünschte Anzahl von Malen getestet werden. So kann beispielsweise ein Quellcode-Kandidat analysiert und bestimmt werden, dass er eine Verzweigung aufweist, die auftritt, wenn eine ganze Zahl zwischen 1 und 50 liegt. Dementsprechend können Werte ausgewählt werden, bei denen ein mehr als zufälliger Abschnitt der Eingaben zwischen 1 und 50 liegt. Zusätzlich oder alternativ kann ein Quellcode-Kandidat mit einer begrenzten oder durchgezählten Verzweigungsart auf der Grundlage einer relativ kleinen Anzahl von Eingaben im Vergleich zu allen möglichen Werten für eine Eingabe so gewichtet werden, dass mehr oder sogar alle Werte verwendet werden, die für die Verzweigung oder eine andere Operation entscheidend sind. Zeit- und/oder andere Ressourcenschätzungen können entsprechend vorgenommen werden. Wenn z. B. eine ganze Zahl zwischen 1 und 50 einen Aufruf an ein Sicherungsband auslöst, der zehn Sekunden pro Aufruf erfordert, und jeder andere Wert einen solchen zeitintensiven Vorgang nicht ausführt, kann die Zeitschätzung dieses Ereignis auf der Grundlage der Anzahl der Eingabewerte widerspiegeln, die in den Bereich von 1 bis 50 fallen werden bzw. für die geschätzt wird, dass sie in diesen Bereich fallen. Bei einer weiteren Ausführungsform kann alternativ ein anderes System, z. B. ein Solid-State-Backup-System, gewählt werden, um die für den Zugriff auf Daten auf einem Magnetband erforderliche Zeit zu vermeiden. Die zugeordneten Kosten (z.B. Einrichtungsaufwand, Zuweisung anderer Ressourcen, Aufhebung der Prioritäten anderer Programme usw.) können in Betracht gezogen werden. Als Vorteil kann die Bestimmung der Äquivalenz in einem bestimmten Umfang auf der Grundlage der Rechenanforderungen und der verfügbaren Systemkapazitäten vorgenommen werden und umgekehrt.In another embodiment, the hypothesis strength may correspond to statistical confidence. In other embodiments, hypothesis strength represents a similar concept but a different representation of the selected input, e.g. B. when the values selected as inputs are not random or not completely random. Accordingly, and in another embodiment when less than all possible inputs are considered, the selection of the input set may be a random sample of all possible inputs. However, in other embodiments, the inputs may be partially random (e.g., random but having at least one specific value, such as zero and/or one for an integer), non-random, fixed, or deliberately selected, such as as a result of path analysis, to determine the Consistent with the goal of ensuring that code branches are tested at least a desired number of times. For example, a candidate source code may be analyzed and determined to have a branch that occurs when an integer is between 1 and 50. Accordingly, values can be chosen where a more than random portion of the inputs falls between 1 and 50. Additionally or alternatively, a source code candidate with a finite or enumerated branch type based on a relatively small number of inputs compared to all possible values for an input can be weighted such that more or even all values necessary for the branch or another operation are crucial. Time and/or other resource estimates may be made accordingly. if e.g. For example, if an integer between 1 and 50 triggers a call to a backup tape that requires ten seconds per call, and any other value does not perform such a time-consuming operation, the time estimate can reflect that event based on the number of input values passed in will fall or are estimated to fall within the range of 1 to 50. Alternatively, in another embodiment, another system, e.g. a solid-state backup system, may be chosen to avoid the time required to access data on magnetic tape. The associated costs (e.g., setup effort, allocation of other resources, deprioritization of other programs, etc.) may be considered. Advantageously, the determination of equivalence can be made to a certain extent based on the computing requirements and the available system capacities and vice versa.
Die Eingabewerte können gemäß ihrem Datentyp ausgewählt werden. Beispielsweise ist das Testen aller möglichen Buchstaben-Kombinationen einer Zeichenkette wahrscheinlich nicht besonders nützlich. Das Testen einer anderen Anzahl von Zeichen, einer anderen Mischung aus Groß- und Kleinbuchstaben, Sonderzeichen, Zahlen und/oder anderen Eingaben kann jedoch einen höheren Testwert haben, da Fehler bei der Verarbeitung von Zeichenketten bekanntermaßen häufiger auftreten, wenn unerwartete Werte bereitgestellt werden. Für Datenstrukturen (z.B. eine bestimmte Kombination aus einer Vielzahl von Datentypen) kann die Testzeit anhand der sie bildenden Datentypen geschätzt werden. Bei einigen Datenstrukturen und Standarddatentypen kann jedoch eine kleine Stichprobe ausgeführt und die Zeit gemessen werden, um die für einen bestimmten Äquivalenztest benötigte Zeit genauer zu bestimmen, damit die gewählte Hypothesenstärke erreicht wird. Datentypen und/oder Datenstrukturen, die selektiv auf Ressourcen mit unbekannter Antwortzeit zugreifen, können durch einen solchen Pilotversuch genauer bewertet werden. Die Größe der Stichprobe kann festgelegt oder dynamisch bestimmt werden, basierend auf der Variabilität der Zeit, die eine bestimmte Iteration benötigt, um eine Ausgabe zu erzeugen. Wenn beispielsweise zwanzig Pilotversuche ausgeführt werden und die Abweichung der Testdauer für jede Iteration beträchtlich ist, kann ein zusätzlicher Test erforderlich sein, verglichen mit einem anderen Äquivalenztest mit zwanzig Pilotversuchen, die innerhalb desselben Zeitrahmens eine Antwort liefern. Alternativ kann anstelle einer einzelnen Zeitschätzung auch eine Testzeitspanne oder eine Wahrscheinlichkeitskurve angegeben werden. In ähnlicher Weise können bestimmte Ressourcen während eines Äquivalenztests selektiv verfügbar sein, genutzt und/oder benötigt werden. Ein Ressourcen- und/oder Zeitbereich kann angegeben werden, um die schwankende Verfügbarkeit einer bestimmten Ressource für einen Äquivalenztest anzuzeigen.The input values can be selected according to their data type. For example, testing all possible combinations of letters in a string is probably not very useful. However, testing a different number of characters, a different mix of uppercase and lowercase letters, special characters, numbers, and/or other input may have a higher test value, since string processing errors are known to occur more frequently when unexpected values are provided. For data structures (e.g. a specific combination of a large number of data types), the test time can be estimated using the data types that make up them. However, for some data structures and standard data types, a small sample can be run and timed to more accurately determine the time required for a given equivalence test to reach the selected hypothesis strength. Data types and/or data structures that selectively access resources with an unknown response time can be evaluated more precisely by such a pilot test. The sample size can be fixed or determined dynamically based on the variability of the time it takes a given iteration to produce an output. For example, if twenty pilot trials are run and the variation in test duration for each iteration is significant, an additional test may be required compared to another equivalence test with twenty pilot trials yielding an answer within the same time frame. Alternatively, instead of an individual time estimate, a test time period or a probability curve can also be specified. Similarly, certain resources may be selectively available, utilized, and/or required during an equivalence test. A resource and/or time range can be specified to indicate the fluctuating availability of a particular resource for an equivalence test.
Die Ressourcenbelegungskomponente 800 der Äquivalenzbestimmung kann die für die Ausführung einer Äquivalenzbestimmung verfügbaren Ressourcen angeben. Dementsprechend kann die Skala 804 so ausgebildet sein, dass sie verfügbare Verarbeitungselemente und -kombinationen anzeigt, die für eine bestimmte Einstellung exklusiv sein können oder nicht. Beispielsweise kann ein einzelner Mikroprozessor, der eine Aufgabe mit „hoher Priorität“ ausführt, auch Operationen einer Aufgabe mit „niedriger Priorität“ ausführen, aber die Zuweisung einer anderen Komponente, z. B. eines „Servers“, kann die Zuweisung eines lokalen Prozessors aufheben. Bei anderen Ausführungsformen kann die Verwendung einer anderen Komponente, z. B. eines „Servers“, zusätzlich sein, und ein lokaler Prozessor führt zumindest einige der Operationen aus. Bei anderen Ausführungsformen ermöglicht die Ressourcenbelegungskomponente der Äquivalenzbestimmung 800 einem Benutzer die Auswahl, welche Komponenten aus einem Pool von verfügbaren Komponenten für die Äquivalenzbestimmung verwendet werden.The
Bei einer anderen Ausführungsform ist die Ressourcenbelegungskomponente 800 der Äquivalenzbestimmung eine Ausgabe, die Indizien für Rechenressourcen liefert, die für die Durchführung einer Äquivalenzbestimmung ausgeführt werden, ausgeführt werden können und/oder ausgeführt wurden.In another embodiment, the
Bei einer Ausführungsform erhält Schritt 902 einen Schwellenwert für die Äquivalenzbegrenzung. Schritt 902 kann ausgeführt werden, z. B. durch die Begrenzungskomponente 700 der Äquivalenzbestimmung, die Ressourcenbelegungskomponente 800der Äquivalenzbestimmung, den Zugriff auf einen Datensatz in einem Speicher oder einer Datenspeicherkomponente und/oder andere Eingabemittel. Schritt 904 führt einen oder mehrere der Unterprozesse 906, 908 und 910 gemäß der in Schritt 902 empfangenen Eingabe aus. Die Teilprozesse 906, 908 und 910 können parallel oder nacheinander ausgeführt werden, je nach Wahl der Realisierung. Der Teilprozess 906 wird ausgeführt und Schritt 912 bestimmt, ob die in Schritt 902 empfangene Eingabe eine Zeitbeschränkung darstellt. Wenn ja, wird Schritt 912 ausgeführt, um eine Uhr, einen Countdown, einen Timer oder andere Mittel einzustellen, mit denen die Verarbeitung (z.B. die Schritte 924 und 926) beendet werden kann, wenn ein zeitlicher Zustand eintritt, der durch die in Schritt 902 empfangene Eingabe angezeigt wird. Der Teilprozess 908 wird ausgeführt und Schritt 916 bestimmt, ob die Ressource durch die in Schritt 902 empfangene Eingabe begrenzt ist, und wenn ja, führt Schritt 918 den Zuweisungsschritt bzw. Belegungsschritt aus. Schritt 918 kann Ressourcen belegen, z. B. durch Signalisierung an eine überwachende Ressource, die Verwendung von überwachten Ressourcen zu belegen und/oder den Zugriff auf fremde Prozesse für die überwachte Ressource während der Ausführung mindestens eines Abschnitts von Prozess 900 (z. B. Schritte 924 und 926) zu verweigern. Der Unterprozess 910 wird ausgeführt und der Schritt 920 bestimmt, ob der Prozess 900 in seiner Hypothesenstärke („HS“) begrenzt ist, so dass die Schritte 924 auszuführen sind, bis eine bestimmte Hypothesenstärke des Ergebnisses bestimmt ist.In one embodiment,
Bei einer Ausführungsform wird mindestens einer der Schritte 912, 916, 920 positiv bestätigend bestimmt. Wird einer der Schritte 912, 916, 920 negativ bestimmt, kann der nächste Schritt (z.B. 914, 918 bzw. 922) ausgelassen werden. Wenn einer der Schritte 912, 916, 920 nacheinander ausgeführt wird, kann nach Abschluss eines oder mehrerer der Schritte 912, 916, 920 ein nicht ausgeführter Schritt 912, 916, 920 ausgeführt werden.In one embodiment, at least one of
Bei einer anderen Ausführungsform kann der Schritt 904 einen Konflikt zwischen zwei oder mehreren der Teilprozesse 906, 908 und 910 auflösen. Zum Beispiel kann ein Benutzer eine Anforderung eingeben, eine Äquivalenz-Bestimmung auszuführen, dabei eine festgelegte Verarbeitungsressource zu verwenden, eine 99,8%ige Hypothesenstärke zu erzeugen und nach fünfzehn Minuten zu stoppen. Ein Prozessor, wie z.B. Prozessor 106, kann Schritte des Prozesses 900 ausführen und bestimmen, dass die angeforderte Äquivalenzbestimmung nicht innerhalb des angegebenen Zeitlimits ausgeführt werden kann, um ein Ergebnis mit dem angegebenen Grad der Hypothesenstärke zu liefern. Dementsprechend kann der Prozess 900 in einer Schleife (nicht dargestellt) zum Schritt 902 zurückkehren, um eine alternative Eingabe vom Benutzer zu erhalten. Wie man sich vorstellen kann, kann das System, das den Prozess 900 ausführt, den Benutzer auffordern, ein erreichbares Ergebnis in Bezug auf Zeit, Hypothesenstärke und Ressourcen einzugeben. Alternativ kann der Prozess 900 so lange fortgesetzt werden, bis eine der Bedingungen (siehe Schritt 926) erfüllt ist, um den Benutzer zu fragen, ob die Ergebnisse ausreichend sind oder ob er fortfahren soll. Zum Beispiel kann der Benutzer nach einem ersten Schwellwert (z.B. bestimmt Schritt 928, dass fünfzehn Minuten vergangen sind) aufgefordert werden, z.B. zu sagen: „Die fünfzehnminütige Zeitgrenze wurde mit einer Hypothesenstärke von 9,8% erreicht. Beenden? Weiter?“ und entsprechend fortsetzen oder beenden. Alternativ kann der Benutzer aufgefordert werden, zusätzliche Verarbeitungsressourcen zu genehmigen und/oder zuzuweisen, und/oder eine Komponente für die automatische Ressourcenzuweisung kann Verarbeitungsressourcen zuweisen, um eine Hypothesenstärke und/oder Zeitbeschränkung einzuhalten.In another embodiment, step 904 may resolve a conflict between two or more of
Sobald Einschränkungen bekannt sind oder bekannt werden (z.B. eine Unterbrechung), führt Schritt 924 Verarbeitungsvorgänge aus, die der Bestimmung der Äquivalenz zugeordnet sind. Bei einer Ausführungsform kann es sich bei den Verarbeitungsvorgängen um eine Reihe von Iterationen eines Tests handeln, wobei eine bestimmte Eingabe sowohl für einen Kandidaten-Quellcode als auch für einen Vorzugsquellcode bereitgestellt wird und die Ausgaben beider dann auf Äquivalenz, Prozessortaktzyklen, Prozessoroperationen, FLOPs usw. bewertet werden. Zusätzlich oder alternativ kann eine Umrechnung eines Wertes in einen anderen vorgesehen und genutzt werden (z.B. kann die Anzahl der Iterationen in Prozessorzyklen gewandelt werden usw.)Once constraints are known or become known (e.g., an interrupt),
Als nächstes werden in Schritt 924 Verarbeitungsvorgänge von der ausgewählten/zugewiesenen Verarbeitungsressource ausgeführt. Schritt 926 bestimmt, ob der Verarbeitungsschritt 924 abgebrochen werden soll. Schritt 926 weist die Unterschritte 928, 930 und 932 auf. Bei einer Ausführungsform ist die Verarbeitung zu unterbrechen, wenn einer der Unterschritte 928, 930 und 932 zutrifft, und der Prozess 900 wird mit Schritt 934 fortgesetzt. Bei einer anderen Ausführungsform wird, wenn alle Unterschritte 928, 930 und 932 negativ bestimmt werden, der Prozess 900 fortgesetzt und mit Schritt 924 fortgefahren. Schritt 928 weist den Schritt 928 auf, der bestimmt, ob ein Zeitlimit erreicht wurde, wie z. B. eine Zeit, Dauer usw., die in Schritt 914 festgelegt wurde. Schritt 928 weist Schritt 930 auf, der bestimmt, ob die Äquivalenz fehlgeschlagen ist, d.h. eine Operation von Schritt 924 hat ergeben, dass ein Kandidatenquellcode und ein Vorzugsquellcode, wenn sie mit äquivalenten Eingaben versehen sind, keine äquivalenten Ausgaben erzeugen. Schritt 928 weist den Schritt 932 auf, der bestimmt, ob eine bestimmte Hypothesenstärke („HS“), wie sie in Schritt 922 festgelegt wurde, erreicht wurde. Anschließend wird Schritt 934 ausgeführt, in dem die Äquivalenz oder das Fehlen der Äquivalenz angezeigt wird, wenn Schritt 930 bejaht wird. Optional kann in Schritt 934 eine Substitutionsoperation ausgeführt werden, bei der der Vorzugsquellcode den Kandidatenquellcode ersetzt.Next, in
Die
Die
Offenbart werden ebenfalls die folgenden Aspekte:
- Verfahren, das Folgendes aufweist:
- Abrufen eines Kandidaten-Quellcodes, der eine Kandidatenfunktion aufweist und eine erste menschenlesbare Maschinenanweisung aufweist, durch einen Prozessor aus einem Datenspeicher;
- Zugreifen des Prozessors aus dem Datenspeicher auf eine Vorzugsfunktion, die eine zweite menschenlesbare Maschinenanweisung umfasst und zuvor als autorisierter Quellcode identifiziert wurde;
- Zugreifen des Prozessors auf einen Schwellenwert für die Äquivalenzbegrenzung;
- automatisches Bestimmen der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion durch den Prozessor, wobei der Prozessor eine Vielzahl von Verarbeitungsoperationen ausführt, die die Bestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion aufweisen, bis der Schwellenwert für die Äquivalenzbegrenzung erreicht ist;
- bei Feststellung der Äquivalenz, automatisches Bereitstellen von Äquivalenzindikatoren durch den Prozessor, die mit der Kandidatenfunktion und der Vorzugsfunktion verbunden sind;
- bei Vorliegen der Indizien automatische Umwandlung des Kandidaten-Quellcodes durch den Prozessor, wobei die Kandidatenfunktion durch die Vorzugsfunktion ersetzt wird; und
- die Ausgabe des transformierten Kandidaten-Quellcodes.
- Wobei der Schwellenwert für die Äquivalenzbegrenzung mindestens eines der folgenden Elemente aufweist: Niveau der Hypothesenstärke, Anzahl der Verarbeitungsvorgänge, die erforderlich sind, um das Niveau der Hypothesenstärke zu erreichen, Taktzeit, Prozessorzyklen, Verarbeitungsressourcen, die die Verarbeitungsvorgänge zusätzlich zum Prozessor durchführen, und Verarbeitungsressourcen, die die Verarbeitungsvorgänge ohne den Prozessor durchführen.
- Wobei die Vorzugsfunktion menschenlesbare Elemente aufweist, die nicht mit der zweiten menschenlesbaren Maschinenanweisung verbunden sind.
- Wobei der Schritt der Bestimmung der Äquivalenz fehlschlägt, wenn festgestellt wird, dass eine Anzahl von Eingabe-/Ausgabeparametern zwischen der Kandidatenfunktion und der Vorzugsfunktion unterschiedlich ist.
- Wobei der Schritt der Bestimmung der Äquivalenz fehlschlägt, wenn:
- bestimmt wird, dass mindestens eines Eingabe-/Ausgabeparameter sich zwischen der Kandidatenfunktion und der Vorzugsfunktion unterscheidet; und
- wobei die Differenz eine Differenz von Äquivalenzklassen aufweist.
- Bereitstellen einer ersten maschinenlesbaren Übersetzung der Kandidatenfunktion;
- Bereitstellen einer zweiten maschinenlesbaren Übersetzung der Vorzugsfunktion;
- Ausführen sowohl der ersten maschinenlesbaren Übersetzung als auch der zweiten maschinenlesbaren Übersetzung mit Eingaben aus einem endlichen Satz von Eingaben; und
- Bestimmen der Äquivalenz nach dem Schritt des Ausführens sowohl der ersten maschinenlesbaren Übersetzung als auch der zweiten maschinenlesbaren Übersetzung, die jeweils äquivalente Werte von jeder der ersten maschinenlesbaren Übersetzung und der zweiten maschinenlesbaren Übersetzung der Kandidatenfunktion ausgeben.
- Wobei der Schritt des Bestimmens der Äquivalenz weiterhin aufweist:
- Ableiten einer logischen Gleichung für die Kandidatenfunktion;
- Zugreifen auf eine logische Gleichung für die Vorzugsfunktion; und
- wobei die Äquivalenz nicht festgestellt wird, wenn festgestellt wird, dass die logische Gleichung für die Kandidatenfunktion sich von der logischen Gleichung für die Vorzugsfunktion unterscheidet.
- Wobei die Bestimmung, ob die logische Gleichung der Kandidatenfunktion als äquivalent zu der logischen Gleichung der Vorzugsfunktion bestimmt wird, ferner aufweist:
- Bereitstellen der logischen Gleichung für die Kandidatenfunktion und der logischen Gleichung für die Vorzugsfunktion für einen automatischen Theorembeweiser; und
- Empfang von Indizien aus dem automatischen Theorembeweiser, die die Äquivalenz anzeigen.
- Wobei die Vorzugsfunktion eine Gruppe von Anweisungen aufweist, die, wenn sie in Maschinencode umgewandelt werden, eine Maschine veranlassen, die Vorzugsfunktion auf eine zuvor bestimmte optimale Weise auszuführen.
- Wobei die zuvor bestimmte optimale Art und Weise eine bestimmte Art und Weise aufweist, die mit mindestens einem Sicherheitsziel übereinstimmt.
- Wobei die Maschine einen Prozessor aufweist und die zuvor bestimmte optimale Art und Weise eine bestimmte Anzahl von Prozessoroperationen aufweist.
- Wobei die Maschine einen Speicher aufweist und die zuvor bestimmte optimale Art und Weise eine bestimmte Größe des Speichers aufweist, die zum Speichern des Maschinencodes erforderlich ist.
- Wobei die Vorzugsfunktion eine Gruppe von Anweisungen aufweist, die zuvor als prägnanter Quellcode identifiziert wurden.
- Wobei der Schritt des Bestimmens der Äquivalenz weiterhin aufweist:
- Erzeugen einer Gruppe von Äquivalenzklassen für die Kandidatenfunktion aus der Kandidatenfunktion, wobei die Äquivalenzklassen eine Gruppe von äquivalenten Funktionen aufweisen und jedes Element der Gruppe eine Funktion-zu-Quelle-Zuordnung hat.
- Wobei die Vorzugsfunktion ein prägnantestes Element aufweist, das gemäß einer abstrakten syntaktischen Strukturbestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion ausgewählt wird.
- Wobei die abstrakte syntaktische Struktur einen abstrakten Syntaxbaum (AST) aufweist.
- System, aufweisend:
- einen Prozessor, der außerdem einen Speicher und eine erste Kommunikationsschnittstelle aufweist;
- einen Datenspeicher, wobei der Datenspeicher eine zweite zugängliche Kommunikationsschnittstelle aufweist;
- der Prozessor:
- über die erste und zweite Kommunikationsschnittstelle einen Kandidaten-Quellcode abruft, der eine Kandidatenfunktion hat und eine erste menschenlesbare Maschinenanweisung enthält;
- auf eine Vorzugsfunktion zugreift, die eine zweite menschenlesbare Maschinenanweisung aufweist und zuvor als autorisierter Quellcode identifiziert wurde;
- auf einen Schwellenwert für die Äquivalenzbegrenzung zugreift;
- die Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion bestimmt, wobei der Prozessor eine Vielzahl von Verarbeitungsoperationen ausführt, die die Bestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion aufweisen, bis der Schwellenwert für die Äquivalenzbegrenzung erreicht ist,
- bei festgestellter Äquivalenz, Äquivalenzkennzeichen für die Kandidatenfunktion und die Vorzugsfunktion erstellt und bereitstellt;
- bei Bereitstellen der Indizien, den Kandidaten-Quellcode umwandelt, wobei auch die Kandidatenfunktion durch die Vorzugsfunktion ersetzt wird; und
- den transformierten Kandidaten-Quellcodes über die erste Kommunikationsschnittstelle ausgibt.
- Nicht-flüchtiges computerlesbares Medium mit darauf befindlichen Anweisungen, die, wenn sie von einem Computer ausgeführt werden, den Computer dazu veranlassen:
- aus einem Datenspeicher einen Kandidaten-Quellcode abzurufen, der eine Kandidatenfunktion hat und eine erste menschenlesbare Maschinenanweisung enthält;
- aus dem Datenspeicher auf eine Vorzugsfunktion zuzugreifen, die eine zweite menschenlesbare Maschinenanweisung umfasst und zuvor als autorisierter Quellcode identifiziert wurde;
- auf einen Schwellenwert für die Äquivalenzbegrenzung zuzugreifen;
- Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion durch Ausführen einer Vielzahl von Verarbeitungsoperationen automatisch zu bestimmen, was die Bestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion aufweist, bis der Schwellenwert für die Äquivalenzbegrenzung erreicht ist;
- bei Feststellung der Äquivalenz, Äquivalenzindikatoren durch den Prozessor automatisch bereitzustellen, die mit der Kandidatenfunktion und der Vorzugsfunktion verbunden sind;
- bei Vorliegen der Indizien, den Kandidaten-Quellcodes durch den Prozessor automatisch umzuwandeln, wobei die Kandidatenfunktion durch die Vorzugsfunktion ersetzt wird; und
- den transformierten Kandidaten-Quellcode auszugeben.
- A method that includes:
- retrieving, by a processor, from a data store, candidate source code having a candidate function and having a first human-readable machine instruction;
- the processor accessing from the data store a preference function comprising a second human-readable machine instruction previously identified as authorized source code;
- accessing the processor to an equivalence constraint threshold;
- the processor automatically determining the equivalence between the candidate function and the preferred function, the processor performing a plurality of processing operations including determining the equivalence between the candidate function and the preferred function until the equivalence constraint threshold is met;
- upon determination of equivalence, the processor automatically providing equivalence indicators associated with the candidate function and the preferred function;
- upon the presence of the indicia, the processor automatically converting the candidate source code, replacing the candidate function with the preferred function; and
- the output of the transformed candidate source code.
- Where the equivalence constraint threshold comprises at least one of the following: hypothesis strength level, number of processing operations required to reach the hypothesis strength level, clock time, processor cycles, processing resources required by the perform processing operations in addition to the processor, and processing resources that perform the processing operations without the processor.
- Wherein the preference function comprises human-readable elements that are not associated with the second human-readable machine instruction.
- Wherein the step of determining equivalence fails if it is determined that a number of input/output parameters differ between the candidate function and the preferred function.
- Where the step of determining equivalence fails if:
- determining that at least one input/output parameter differs between the candidate function and the preferred function; and
- where the difference has a difference of equivalence classes.
- providing a first machine-readable translation of the candidate function;
- providing a second machine-readable translation of the preference function;
- performing both the first machine-readable translation and the second machine-readable translation with inputs from a finite set of inputs; and
- determining equivalence after the step of performing both the first machine-readable translation and the second machine-readable translation that each output equivalent values of each of the first machine-readable translation and the second machine-readable translation of the candidate function.
- Wherein the step of determining equivalence further comprises:
- deriving a logical equation for the candidate function;
- accessing a logical equation for the preference function; and
- wherein equivalence is not determined if the logical equation for the candidate function is determined to be different from the logical equation for the preferred function.
- Wherein determining whether the logical equation of the candidate function is determined to be equivalent to the logical equation of the preference function further comprises:
- providing the logical equation for the candidate function and the logical equation for the preferred function to an automatic theorem prover; and
- Receiving evidence from the automatic theorem prover indicating equivalence.
- Where the preference function comprises a set of instructions which, when converted to machine code, cause a machine to execute the preference function in a predetermined optimal manner.
- Wherein the previously determined optimal manner comprises a determined manner that conforms to at least one security objective.
- Wherein the machine has a processor and the predetermined optimal manner has a certain number of processor operations.
- Wherein the machine has memory and the predetermined optimal way has a certain amount of memory required to store the machine code.
- Where the preference function comprises a set of instructions previously identified as concise source code.
- Wherein the step of determining equivalence further comprises:
- generating a set of equivalence classes for the candidate function from the candidate function, the equivalence classes comprising a set of equivalent functions and each member of the set having a function-to-source mapping.
- Wherein the preference function has a most succinct element that is selected according to an abstract syntactic structure determination of the equivalence between the candidate function and the preference function.
- Where the abstract syntactic structure comprises an abstract syntax tree (AST).
- system comprising:
- a processor also having a memory and a first communication interface;
- a data store, the data store having a second accessible communication interface;
- the processor:
- retrieves, via the first and second communication interfaces, candidate source code having a candidate function and including a first human-readable machine instruction;
- accesses a preferred function having a second human-readable machine instruction and previously identified as authorized source code;
- accesses an equivalence limit threshold;
- determining the equivalence between the candidate function and the preferred function, wherein the processor performs a plurality of processing operations comprising determining the equivalence between the candidate function and the preferred function until the equivalence constraint threshold is reached,
- if equivalence is determined, creates and provides equivalence identifiers for the candidate function and the preferred function;
- upon providing the indicia, converting the candidate source code, also replacing the candidate function with the preferred function; and
- outputs the transformed candidate source codes via the first communication interface.
- A non-transitory computer-readable medium bearing instructions that, when executed by a computer, cause the computer to:
- retrieve from a data store candidate source code having a candidate function and including a first human-readable machine instruction;
- access from the data store a preferred function comprising a second human-readable machine instruction previously identified as authorized source code;
- access an equivalence limit threshold;
- automatically determining equivalence between the candidate function and the preferred function by performing a plurality of processing operations, including determining equivalence between the candidate function and the preferred function, until the equivalence constraint threshold is reached;
- upon determination of equivalence, the processor automatically providing equivalence indicators associated with the candidate function and the preferred function;
- upon the presence of the indicia, automatically converting, by the processor, the candidate source code, replacing the candidate function with the preferred function; and
- output the transformed candidate source code.
Zusätzlich zu den vorstehenden Ausführungen sind auch andere Ausführungsformen in den hier offenbaren Ausführungsformen denkbar. Zum Beispiel kann eine Funktion aufgrund von Kommentaren (z.B. interner Dokumentation) eine bevorzugte Funktion sein. Bei einer anderen Ausführungsform kann eine Funktion bevorzugt werden, wenn sie geprüft und genehmigt und daher eine bekannte Funktion ist, im Gegensatz zu einer nicht geprüften und/oder nicht genehmigten und daher unbekannten Funktion.In addition to the above, other embodiments within the embodiments disclosed herein are also contemplated. For example, a feature may be a preferred feature based on comments (e.g. internal documentation). In another embodiment, a function may be preferred if it is tested and approved and therefore a known function as opposed to an untested and/or unapproved and therefore unknown function.
In der vorangegangenen Beschreibung wurden die Verfahren zum Zwecke der Darstellung in einer bestimmten Reihenfolge beschrieben. Es sei darauf hingewiesen, dass die Verfahren in alternativen Ausführungsformen in einer anderen als der beschriebenen Reihenfolge ausgeführt werden können. Es sei auch darauf hingewiesen, dass die oben beschriebenen Verfahren von Hardwarekomponenten ausgeführt werden können oder in Sequenzen von maschinenausführbaren Anweisungen verkörpert sein können, die dazu verwendet werden können, eine Maschine, wie z. B. eine elektrische Schaltung, die als Universal- oder Spezialprozessor (GPU oder CPU) ausgeführt wird, oder Logikschaltungen, die mit den Anweisungen programmiert sind, zu veranlassen, die Verfahren auszuführen (FPGA). Die Maschine weist auf und/oder greift über eine elektrische und/oder optische Kommunikations-Schnittstelle auf Komponenten zur Speicherung von Daten und/oder Anweisungen zu. Diese maschinenausführbaren Anweisungen können auf einem oder mehreren maschinenlesbaren Datenträgern gespeichert sein, wie CD-ROMs oder anderen Arten von optischen Platten, Disketten, ROMs, RAMs, EPROMs, EEPROMs, magnetischen oder optischen Karten, Flash-Speichern oder anderen Arten von maschinenlesbaren Datenträgern, die zur Speicherung elektronischer Anweisungen geeignet sind. Alternativ können die Verfahren auch durch eine Kombination von Hardware und Software ausgeführt werden.In the foregoing description, the methods have been described in a particular order for purposes of illustration. It should be noted that, in alternative embodiments, the methods may be performed out of the order noted. It should also be noted that the methods described above may be executed by hardware components or embodied in sequences of machine-executable instructions that may be used to execute a machine, such as a computer. B. an electrical circuit executed as a general purpose or special purpose processor (GPU or CPU), or logic circuits programmed with the instructions are to cause the methods to be executed (FPGA). The machine has and/or accesses components for storing data and/or instructions via an electrical and/or optical communication interface. These machine-executable instructions may be stored on one or more machine-readable media, such as CD-ROMs or other types of optical disks, floppy disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memories, or other types of machine-readable media that suitable for storing electronic instructions. Alternatively, the methods can also be performed by a combination of hardware and software.
In der Beschreibung wurden spezifische Details angegeben, um ein gründliches Verständnis der Ausführungsformen zu ermöglichen. Einem Fachmann wird jedoch klar sein, dass die Ausführungsformen auch ohne diese spezifischen Details praktiziert werden können. Beispielsweise können Schaltungen in Blockschaltbildern dargestellt werden, um die Ausführungsformen nicht durch unnötige Details zu verschleiern. In anderen Fällen können bekannte Schaltungen, Prozesse, Algorithmen, Strukturen und Techniken ohne unnötige Details dargestellt werden, um die Ausführungsformen nicht zu verdecken.Specific details are provided in the description to provide a thorough understanding of the embodiments. However, one skilled in the art will appreciate that the embodiments may be practiced without these specific details. For example, circuits may be represented in block diagram form in order not to obscure the embodiments with unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail so as not to obscure the embodiments.
Es wird auch darauf hingewiesen, dass die Ausführungsformen als Prozess beschrieben wurden, der als Flussdiagramm, Flussdiagramm, Datenflussdiagramm, Strukturdiagramm oder Blockschaltbild dargestellt wird. Obwohl ein Flussdiagramm die Vorgänge als einen sequentiellen Prozess beschreiben kann, können viele der Vorgänge parallel oder gleichzeitig ausgeführt werden. Darüber hinaus kann die Reihenfolge der Operationen umgestellt werden. Ein Prozess ist beendet, wenn seine Operationen abgeschlossen sind, kann aber zusätzliche Schritte aufweisen, die in der Figur nicht enthalten sind. Ein Prozess kann einem Verfahren, einer Funktion, einer Prozedur, einem Unterprogramm, einem Unterprogramm usw. entsprechen. Wenn ein Prozess einer Funktion entspricht, entspricht seine Beendigung der Rückkehr der Funktion zur aufrufenden Funktion oder zur Hauptfunktion.It is also noted that the embodiments have been described as a process represented as a flowchart, flowchart, data flow diagram, structural diagram, or block diagram. Although a flowchart can describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations can be rearranged. A process is complete when its operations are complete, but may have additional steps not included in the figure. A process can correspond to a method, function, procedure, sub-program, sub-program, and so on. When a process corresponds to a function, its termination corresponds to the function's return to the calling function or to the main function.
Zusätzlich können die Systeme, Verfahren und Protokolle implementiert werden, um einen oder mehrere Spezialcomputer, einen programmierten Mikroprozessor oder Mikrocontroller und periphere integrierte Schaltungselemente, einen ASIC oder eine andere integrierte Schaltung, einen digitalen Signalprozessor, eine fest verdrahtete elektronische oder logische Schaltung wie eine Schaltung mit diskreten Elementen, eine programmierbare logische Vorrichtung wie PLD, PLA, FPGA, PAL, ein Modem, einen Sender/Empfänger, ein vergleichbares Mittel oder Ähnliches zu verbessern. Im Allgemeinen kann jedes Gerät, das in der Lage ist, einen Zustandsautomaten zu implementieren, der wiederum in der Lage ist, die hier dargestellte Methodik zu implementieren, von den verschiedenen Kommunikationsverfahren, -protokollen und -techniken gemäß der hier dargestellten Offenbarung profitieren.Additionally, the systems, methods, and protocols may be implemented using one or more special purpose computers, a programmed microprocessor or microcontroller and peripheral integrated circuit elements, an ASIC or other integrated circuit, a digital signal processor, a hardwired electronic or logic circuit such as a circuit with discrete elements, a programmable logic device such as PLD, PLA, FPGA, PAL, a modem, a transceiver, a comparable means, or the like. In general, any device capable of implementing a state machine capable of implementing the methodology presented herein may benefit from the various communication methods, protocols, and techniques consistent with the disclosure presented herein.
Beispiele für die hier beschriebenen Prozessoren können mindestens einen der folgenden Prozessoren aufweisen: Qualcomm® Snapdragon® 800 und 801, Qualcomm® Snapdragon® 610 und 615 mit 4G LTE-Integration und 64-Bit-Computing, Apple® A7-Prozessor mit 64-Bit-Architektur, Apple® M7-Bewegungs-Coprozessoren, aber nicht nur, Samsung® Exynos® Serie, die Intel® Core™ Prozessorfamilie, die Intel® Xeon® Prozessorfamilie, die Intel® Atom™ Prozessorfamilie, die Intel Itanium® Prozessorfamilie, Intel® Core® i5-4670K und i7-4770K 22nm Haswell, Intel® Core® i5-3570K 22nm Ivy Bridge, die AMD@ FX™ Prozessorfamilie, AMD® FX-4300, FX-6300 und FX-8350 32nm Vishera, AMD® Kaveri Prozessoren, Texas Instruments® Jacinto C6000™ Automotive Infotainment Prozessoren, Texas Instruments® OMAP™ automotive-grade mobile Prozessoren, ARM® Cortex™-M Prozessoren, ARM® Cortex-A und ARM926EJ-S™ Prozessoren, Broadcom® AirForce BCM4704/BCM4703 Prozessoren für drahtlose Netzwerke, die AR7100 Wireless Network Processing Unit, andere industrieäquivalente Prozessoren, und können Rechenfunktionen unter Verwendung jedes bekannten oder zukünftig entwickelten Standards, Befehlssatzes, Bibliotheken und/oder Architektur ausführen.Examples of the processors described herein may include at least one of the following processors: Qualcomm
Darüber hinaus können die offenbaren Verfahren leicht in Software implementiert werden, indem Objekte einer objektorientierten Software-Sprache verwendet werden, die einen portablen Quellcode bereitstellen, der auf einer Vielzahl von Computer- oder Workstation-Plattformen verwendet werden kann. Alternativ dazu kann das offenbare System teilweise oder vollständig in Hardware unter Verwendung von Standard-Logikschaltungen oder VLSI-Konstruktionen implementiert werden. Ob Software oder Hardware verwendet wird, um die Systeme gemäß den Ausführungsformen zu implementieren, hängt von den Geschwindigkeits- und/oder Effizienzanforderungen des Systems, der jeweiligen Funktion und den jeweiligen Software- oder Hardwaresystemen oder Mikroprozessor- oder Mikrocomputersystemen ab, die verwendet werden. Die hier dargestellten Kommunikationssysteme, -verfahren und -protokolle können von Fachleuten, die mit der hier gegebenen Funktionsbeschreibung vertraut sind und über ein allgemeines Grundwissen in der Computer- und Telekommunikationstechnik verfügen, ohne weiteres in Hardware und/oder Software unter Verwendung bekannter oder später entwickelter Systeme oder Strukturen, Geräte und/oder Software implementiert werden.Furthermore, the disclosed methods are easily implemented in software using objects of an object-oriented software language that provide portable source code that can be used on a variety of computer or workstation platforms. Alternatively, the disclosed system can be implemented partially or entirely in hardware using standard logic circuits or VLSI designs. Whether software or hardware is used to implement the systems according to embodiments depends on the speed and/or efficiency requirements of the system, the particular function, and the particular software or hardware systems or microprocessor or microcomputer systems being used. The communication systems, methods and protocols presented here can be used by persons skilled in the art who are familiar with the functional description given here and who have a general basic knowledge of computer and telecommunications technology, can be readily implemented in hardware and/or software using known or hereafter developed systems or structures, devices and/or software.
Darüber hinaus können die offengelegten Verfahren ohne weiteres in Software und/oder Firmware implementiert werden, die auf einem Speichermedium gespeichert werden können, um die Leistung eines programmierten Allzweckcomputers in Zusammenarbeit mit einem Controller und einem Speicher, eines Spezialcomputers, eines Mikroprozessors oder dergleichen zu verbessern. In diesen Fällen können die Systeme und Verfahren als auf einem Personalcomputer eingebettetes Programm, wie z. B. ein Applet, JAVA.RTM. oder CGI-Skript, als auf einem Server oder einer Computer-Workstation befindliche Ressource, als in ein dediziertes Kommunikationssystem oder eine Systemkomponente eingebettete Routine o. Ä. implementiert werden. Das System kann auch implementiert werden, indem das System und/oder Verfahren physisch in ein Software- und/oder Hardwaresystem integriert wird, wie z.B. in die Hardware- und Softwaresysteme eines Kommunikationstransceivers.Furthermore, the disclosed methods can be readily implemented in software and/or firmware, which can be stored on a storage medium to improve the performance of a programmed general purpose computer in cooperation with a controller and memory, a special purpose computer, a microprocessor or the like. In these cases, the systems and methods may be implemented as an embedded program on a personal computer, such as an B. an applet, JAVA.RTM. or CGI script, as a resource resident on a server or computer workstation, as a routine embedded in a dedicated communications system or system component, or the like. to be implemented. The system can also be implemented by physically integrating the system and/or method with a software and/or hardware system, such as the hardware and software systems of a communications transceiver.
Verschiedene Ausführungsformen können auch oder alternativ vollständig oder teilweise in Software und/oder Firmware implementiert sein. Diese Software und/oder Firmware kann die Form von Anweisungen annehmen, die in oder auf einem nichtflüchtigen, computerlesbaren Speichermedium enthalten sind. Diese Anweisungen können dann von einem oder mehreren Prozessoren gelesen und ausgeführt werden, um die Durchführung der hier beschriebenen Vorgänge zu ermöglichen. Die Anweisungen können in jeder geeigneten Form vorliegen, wie z. B. Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code und dergleichen. Ein solches computerlesbares Medium kann jedes greifbare, nicht-flüchtige Medium zum Speichern von Informationen in einer Form aufweisen, die von einem oder mehreren Computern gelesen werden kann, wie z.B., aber nicht beschränkt auf Festwertspeicher (ROM); Speicher mit wahlfreiem Zugriff (RAM); Magnetplattenspeichermedien; optische Speichermedien; einen Flash-Speicher usw.Various embodiments may also or alternatively be implemented in software and/or firmware in whole or in part. This software and/or firmware may take the form of instructions embodied in or on a non-transitory computer-readable storage medium. These instructions can then be read and executed by one or more processors to enable the operations described herein to be performed. The instructions can be in any suitable form, such as B. source code, compiled code, interpreted code, executable code, static code, dynamic code and the like. Such computer-readable medium may include any tangible, non-transitory medium for storing information in a form readable by one or more computers, such as, but not limited to, read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory, etc.
Hier werden beispielhafte Systeme und Verfahren zur maschinellen Bearbeitung von Anweisungen vorgestellt. Während die Ausführungsformen in Verbindung mit einer Anzahl von Ausführungsformen beschrieben wurden, ist es offensichtlich, dass viele Alternativen, Modifikationen und Variationen für diejenigen, die in den anwendbaren Künsten bewandert sind, offensichtlich sind oder sein würden. Dementsprechend soll diese Offenbarung alle derartigen Alternativen, Modifikationen, Äquivalente und Variationen umfassen, die im Rahmen des Geistes und des Umfangs dieser Offenbarung liegen.Example systems and methods for machining instructions are presented here. While the embodiments have been described in connection with a number of embodiments, it is evident that many alternatives, modifications and variations are or would be apparent to those skilled in the applicable arts. Accordingly, this disclosure is intended to embrace all such alternatives, modifications, equivalents, and variances that fall within the spirit and scope of this disclosure.
ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN DESCRIPTION
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents cited by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte PatentliteraturPatent Literature Cited
- US 2016017160 PCT [0005]US2016017160PCT[0005]
- WO 2016/130551 [0005]WO 2016/130551 [0005]
Claims (15)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE202017007536.9U DE202017007536U1 (en) | 2017-12-05 | 2017-12-05 | Inductive equivalence in instruction machining |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE202017007536.9U DE202017007536U1 (en) | 2017-12-05 | 2017-12-05 | Inductive equivalence in instruction machining |
Publications (1)
Publication Number | Publication Date |
---|---|
DE202017007536U1 true DE202017007536U1 (en) | 2022-07-05 |
Family
ID=82493668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE202017007536.9U Active DE202017007536U1 (en) | 2017-12-05 | 2017-12-05 | Inductive equivalence in instruction machining |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE202017007536U1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016130551A1 (en) | 2015-02-09 | 2016-08-18 | Phase Change Software Llc | Machine-based instruction editing |
-
2017
- 2017-12-05 DE DE202017007536.9U patent/DE202017007536U1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016130551A1 (en) | 2015-02-09 | 2016-08-18 | Phase Change Software Llc | Machine-based instruction editing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60031370T2 (en) | TOKEN-BASED LINKAGE | |
DE60017457T2 (en) | PROCEDURE FOR ISOLATING AN ERROR IN ERROR MESSAGES | |
DE112018002984T5 (en) | Conformity-conscious runtime generation based on application patterns and risk assessment | |
DE60021066T2 (en) | Checking a software package | |
DE112010003979T5 (en) | System and method for the static recognition and categorization of information flow downgraders | |
DE112012005051T5 (en) | Fix delivery system | |
DE102005042126A1 (en) | Method and apparatus for automatically evaluating the quality of a software source code | |
DE102020115253A1 (en) | METHOD AND EQUIPMENT FOR RUNNING AN APPLET | |
EP2137615B1 (en) | Method for the computer-aided determination of the dependencies of a plurality of modules of a technical system, especially of a software system | |
DE112018004660T5 (en) | USE COMMENTS TO PROVIDE OPTIMIZATION | |
DE112019005729T5 (en) | DETECTING SECURITY RISKS ASSOCIATED WITH A SOFTWARE COMPONENT | |
DE112017004962T5 (en) | Control flow integrity | |
DE602006000728T2 (en) | Support of dynamically typed languages in typed assembly languages | |
DE112011103406T5 (en) | Management of unmodified objects | |
DE102021124264A1 (en) | Generation of synthetic system errors | |
DE112018002954T5 (en) | PROVIDING A CONFIGURATION-RELATED WORKFLOW | |
DE112010004808T5 (en) | Simultaneous execution of request processing and analysis of requirements | |
DE10333088A1 (en) | Method for providing access to the internal signals of a dynamic system model from outside regarding the modeling environment | |
DE202016008006U1 (en) | Generation of integration tests on a small scale | |
EP3134842B1 (en) | Computing device and method for detecting attacks on a technical system based on events of an event sequence | |
DE102012210482A1 (en) | Method and system for migrating business process instances | |
DE202017007536U1 (en) | Inductive equivalence in instruction machining | |
EP1745375A1 (en) | Method for determining deadlocks in secondary processes | |
EP3705993B1 (en) | System and method for locating and identifying computing nodes in a network | |
DE202012013449U1 (en) | System for inline insertion of script dependencies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R150 | Utility model maintained after payment of first maintenance fee after three years | ||
R207 | Utility model specification | ||
R151 | Utility model maintained after payment of second maintenance fee after six years |