DE102015002124A1 - Rücksprungzielbeschränkte Prozedurrücksprungbefehle, Prozessoren, Verfahren und Systeme - Google Patents

Rücksprungzielbeschränkte Prozedurrücksprungbefehle, Prozessoren, Verfahren und Systeme Download PDF

Info

Publication number
DE102015002124A1
DE102015002124A1 DE102015002124.9A DE102015002124A DE102015002124A1 DE 102015002124 A1 DE102015002124 A1 DE 102015002124A1 DE 102015002124 A DE102015002124 A DE 102015002124A DE 102015002124 A1 DE102015002124 A1 DE 102015002124A1
Authority
DE
Germany
Prior art keywords
return
rtr
code
command
instruction
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.)
Pending
Application number
DE102015002124.9A
Other languages
English (en)
Inventor
Paul Caprioli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102015002124A1 publication Critical patent/DE102015002124A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Ein Prozessor umfasst eine Dekodiereinheit zum Dekodieren eines rücksprungzielbeschränkten Prozedurrücksprungbefehls (RTR-Rücksprungbefehl). Eine Rücksprungzielbeschränkungseinheit reagiert auf den RTR-Rücksprungbefehl, um zu bestimmen, ob ein Versuch vom RTR-Rücksprungbefehl, einen Steuerflusstransfer zu einem Befehl an einer dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse durchzuführen, beschränkt werden soll. Die Bestimmung basiert auf der Kompatibilität einer Art des Befehls an der Rücksprungadresse mit dem RTR-Rücksprungbefehl und basiert auf der Kompatibilität einer ersten rücksprungzielbeschränkten Information (RTR-Information) des RTR-Rücksprungbefehls mit zweiter RTR-Information des Befehls an der Rücksprungadresse. Eine Steuerflusstransfereinheit reagiert auf den RTR-Rücksprungbefehl, um den Steuerfluss zum Befehl an der Rücksprungadresse zu transferieren, wenn die Rücksprungzielbeschränkungseinheit bestimmt, den Versuch nicht zu beschränken.

Description

  • HINTERGRUND
  • Fachgebiet
  • Hierin beschriebene Ausführungsformen betreffen im Allgemeinen Prozessoren. Insbesondere die hierin beschriebenen Ausführungsformen Prozessoren zur Durchführung von Rücksprungbefehlen.
  • Hintergrundinformation
  • Rücksprungorientierte Programmierung (ROP) ist eine Computersicherheits-Exploit-Technik, die Angreifer nutzen können, um die Steuerung über Computersysteme oder andere elektronische Vorrichtungen zu erlangen. Bei ROP können die Angreifer die Kontrolle des Stapels erlangen, um den Programmsteuerfluss zu übernehmen.
  • Die Steuerung des Aufrufstapels wird häufig durch einen Pufferüberlaufangriff oder -attacke erreicht. In einem Pufferüberlauf kann eine Funktion, die vor dem Speichern von Daten in den Speicher keine ausreichende Längenprüfung durchführt, mehr Daten akzeptieren, als ordnungsgemäß gespeichert werden können. Beispielsweise kann ein Angreifer mehr Daten an einen Webbrowser senden, als der Webbrowser ordnungsgemäß speichern kann. Wenn die Daten in einem Stapel gespeichert werden, können manche Daten den Variablen dieser Funktion zugewiesenen Speicherplatz übersteigen und die Rücksprungadresse überschreiben. Die Rücksprungadresse ist eine Adresse, die auf dem Stapel von einem Prozeduraufrufbefehl gespeichert wird, die dann verwendet werden soll, um den Steuerfluss, sobald die aufgerufene Prozedur beendet ist, zurück zur aufrufenden Funktion umleiten soll. Jedoch kann die Rücksprungadresse bei einem Pufferüberlaufangriff oder -attacke mit einer anderen Rücksprungadresse überschrieben werden. Dies kann dem Angreifer erlauben, den Steuerfluss an die andere Rücksprungadresse umzuleiten, einen an der anderen Rücksprungadresse beginnenden Code auszuführen und potentiell unerwünschte und/oder schädliche Handlungen durchzuführen.
  • Bei einem ROP-Angriff kann der Angreifer Sequenzen aus sogenannten „Gadgets” zusammenketten. Jedes Gadget kann einen Satz aus einer oder einigen Befehlen, gefolgt von einem Rücksprung aus dem Prozedurbefehl darstellen. Der Angreifer kann verschiedene ausführbare Code-Speicherregionen scannen oder untersuchen, um erwünschte Gadgets zu lokalisieren oder identifizieren. Beispiele solcher ausführbaren Code-Speicherregionen umfassen beispielsweise Anwendungen, gemeinsam genutzte Bibliotheken auf Benutzerebene, Treiber, Systemebenen-Code und Systemebenenbibliotheken. Zum Beispiel kann der Angreifer nach dem Opcode 0xC3 scannen, der dem Prozedurrücksprungbefehl (RET-Befehl) entspricht, wie im Intel® 64 and IA-32 Architectures Software Developer's Manual, Band 2, Befehlssatzreferenz, A–Z, Bestellnummer 325383-041US, Dezember 2011, beschrieben. Nach dem Identifizieren eines jeden Opcode, kann der Angreifer abwarten, um zu sehen, ob der/die vorhergehende(n) Befehl(e) als ein Gadget zweckmäßig sind. Beispielsweise kann der Angreifer einen Stapelspeicherbefehl gefolgt von einem Rücksprungbefehl als ein erstes Gadget, einen Register-Register-Transferbefehl gefolgt von einem Rücksprungbefehl als ein zweites Gadget usw. identifizieren. In manchen Fällen kann der Angreifer in der Lage sein, ausreichend Gadgets zu identifizieren, um einen sogenannten Turing-vollständigen Gadget-Katalog auszubilden, der es dem Angreifer erlauben kann, eine breite Vielfalt oder potentiell beinahe alle gewünschten arglistigen Handlungen durchzuführen.
  • 1 ist ein Blockdiagramm einer beispielhaften Kette aus drei Gadgets 100. Die Kette umfasst ein erstes Gadget 101, das einen Pop-EAX-Befehl 102 und einen ersten Prozedurrücksprungbefehl (RET-Befehl) 103 umfasst. Das erste Gadget verweist auf ein zweites Gadget 104. Das zweite Gadget umfasst einen Pop-ECX-Befehl 105 und einen zweiten Prozedurrücksprungbefehl (RET-Befehl) 106. Das erste und das zweite Gadget speisen Daten in die EAX- und ECX-Register. Das zweite Gadget verweist auf ein drittes Gadget 107. Das dritte Gadget umfasst einen MOV-[ECX], -EAX-Befehl 108 und einen dritten Prozedurrücksprungbefehl (RET-Befehl) 109. Das dritte Gadget speichert den Wert im Register EAX an die vom Register ECX angegebene Position. Die Gadgets können sich in Code 110 potentiell unterschiedlicher Arten, wie etwa Anwendungen, Bibliotheken, Treiber, dem Betriebssystem etc. befinden. Dies ist nur ein veranschaulichendes Beispiel einer Gadget-Kette.
  • Eine grobe, aber veranschaulichende Analogie ist, die Gadgets von ROP als analoge bis individuelle Buchstaben zu betrachten, die aus verschiedenen Zeitschriften oder Zeitungen ausgeschnitten und verwendet wurden, um eine Lösegeldforderung zu formulieren. Genau wie die einzelnen Buchstaben, die aus unterschiedlichen Zeitschriften oder Zeitungen ausgeschnitten und in Serie angeordnet wurden, um die Lösegeldforderung zu formulieren, werden individuelle Gadgets (z. B. alle, die einen oder einige Befehle gefolgt von einem Rücksprung umfassen) in potentiell unterschiedlichen Teilen von Code identifiziert und miteinander verbunden, um einen neuen Code mit einer anderen Funktionalität zu erzeugen. Die Turning-Vollständigkeitsfunktionalität von Gadgets kann in gewisser Weise analog dazu sein, alle Buchstaben von A bis Z, die erforderlich sind, um jede gewünschte Botschaft zu formulieren, zu haben, insofern als dass sie analog dazu verwendet werden können, um nahezu jede Funktionalität zu erreichen.
  • Zu Beginn kann der Pufferüberlaufangriff verwendet werden, um die Rücksprungadresse zum Stapel zu übernehmen und somit den Steuerfluss zu übernehmen. Die Adresse des ersten Befehls des ersten Gadgets kann auf dem Stapel gespeichert sein, um den Steuerfluss zum ersten Gadget umzuleiten. Anstatt zur aufrufenden Prozedur (mit dem Prozeduraufrufbefehl) zurückzukehren, kann der Steuerfluss auf den ersten Befehl des ersten Gadgets transferieren. Als nächstes kann die Rücksprungadresse des ersten Befehls des zweiten Gadgets in der Kette auf dem Stapel gespeichert sein. Der Rücksprungbefehl des ersten Gadgets kann den Steuerfluss zum zweiten Gadget umleiten. Auf diese Weise können die Rücksprungadressen einer Serie von Gadgets sequentiell auf dem Stapel gespeichert werden und die Rücksprungbefehle der verketteten Gadgets springen zu diesen. Durch das Verketten der Gadgets in bestimmten Reihenfolgen kann der Angreifer in der Lage sein, aus bereits bestehendem Code neue Programmfunktionalitäten zu erzeugen. Die Angreifer können dies potentiell für unerwünschte oder schädliche Zwecke einsetzen, wie etwa beispielsweise das Stehlen vertraulicher Informationen, das Stören oder Angreifen anderer Anwendungen, das Versenden von E-Mails, das Versenden von Textnachrichten, das Posten von Tweets, das Ausnutzen von Schwachen der Betriebssystemkerne etc.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung kann am besten mit Verweis auf die nachfolgende Beschreibung und die beiliegenden Zeichnungen verstanden werden, die zum Veranschaulichen von Ausführungsformen verwendet werden.
  • 1 ist ein Blockdiagramm einer beispielhaften Kette aus drei Gadgets.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors.
  • 3 ist ein Blockdiagramm einer Ausführungsform eines Prozessors, der für die Durchführung einer Ausführungsform einem rücksprungzielbeschränkten Rücksprung aus einem Prozedurbefehl betreibbar ist.
  • 4 ist ein Blockdiagramm, das eine Ausführungsform des Betriebs eines rücksprungzielbeschränkten Rücksprungs aus einem Prozedurbefehl und einen Rücksprungzielbefehl veranschaulicht.
  • 5 ist ein Blockflussdiagramm einer Ausführungsform eines Verfahrens zum Durchführen einer Ausführungsform eines rücksprungzielbeschränkten Rücksprungs aus einem Prozedurbefehl.
  • 6 ist ein Blockdiagramm einer Ausführungsform eines maschinenlesbaren Speichermediums, das eine erste Art von Code bzw. eine zweite, unterschiedliche, Art von Code speichert, die RTR-Rücksprungbefehle aufweisen, die verschiedene zulässige oder erlaubte RTR-Informationen angibt.
  • 7 ist ein Blockflussdiagramm einer ersten Ausführungsform eines Verfahrens zum Analysieren von Code.
  • 8 ist ein Blockflussdiagramm einer zweiten Ausführungsform eines Verfahrens zum Analysieren von Code.
  • 9A ist ein Blockdiagramm, das eine Ausführungsform einer reihenfolgegebundenen Pipeline und eine Ausführungsform einer reihenfolgelosen Registerumbenennungs-Ausgabe-/-Ausführungs-Pipeline zeigt.
  • 9B ist ein Blockdiagramm einer Ausführungsform eines Prozessorkerns, der eine an eine Ausführungsengineeinheit gekoppelte Frontendeinheit umfasst, die beide an eine Speichereinheit gekoppelt sind.
  • 10A ist ein Blockdiagramm einer Ausführungsform eines einzelnen Prozessorkerns zusammen mit seiner Verbindung zum nacktchipbasierten Verbindungsnetzwerk und mit seiner lokalen Untergruppe des Ebene 2-(L2-)Caches.
  • 10B ist ein Blockdiagramm einer Ausführungsform einer erweiterten Ansicht eines Teils des Prozessorkerns aus 10A.
  • 11 ist ein Blockdiagramm einer Ausführungsform eines Prozessors, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuereinheit aufweisen kann und integrierte Grafik aufweisen kann.
  • 12 ist ein Blockdiagramm einer ersten Ausführungsform einer Computer-Architektur.
  • 13 ist ein Blockdiagramm einer zweiten Ausführungsform einer Computer-Architektur.
  • 14 ist ein Blockdiagramm einer dritten Ausführungsform einer Computer-Architektur.
  • 15 ist ein Blockdiagramm einer Ausführungsform einer chipbasierten System-Architektur.
  • 16 ist ein Blockdiagramm der Verwendung eines Software-Befehlumwandlers, um Binärbefehle gemäß Ausführungsformen der Erfindung in einem Quellbefehlssatz auf Binärbefehle in einem Zielbefehlssatz umzuwandeln.
  • DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Hierin offenbart sind Rücksprungzielbeschränkte Rücksprung-aus-der-Prozedur-Befehle und Rücksprungzielbefehle, Prozessoren zum Ausführen der Befehle, von den Prozessoren beim Weiterverarbeiten oder Ausführen der Befehle durchgeführte Verfahren und Systeme, die einen oder mehrere Prozessoren zum Weiterverarbeiten oder Ausführen der Befehle integrieren. In der nachfolgenden Beschreibung werden zahlreiche spezifische Details dargelegt (z. B. spezielle Befehlsvorgänge, Arten von Rücksprungzielbeschränkter Information, Prozessorkonfigurationen, Mikroarchitekturdetails, Sequenzen von Vorgängen etc.). Jedoch können Ausführungsformen ohne diese speziellen Details in die Praxis umgesetzt werden. In anderen Beispielen wurden wohlbekannte Schaltkreise, Strukturen und Verfahren nicht im Detail gezeigt, um zu verhindern, dass das Verständnis der Beschreibung erschwert wird.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors 210. Der Prozessor weist einen Befehlssatz 212 auf. Der Befehlssatz umfasst die ursprünglichen Befehle des Prozessors. Die Befehle des Befehlssatzes stellen Makrobefehle, Assemblersprachenbefehle oder Maschinenebenenbefehle dar, die dem Prozessor für die Ausführung bereitgestellt werden, im Gegensatz zu Mikrobefehlen, Mikro-Ops oder Befehlen oder Steuersignalen, die aus den Befehlen des Befehlssatz dekodiert werden.
  • Wie gezeigt kann der Befehlssatz in manchen Ausführungsformen einen Rücksprungzielbeschränkten (RTR) Prozedurrücksprungbefehl (Rücksprung-Befehl) 214 umfassen. In manchen Ausführungsformen kann der RTR-Rücksprungbefehl Rücksprungzielbeschränkte (RTR) Information 215 aufweisen, angeben oder ihr anderweitig zugeordnet sein. Wie weiter gezeigt kann der Befehlssatz in manchen Ausführungsformen einen Rücksprungzielbefehl 218 umfassen. In manchen Ausführungsformen kann der Rücksprungzielbefehl 218 Rücksprungzielbeschränkte (RTR) Information 220 aufweisen, angeben oder ihr anderweitig zugeordnet sein. In manchen Ausführungsformen können der RTR-Rücksprungbefehl und der Rücksprungzielbefehl ein Befehlspaar darstellen, das für die gemeinsame Verwendung vorgesehen ist, um versuchte Rücksprungsteuerflusstransfers (z. B. basierend auf der RTR-Information) bedingt einzugrenzen oder zu beschränken.
  • Der Prozessor umfasst auch eine Rücksprungzielbeschränkungseinheit 222. Die Rücksprungzielbeschränkungseinheit kann in Hardware, Firmware, Software oder einer Kombination (z. B. Hardware, die potentiell mit einer Firmware und/oder Software kombiniert ist) umgesetzt sein. In manchen Ausführungsformen kann der RTR-Rücksprungbefehl eingesetzt werden, um die Rücksprungzielbeschränkungseinheit und/oder den Prozessor dazu zu veranlassen, eingrenzend oder beschränkend zu sein mit Bezug darauf, auf welche Rücksprungziele (z. B. welche Befehle) der RTR-Rücksprungbefehl Rücksprungsteuerfluss zurückgeben darf. In manchen Ausführungsformen kann der RTR-Rücksprungbefehl eingesetzt werden, um eine solche Beschränkung mittels und/oder basierend auf einer Befehlsart an der Rücksprungzieladresse zu veranlassen. Beispielsweise kann in manchen Ausführungsformen der versuchte Rücksprungsteuerflusstransfer an den Befehl bei der Rücksprungzieladresse erlaubt sein, wenn der Befehl an der Rücksprungzieladresse von derselben Art ist (z. B. denselben Opcode aufweist) wie der Rücksprungzielbefehl 218 oder kann ansonsten beschränkt oder verhindert werden. Der Rücksprungzielbefehl 218 kann eine Befehlsart darstellen, die in der ersten Linie dafür konzipiert oder vorgesehen ist, als eine Markierung für erlaubte oder legitime Rücksprungziele für den RTR-Rücksprungbefehl zu dienen. In manchen Ausführungsformen kann der RTR-Rücksprungbefehl dafür verwendet werden, eine solche Beschränkung mittels und/oder basierend auf der RTR-Information 216 des RTR-Rücksprungbefehls und der RTR-Information 220 des Rücksprungzielbefehls zu verursachen. Beispielsweise kann in manchen Ausführungen der versuchte Rücksprungsteuerflusstransfer an den Befehl am Rücksprungziel erlaubt sein, wenn die beiden RTR-Informationssätze 216, 220 gleich sind, passen oder anderweitig kompatibel sind. In einer speziellen beispielhaften Ausführungsform kann jeder RTR-Informationssatz einen Wert (z. B. einen ganzzahligen Wert) umfassen und beide Werte müssen gleich sein, damit sie kompatibel sind. Wenn die zwei RTR-Informationssätze nicht kompatibel sind, dann kann der versuchte Rücksprungsteuerflusstransfer beschränkt oder verhindert werden. In manchen Ausführungsformen kann die RTR-Information von Direktoperanden der Befehle bereitgestellt werden, obwohl der Schutzumfang der Erfindung dahingehend nicht eingeschränkt ist.
  • Vorteilhafterweise können der RTR-Rücksprungbefehl 214 und der Rücksprungzielbefehl 218 helfen, Rücksprungsteuerflusstransfers bedingt zu beschränken, einzugrenzen oder stärker zu kontrollieren. Als ein potentieller Vorteil kann dies dabei helfen, Angriffe Rücksprungorientierter Programmierung (ROP) zu verhindern oder ihre Durchführung zumindest signifikant zu erschweren. Einerseits müssen ROP-Angriffe im Allgemeinen sich auf die Fähigkeit stützen, wiederholt Rücksprungsteuerflusstransfers an die ersten Befehle der verschiedenen verketteten Gadgets durchführen zu können (z. B. müssen sie in der Lage sein, die Zieladressen der ersten Befehle dieser Gadgets auf dem Stapel zu platzieren). Jedoch, wenn ein versuchter Rücksprungsteuerflusstransfer an einen Befehl (z. B. einen POP-Befehl, einen MOV-Befehl etc.) einer anderen Art (z. B. mit einem anderen Opcode) als ein bestimmter Rücksprungzielbefehl 218 erfolgen soll, kann in manchen Ausführungsformen der Prozessor den Rücksprungsteuerflusstransfer beschränken oder verhindern. Dies allein kann es für Angreifer viel schwieriger machen, durch Zufall zweckmäßige Gadgets zu finden, da zusätzlich zum Finden eines oder mehrerer zweckmäßiger Befehle, auf die ein Rücksprungbefehl folgt, dem einen oder mehreren zweckmäßigen Befehlen auch ein Rücksprungzielbefehl 218 vorausgehen müsste. Dies alleine macht es schwieriger für Angreifer, zu Befehlen zurückzukehren, bei denen ursprünglich nicht vorgesehen war, dass darauf zurückgekommen wird. Darüber hinaus, wenn ein versuchter Rücksprungsteuerflusstransfer zu einem Befehl mit einer nicht passenden oder anderweitig inkompatiblen RTR-Information erfolgen soll, kann in manchen Ausführungsformen ein solcher Rücksprungsteuerflusstransfer auch beschränkt oder verhindert werden. Dies kann es ebenfalls schwerer machen für Angreifer, zu Befehlen zurückzukehren, die ursprünglich nicht dafür vorgesehen waren, da die Rücksprungzielbefehle 218 passende oder kompatible RTR-Information aufweisen müssten.
  • 3 ist ein Blockdiagramm einer Ausführungsform eines Prozessors 310, der dazu eingesetzt werden kann, eine Ausführungsform einen nichtzielbeschränkenden (RTR) Prozedurrücksprungbefehl (Rücksprungbefehl) 314 durchzuführen. In manchen Ausführungsformen kann der Prozessor ein Allzweckprozessor sein (z. B. ein Allzweck-Mikroprozessor von der Art, die in Desktop-Computern, Laptops oder anderen Computer eingesetzt wird). Alternativ dazu kann der Prozessor ein Spezialprozessor sein. Beispiele geeigneter Spezialprozessoren umfassen, ohne darauf beschränkt zu sein, Netzwerkprozessoren, Kommunikationsprozessoren, Kryptographieprozessoren, Grafikprozessoren, Co-Prozessoren, eingebettete Prozessoren, Digitalsignalprozessoren (DSP) und Steuereinheiten (z. B. Mikrocontroller). Der Prozessor kann jedes aus verschiedenen Complex-Instruction-Set-Computing-Prozessoren (CISC-Prozessoren), Reduced-Instruction-Set-Computing-Prozessoren (RISC-Prozessoren), Very-Long-Instruction-Word-Prozessoren (VLIW-Prozessoren), Hybriden davon, andere Prozessorarten sein oder eine Kombination solcher verschiedener Prozessoren (z. B. in unterschiedlichen Kernen) aufweisen.
  • Während des Betriebs kann der Prozessor die Ausführungsform des RTR-Rücksprungbefehls 314 empfangen. Beispielsweise kann der RTR-Rücksprungbefehl von einer Befehlsabrufeinheit, einer Befehlswarteschlange oder dergleichen empfangen werden. Der RTR-Rücksprungbefehl kann einen Makrobefehl, Assemblersprachenbefehl, Maschinencodebefehl oder Befehl oder Steuersignal eines Befehlssatzes des Prozessors darstellen. In manchen Ausführungsformen kann der RTR-Rücksprungbefehl Rücksprungzielbeschränkende (RTR) Information aufweisen, angeben oder ihr anderweitig zugeordnet sein. In manchen Ausführungsformen kann die RTR-Information einen Wert oder mehrere Werte umfassen, die dem RTR-Rücksprungbefehl zugeordnet sind. In manchen Ausfühhrungsformen kann die RTR-Information einen Wert in einem Direktoperanden des RTR-Rücksprungbefehls umfassen. Andere Beispiele möglicher Wege für RTR-Information können dem Befehl zugeordnet sein, umfassen, ohne darauf beschränkt zu sein, dass die RTR-Information sich in einem Suffix des Befehls befindet, in einem oder mehreren Bytes, das/die auf den Befehl folgt, in einem vom Befehl angegebenen Register bereitgestellt etc.
  • Weiter auf 3 Bezug nehmend umfasst der Prozessor eine Dekodiereinheit oder einen Dekodierer 330. Die Dekodiereinheit kann den RTR-Rücksprungbefehl, der verhältnismäßig höherrangig ist, empfangen und dekodieren. Die Dekodiereinheit kann einen oder mehrere Mikrobefehle, Mikro-Vorgänge, Mikrocode-Eintragspunkte, dekodierte Befehle oder Steuersignale oder andere verhältnismäßig niederrangige Befehle oder Steuersignale ausgeben, die den verhältnismäßig höherrangigen RTR-Rücksprungbefehl widerspiegeln, darstellen und/oder davon abgeleitet sind. Der eine oder die mehreren niederrangigen Befehle oder Steuersignale können den höherrangigen Befehl durch einen oder mehrere niederrangige (z. B. Schaltkreisebene oder Hardware-Ebene) Vorgänge umsetzen. In manchen Ausführungsformen kann die Dekodiereinheit eine oder mehrere Eingabestrukturen (z. B. Anschluss/Anschlüsse, Verbindung(en), eine Schnittstelle) zum Empfangen des Befehls, eine mit der Eingabestruktur gekoppelte Befehlserkennungs- und Dekodierlogik zum Erkennen und Dekodieren des Befehls und eine oder mehrere mit der Befehlserkennungs- und Dekodierlogik gekoppelte Ausgabestrukturen (z. B. Anschluss/Anschlüsse, Verbindung(en), eine Schnittstelle), um den einen oder die mehreren entsprechenden niederrangigen Befehle oder Steuersignale auszugeben. Die Dekodiereinheit kann unter Verwendung mehrerer verschiedener Mechanismen umgesetzt werden, einschließlich, ohne darauf beschränkt zu sein, Mikrocode-Festwertspeicher (ROM), Verweistabellen, Hardware-Implementationen, programmierbare logische Anordnungen (PLA) und andere auf dem Gebiet der Erfindung bekannte Mechanismen zum Umsetzen von Dekodiereinheiten.
  • In manchen Ausführungsformen kann, anstatt den RTR-Rücksprungbefehl 314 direkt der Dekodiereinheit 330 bereitzustellen, gegebenenfalls ein Befehlsemulator, -translator, -morpher, -interpretierer oder ein anderes Befehlsumwandlungsmodul (nicht gezeigt) verwendet werden. Verschiedene Arten von Befehlsumwandlungsmodulen sind auf dem Gebiet der Erfindung bekannt und können in Software, Hardware, Firmware oder einer Kombination daraus umgesetzt werden. In manchen Ausführungsformen kann sich das Befehlsumwandlungsmodul außerhalb des Prozessors befinden, beispielsweise auf einem separaten Nacktchip und/oder in einem Speicher (z. B. wie einem statischen, dynamischen oder Laufzeitemulationsmodul). Beispielsweise kann das Befehlsumwandlungsmodul den RTR-Rücksprungbefehl 314 empfangen, der von einem ersten Befehlssatz stammen kann, und kann den RTR-Rücksprungbefehl in einen oder mehrere entsprechende oder abgeleitete Zwischenbefehle oder Steuersignale, die von einem zweiten Befehlssatz stammen kann, emulieren, translatieren, morphen, interpretieren oder anderweitig umwandeln. Der eine oder mehrere Zwischenbefehle oder Steuersignale des zweiten Befehlssatzes kann/können einer Dekodiereinheit bereitgestellt werden, die sie in eine oder mehrere niederrangige Befehle oder Steuersignale dekodieren kann, die von der ursprünglichen Hardware oder Logik des Prozessors durchgeführt werden können.
  • Weiter auf 3 Bezug nehmend ist ein Speicher 350 mit dem Prozessor 310 gekoppelt. Obwohl der Speicher in der veranschaulichten Ausführungsform gezeigt ist, beziehen sich andere Ausführungsformen auf den Prozessor alleine und nicht mit einem solchen Speicher gekoppelt (z. B. ist in einem System nicht eingesetzt). Während des Betriebs kann der Speicher einen Stapel 352 speichern. Der Stapel kann eine stapelartige Datenstruktur darstellen, die zum Speichern von Daten verwendet werden kann. Ein häufiger Zweck des Stapels ist, den Überblick über die Rücksprungadressen zu behalten oder darauf hinzuzeigen, wohin jede aufgerufene Prozedur (z. B. jede aktive Subroutine) nach Beendigung der Ausführung einen Steuerwert zurückgeben sollte. Wie gezeigt kann der Stapel eine Rücksprungadresse 354 speichern, die dem RTR-Rücksprungbefehl 314 entspricht. Beispielsweise kann ein entsprechender Prozeduraufrufbefehl, der die Prozedur mit dem RTR-Rücksprungbefehl aufgerufen hat, die Rücksprungadresse 354 zuvor auf dem Stapel speichern. Der RTR-Rücksprungbefehl kann versuchen, die Rücksprungadresse 354 vom Stapel abzufragen oder anderweitig abzurufen und einen Steuerwert an die Rückgabeadresse zu transferieren. Der Speicher kann auch Code 356 speichern, der die von der Rücksprungadresse 354 auf dem Stapel angegebene zugeordnete Rücksprungadresse 358 aufweist. Der Code weist einen Befehl auf, im veranschaulichten Beispiel ein Rücksprungzielbefehl 318, der sich an der Rücksprungadresse 358 befindet.
  • Weiter auf 3 Bezug nehmend ist die Rücksprungzielbeschränkungseinheit 322 mit der Dekodiereinheit 330 gekoppelt und soll während der Verwendung in einem Einsatz mit dem Speicher 350 gekoppelt werden oder anderweitig in Kommunikation treten. Der Prozessor und/oder die Rücksprungzielbeschränkungseinheit ist als Antwort auf und/oder als Folge des RTR-Rücksprungbefehls 314 (z. B. als Antwort auf einen oder mehrere daraus dekodierten Befehle oder Steuersignale) dafür einsetzbar, mit Bezug auf bestimmte Rücksprungziele (z. B. Befehle), an die der RTR-Rücksprungbefehl 314 Steuerflusstransfer zurückgeben darf, eingrenzend oder beschränkend zu sein. In manchen Ausführungsformen kann die Rücksprungzielbeschränkungseinheit 322 dazu verwendet werden, auf den RTR-Rücksprungbefehl 314 anzusprechen, um zu bestimmen, ob der Steuerflusstransfer auf einen Rücksprungzielbefehl (z. B. im veranschaulichten Beispiel Rücksprungzielbefehl 318) des RTR-Rücksprungbefehls 314, der sich an der Rücksprungadresse 358 befindet, eingeschränkt werden soll oder nicht, basierend darauf, ob eine Art des Rücksprungzielbefehls und/oder eine andere Nicht-Opcode-Information des Rücksprungzielbefehls mit dem RTR-Rücksprungbefehl kompatibel ist.
  • In manchen Ausführungsformen kann die Rücksprungzielbeschränkungseinheit 322 eine mit der Dekodiereinheit gekoppelte erste Bestimmungseinheit 322 umfassen, die (bei Verwendung in einem Einsatz) mit dem Speicher 350 zu koppeln oder anderweitig in Kommunikation zu bringen ist. Die erste Bestimmungseinheit kann auf den RTR-Rücksprungbefehl 314 ansprechen, um zu bestimmen, ob ein Befehl an der Rücksprungadresse 358 (z. B. Rücksprungzielbefehl 318) von einer Art ist, die mit dem RTR-Rücksprungbefehl 314 kompatibel ist. Wie gezeigt kann eine Angabe eines Typs 321 des Befehls an der Rücksprungadresse 358 (z. B. ein Opcode oder eine Angabe, dass der Befehl gegebenenfalls ein Rücksprungzielbefehl 318 ist) der Rücksprungzielbeschränkungseinheit 322 bereitgestellt werden. In manchen Ausführungsformen kann nur der Rücksprungzielbefehl 318 von einer Art sein (z. B. einen Opcode aufweisen), der mit dem RTR-Rücksprungbefehl 314 kompatibel ist, während andere Befehlsarten (z. B. verschiedene Opcodes des Befehlssatzes) möglicherweise nicht kompatibel sind. Alternativ dazu können einige verschiedene Befehlsarten (z. B. einige verschiedene Opcodes), häufig nicht mehr als etwa fünf verschiedene Befehlsarten, gegebenenfalls mit dem RTR-Befehl kompatibel sein, während eine im Allgemeinen größere Anzahl verschiedener Arten (z. B. eine größere Anzahl verschiedener verbleibender Opcodes des Befehlssatzes) möglicherweise nicht kompatibel ist.
  • In manchen Ausführungsformen können solche kompatible Befehlsart(en) 318 zweckgewidmete Rücksprungzielmarkierungsart(en) von Befehlen darstellen, die für die Verwendung in Kombination mit dem RTR-Rücksprungbefehl 314 vorgesehen oder ausschließlich dafür konzipiert sind, um potentiell legitime oder zulässige Rücksprungzielpositionen für den RTR-Rücksprungbefehl zu markieren. Im Allgemeinen kann der Rücksprungzielbefehl 318 keine arithmetischen, logischen, Speicherzugriffs- oder anderen Funktionen aufweisen, obwohl in Erwägung gezogen wird, dass sie gegebenenfalls für die jeweilige Implementierung wünschenswert sein könnten. In manchen Ausführungsformen kann der Rücksprungzielbefehl 318 von einer Art sein, die, abgesehen von der Überprüfung der Art und Bereitstellung der RTR-Information, als eine Nulloperation (NOP) ausgeführt oder durchgeführt werden kann. In manchen Ausführungsformen kann das Vorliegen eines solchen kompatiblen Befehls eine notwendige Bedingung sein, aber keine ausreichende Bedingung, um ein Rücksprung an eine Position zu erlauben. Wenn sich ein solcher kompatibler Befehl nicht an der Rücksprungadresse 358 befindet, kann die Rücksprungzielbeschränkungseinheit 322 und/oder der Prozessor der versuchte Rücksprung an die Rücksprungadresse beschränken oder nicht erlauben. Beispielsweise können die Rücksprungzielbeschränkungseinheit und/oder der Prozessor eine Ausnahme 360 ausgeben oder signalisieren, wie etwa z. B. einen Steuerschutzfehler.
  • In manchen Ausführungsformen kann die Rücksprungzielbeschränkungseinheit 322 eine mit der Dekodiereinheit gekoppelte zweite Bestimmungseinheit 334 umfassen, die (bei Verwendung in einem Einsatz) mit dem Speicher 350 zu koppeln oder anderweitig in Kommunikation zu bringen ist. Die zweite Bestimmungseinheit kann auf den RTR-Rücksprungbefehl 314 ansprechen, um zu bestimmen, ob die RTR-Information des Befehls an der Rücksprungadresse 358, die von diesem angegeben wird oder anderweitig diesem zugeordnet ist (z. B. dem Rücksprungzielbefehl 318), mit der RTR-Information von dem RTR-Rücksprungbefehl 314, die von diesem angegeben wird oder anderweitig diesem zugeordnet ist, kompatibel ist. Wie gezeigt kann die RTR-Information 320 des Befehls an der Rücksprungadresse 358 der Rücksprungzielbeschränkungseinheit 320 bereitgestellt werden und die RTR-Information 316 des RTR-Rücksprungbefehls kann der Rücksprungzielbeschränkungseinheit 322 bereitgestellt werden.
  • Die beiden RTR-Informationssätze können in verschiedenen Ausführungsformen auf verschiedene Weisen kompatibel sein. Beispielsweise können die zwei RTR-Informationssätze in manchen Ausführungsformen kompatibel sein wenn, und nur wenn, sie gleich sind oder anderweitig zusammenpassen. Beispielsweise kann jeder Satz RTR-Information potentiell einen Wert umfassen und die beiden Werte können passend oder auf andere Weisen kompatibel sein, die für die jeweilige Umsetzung erwünscht ist. Beispielsweise können die beiden RTR-Informationssätze durch eine Funktion (z. B. eine Streuwertfunktion, eine Prüfsummenfunktion, eine logische AND-, OR-, NOT-, XOR- oder andere logische Operation oder Funktion etc.) passen und/oder miteinander kompatibel sein. In manchen Ausführungsformen können, wenn die beiden RTR-Informationssätze nicht kompatibel sind, die Rücksprungzielbeschränkungseinheit 322 und/oder der Prozessor den versuchten Rücksprung zur Rücksprungadresse 358 beschränken oder nicht erlauben. Beispielsweise können die Rücksprungzielbeschränkungseinheit 322 und/oder der Prozessor eine Ausnahme ausgeben oder signalisieren, wie etwa z. B. einen Steuerschutzfehler.
  • In anderen Ausführungsformen ist es möglich, RTR-Informationen aus den Befehlen mit anderen Informationen zu kombinieren, obwohl dies nicht erforderlich ist. Beispiele für solche anderen Informationen umfassen, ohne darauf beschränkt zu sein, Prozessoridentifikationstypinformation (z. B. aus einem Prozessoridentifikationsregister), vorrichtungsspezifische Information (z. B. eine Modellnummer oder Seriennummer), plattformspezifische Information, vertrauliche Informationen des Betriebssystems, einen Teil (z. B. ein erstes Byte) oder einen gesamten Chiffrierschlüssel oder dergleichen. Beispielsweise kann ein Direktoperand des Befehls an solche Information angebracht sein, mit ihr gehasht, mit ihr XODERiert oder anderweitig kombiniert sein. Dies kann helfen, die Sicherheit zu erhöhen, da Hacker üblicherweise solche Informationen nicht ohne weiteres kennen. Wenn eine Seite des Vergleichs (z. B. der Rücksprungwert) den direkt Operanden mit einer solchen zusätzlichen Information kombinieren würde und die andere Seite (z. B. das Rücksprungziel) nur den Direktoperanden verwenden würde, wäre Software für die spezielle Vorrichtung maßgeschneidert (z. B. vorrichtungsspezifische Information). Der Kunde könnte Software aus einer zuverlässigen Quelle, die solche Informationen kennt, beziehen. Software für eine Vorrichtung funktioniert möglicherweise auf einer anderen Vorrichtung nicht.
  • Wenn die Art des Befehls an der Rücksprungadresse kompatibel ist und wenn die beiden RTR-Informationssätze kompatibel sind, dann kann die Rücksprungzielbeschränkungseinheit und/oder der Prozessor bestimmen, den Steuerflusstransfer zum versuchten Rücksprungziel an der Rücksprungadresse 358 nicht zu beschränken und/oder zu erlauben. Beispielsweise kann die Rücksprungzielbeschränkungseinheit 322 der Steuerflusstransfereinheit 338 ein Genehmigungssignal 336 bereitstellen. Abgesehen davon, dass der Steuerflusstransfer von der Bestimmung oder Autorisierung der Rücksprungzielbeschränkungseinheit (z. B. dem Genehmigungssignal 336) bedingt ist, kann der Steuerflusstransfer durchaus ein üblicher sein. beispielsweise kann die Steuerflusstransfereinheit eine Sprungausführungseinheit oder eine andere Art von Einheit oder Logik umfassen, die sich für die Implementierung einen Rücksprung-aus-der-Prozedur-Steuertransfervorgang eignet. Stellvertretend kann die Steuerflusstransfereinheit die Rücksprungadresse 358 als eine Rücksprungadresse 342 in einem Befehlszeigerregister 340 speichern. In Ausführungsformen, in denen gegebenenfalls segmentierter Speicher verwendet wird, was nicht erforderlich ist, kann, wenn der Befehl an der Rücksprungadresse sich in einem anderen Segment befindet (z. B. im Fall eines segmentübergreifenden Steuertransfers), die Steuerflusstransfereinheit ein Segment 346 für den Rücksprungzielbefehl 318 in einem Segmentselektorregister 344 speichern.
  • Um gewisse Konzepte weiter zu veranschaulichen, wird eine detaillierte beispielhafte Ausführungsform eines Paares aus RTR-Rücksprung- und Rücksprungzielbefehlen betrachtet. Eine spezielle Ausführungsform eines RTR-Rücksprungbefehls ist ein RETK-Befehl mit einer Konstante K (z. B. eine ganze Zahl), die in einem Direktoperanden des Befehls bereitgestellt ist (z. B. ein 2-Bit-, 4-Bit-, 8-Bit- oder 16-Bit-Direktoperand). Im Allgemeinen gilt, je größer die Anzahl möglicher Werte der Konstante, desto größer der Schutz vor arglistigen Angriffen. Beispielsweise kann ein 8-Bit-Direktoperand in der Lage sein, Werte von 0 bis 255 bereitzustellen. Eine spezielle Ausführungsform eines Rücksprungzielbefehls ist ein ENDRETK-Befehl mit einer Konstante K in einem Direktoperanden. Der ENDRETK-Befehl markiert einen Endrücksprungpunkt oder ein potentiell zulässiges Rücksprungziel für den RETK-Befehl. Häufig mag es günstig sein, die Direktoperanden der zwei Befehle gleich groß zu machen, obwohl dies nicht erforderlich ist, sofern die Werte gleich sein können. Damit ein Steuerflusstransfer von der Rücksprungzielbeschränkungseinheit 322 und/oder dem Prozessor erlaubt ist, müssen möglicherweise sowohl die Gegenwart des ENDRETK-Befehls an der versuchten Rücksprungzieladresse als auch die Gleichheit der beiden Konstanten K in den beiden Befehlen vorliegen. Beispielsweise kann ein RET17-Befehl nur zu einem ENDRET17-Befehl zurückspringen dürfen, aber nicht zu einem ENDRET16-Befehl oder jedem anderen Befehl, der nicht ENDRET17 ist. Gleichermaßen kann ein RET232-Befehl nur zu einem ENDRET232-Befehl zurückspringen dürfen, aber nicht zu einem ENDRET17-Befehl oder jedem anderen Befehl, der nicht ENDRET232 ist. Wenn der RET232-Befehl versucht, zum Pop-Stapel-Befehl, einem Addier-Befehl, einem ENDRET231-Befehl oder jedem anderen Befehl außer einem ENDRET232-Befehl zurückzukehren, kann der versuchte Rücksprung beschränkt oder verhindert werden und eine Ausnahme (z. B. ein Steuerschutzfehler) kann ausgelöst werden. Es versteht sich, dass dies nur ein veranschaulichendes Beispiel ist und der Schutzumfang der Erfindung nicht auf dieses spezielle Beispiel beschränkt ist.
  • Die Rücksprungzielbeschränkungseinheit 322 und/oder der Prozessor können eine spezifische oder spezielle Logik (z. B. Transistoren, integrierte Schaltkreise oder andere Hardware, die gegebenenfalls mit Firmware (z. B. in nichtflüchtigen Speichern gespeicherte Befehle) und/oder Software (z. B. im Speicher gespeicherte höherrangige Befehle) kombiniert ist, die eingesetzt werden kann, um den RTR-Rücksprungbefehl durchzuführen und/oder zu bestimmen, ob der Rücksprung zum Rücksprungziel als Antwort auf und/oder in Folge von dem RTR-Rücksprungbefehl zu beschränken ist.
  • Vorteilhafterweise können der RTR-Rücksprungbefehl und der Rücksprungzielbefehl helfen, die Rücksprungsteuerflusstransfers bedingt zu beschränken, einzugrenzen oder stärkere Kontrolle darüber bereitzustellen. Als ein potentieller Vorteil kann dies helfen, Angriffe rücksprungorientierter Programmierung (ROP) zu verhindern oder ihre Ausführung zumindest signifikant zu erschweren. Einerseits müssen ROP-Angriffe sich im Allgemeinen auf die Fähigkeit stützen, wiederholt Rücksprungsteuerflusstransfers an die ersten Befehle der verschiedenen verketteten Gadgets durchführen zu können. Jedoch, wenn ein versuchter Rücksprungsteuerflusstransfer an einen Befehl einer anderen Art (z. B. mit einem anderen Opcode) als ein bestimmter Rücksprungzielbefehl 318 erfolgen soll, kann in manchen Ausführungsformen der Prozessor den Rücksprungsteuerflusstransfer beschränken oder verhindern. Darüber hinaus, wenn ein versuchter Rücksprungsteuerflusstransfer zu einem Befehl mit einer nicht passenden oder anderweitig inkompatiblen RTR-Information erfolgen soll, kann in manchen Ausführungsformen ein solcher Rücksprungsteuerflusstransfer beschränkt oder verhindert werden. Insgesamt kann dies es ebenfalls schwerer machen für einen Angreifer, zu Versuchen zu Positionen zurückzukehren, die ursprünglich nicht dafür vorgesehen waren. Die Verwendung des speziellen Rücksprungzielbefehls und die Sätze kompatibler RTR-Information können helfen, die zulässigen Rücksprungpfade im Code zu fixieren, so dass willkürliche Rücksprünge zu den von Angreifern gewünschten Rücksprungzielen generell sehr unwahrscheinlich sind. Wenn das Programm geschaffen wird, geben die Positionen der Rücksprungzielbefehle und die kompatiblen Paare von RTR-Informationen alle beabsichtigten Rücksprungziele an. Andre Rücksprungziele können im Allgemeinen nicht ohne Weiteres gefunden werden, da die Rücksprungzielbefehle häufig sich nicht an den gewünschten Positionen befinden und/oder keine kompatible RTR-Information aufweisen würde. Dies neigt dazu, die Anzahl zufällig existierender Gadgets sehr gering zu machen.
  • 4 ist ein Blockdiagramm, das die Verwendung einer Ausführungsform eines RTR-Rücksprungbefehls 414 veranschaulicht und eine Ausführungsform eines Rücksprungzielbefehls 418 durch eine Ausführungsform einer Rücksprungzielbeschränkungseinheit 422. Eine aufrufende Prozedur 495 weist einen Prozeduraufrufbefehl 496 zum Angeben einer Zieladresse 499 und einer Rücksprungadresse 458 auf. Die Zieladresse 499 ist für einen ersten Befehl 401 in einer Rücksprungprozedur 498. Wie bei (1) gezeigt veranlasst der Prozeduraufrufbefehl den Prozessor dazu, die Anfangszieladresse in einem Befehlszeigerregister 440 zu speichern und ein Anfangssegment der Rücksprungprozedur 498 in einem Segmentselektorregister zu speichern. Eine Rücksprungadresse 454 kann auch auf dem der Rücksprungadresse 458 entsprechenden Stapel gespeichert werden. Der Steuerfluss springt dann oder transferiert zur Rücksprungprozedur 498. Wie bei (2) gezeigt kann der Befehl 401 an der Zieladresse 498 ausgeführt werden und dann können ein oder mehrere andere Befehle, die zu einem RTR-Rücksprungbefehl 414 führen, ausgeführt werden. Wenn der RTR-Rücksprungbefehl 414 ausgeführt wird, kann die Rücksprungzielbeschränkungseinheit 422 RTR-Information 416 des RTR-Rücksprungbefehls und RTR-Information 420 des implizierten Rücksprungzielbefehls 418 an der Rücksprungadresse 454 am durch den RTR-Rücksprungbefehl angegebenen Stapel 452 empfangen. Eine Angabe einer Art 421 des Rücksprungzielbefehls kann der Rücksprungbeschränkungseinheit 422 ebenfalls bereitgestellt werden. Wie in (3) gezeigt kann die Rücksprungzielbeschränkungseinheit bestimmen, ob der versuchte Steuerflusstransfer zum Rücksprungzielbefehl 418, wie hierin anderswo definiert, erlaubt oder beschränkt wird. Wenn sie bestimmt nicht zu beschränken, dann kann sie, wie in (4A) gezeigt, die Rücksprungadresse 454 in das Befehlszeigerregister 440 speichern und kann das Segment der aufrufenden Prozedur 446 in das Segmentselektorregister 444 speichern (im Fall eines segmentübergreifenden Transfers). Wenn sie bestimmt zu beschränken, kann sie, wie in (4B) gezeigt, eine Ausnahme 460 hervorrufen. Ein Sprung oder Transfer zum Rücksprungzielbefehl 418 kann dann vorgenommen werden. Wie bei (5) gezeigt, kann der Rücksprungzielbefehl potentiell als Nulloperation (NOP) ausgeführt werden und dann kann die Ausführung mit einem nachfolgenden Befehl 497 fortsetzen.
  • 5 ist ein Blockflussdiagramm einer Ausführungsform eines Verfahrens 570 zur Durchführung einer Ausführungsform eines rücksprungzielbeschränkten Prozedurrücksprungbefehls (RTR-Rücksprungbefehl). In verschiedenen Ausführungsformen kann das Verfahren von einem Prozessor, einer Befehlsverarbeitungsvorrichtung oder einer anderen digitalen Logikvorrichtung durchgeführt werden. In manchen Ausführungsformen können die Vorgänge und/oder das Verfahren in 5 von und/oder innerhalb des Prozessors aus 23 durchgeführt werden. Die hierin beschriebenen Bestandteile, Merkmale und speziellen Betriebsdetails des Prozessors aus 23 gelten gegebenenfalls auch für die Vorgänge und/oder das Verfahren in 5. Alternativ dazu können die Vorgänge und/oder das Verfahren aus 5 durch und/oder innerhalb eines ähnlichen oder anderen Prozessors oder Vorrichtung durchgeführt werden. Darüber hinaus kann der Prozessor aus den 23 Vorgänge und/oder Verfahren durchführen, die dieselben, ähnlich oder unterschiedlich von denen in 5 sind.
  • Das Verfahren umfasst das Empfangen des RTR-Rücksprungbefehls bei Block 571. In verschiedenen Aspekten kann der Befehl bei einem Prozessor, einer Befehlsverarbeitungsvorrichtung oder einem Abschnitt davon (z. B. einer Befehlsabrufeinheit, einer Dekodiereinheit, einer Bus-Schnittstelleneinheit etc.) empfangen werden. In verschiedenen Aspekten kann der Befehl von einer nicht auf dem Nacktchip befindlichen Quelle (z. B. aus einem Speicher, einer Verbindung etc.) oder einer auf dem Nacktchip befindlichen Quelle (z. B. von einem Befehls-Cache, einer Befehlswarteschlange etc.) empfangen werden. In manchen Ausführungsformen kann der rücksprungzielbeschränkte Prozedurrücksprungbefehl RTR-Information aufweisen, angeben oder ihr anderweitig entsprechen oder zugeordnet sein.
  • Eine Bestimmung kann vorgenommen werden, ob eine Befehlsart an der Rücksprungadresse mit dem RTR-Rücksprungbefehl kompatibel ist, bei Block 572x. Wenn die Art als kompatibel bestimmt wird (d. h. „ja” in der Bestimmung in Block 572), kann das Verfahren zu Block 573 fortschreiten. In manchen Ausführungsformen muss, damit die Art als kompatibel gilt, der Befehl an der Rücksprungadresse ein wie anderswo hierin beschriebener Rücksprungzielbefehl sein.
  • Bei Block 573 kann eine Bestimmung vorgenommen werden, ob eine vom RTR-Rücksprungbefehl angegebene erste RTR-Information mit einer vom Befehl an der Rücksprungadresse angegebenen zweiten RTR-Information kompatibel ist. Diese Bestimmung kann wie hierin anderswo beschrieben vorgenommen werden. Wenn die RTR-Informationssätze als kompatibel bestimmt werden (d. h. „ja” in der Bestimmung in Block 573), kann das Verfahren zu Block 574 fortschreiten.
  • Bei Block 574 kann das Verfahren einen Versuch des RTR-Rücksprungbefehls erlauben, einen Steuerflusstransfer zu einem Befehl an der dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse vorzunehmen. Im Gegensatz dazu kann, wenn entweder die Art als nicht kompatibel bestimmt wird (d. h. „nein” in der Bestimmung in Block 572) oder wenn die RTR-Informationssätze als nicht kompatibel bestimmt werden (d. h. „nein” in der Bestimmung in Block 573), das Verfahren zu Block 575 fortschreiten. Bei Block 575 kann das Verfahren den Versuch des RTR-Rücksprungbefehls beschränken, den Steuerflusstransfer zum Befehl an der dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse vorzunehmen.
  • Ein weiterer potentieller Vorteil der hierin offenbarten RTR-Rücksprungbefehle und/oder RTR-Information ist, dass sie helfen können, die Analyse oder Untersuchung von Code auf das Risiko für Angriffe (z. B. ROP-Angriffe) zu ermöglichen und/oder verbessern. Code wird oft durchgesehen, überprüft und durch Analyse verifiziert, bevor seine Verwendung zugelassen wird. Beispielsweise passiert dies häufig bei digitalen Verbreitungsplattformen. Beispielsweise ist der App Store eine digitale Verbreitungsplattform für mobile Apps auf iOS, die es Benutzern erlaubt, mit dem Apple iOS Software-Development-Kit (SDK) entwickelte Anwendungen zu durchsuchen und herunterzuladen. Ein weiteres Beispiel ist der Mac App Store, der für Mac Computer konzipierte Anwendungen zum Herunterladen bietet. Veröffentlicher von Anwendungen können Anwendungen bei solchen digitalen Verbreitungsplattformen zur Begutachtung einreichen, damit sie von der digitalen Verbreitungsplattform oder Marktplätzen gekauft oder heruntergeladen werden. Üblicherweise können die Anwendungen als Teil des Prozesses durchgesehen, überprüft und verifiziert werden, bevor ihr Kauf oder Download zugelassen wird.
  • Eine gebräuchliche Art von Analyse, die während solcher Überprüfungen durchgeführt wird, ist die statische Analyse (z. B. statische Binärbewertungsverfahren). Jedoch ist ein Nachteil dieser Verfahren, dass sie für das Detektieren von ROP-artigen Angriffen häufig nicht perfekt geeignet sind. Weitere Hintergrunddiskussionen dieses Themas sind im Artikel „Jekyll an iOS: When Benign Apps Become Evil", 22. USENIX Security Symposium, August 2013, verfügbar. Eine Befürchtung ist, dass Angreifer bösartige Anwendungen, die für die Durchführung von Angriffen konzipiert sind, schreiben könnten, während sie potentiell die Detektion durch die statische Analyse umgehen. Beispielsweise kann der Angreifer einen augenscheinlich normalen Code (z. B. eine Anwendung) erschaffen, der versteckte Gadgets aufweist, die durch die statische Analyse schwierig zu detektieren sind. Als ein spezielles Beispiel kann ein Anwendungsentwickler ein augenscheinlich normales Videospiel für die Verbreitung durch den App Store schreiben, aber mit in der Anwendung enthaltenen versteckten Gadgets für einen ROP-Angriff. Jedoch ist die statische Analyse möglicherweise nicht in der Lage, die verschiedenen schädlichen Rücksprungpfade zu bedenken oder vorauszusehen, denen nur während der Laufzeit gemäß den Laufzeitkommandos der Angreifer zu folgen ist. Zur Erinnerung, bei einem ROP-Angriff werden die Rücksprungpfade während der Laufzeit durch dynamisches Steuern des Steuerflusstransfers bestimmt, indem die Rücksprungadressen auf dem Stapel platziert werden. Infolgedessen können die versteckten Gadgets möglicherweise die Detektion durch die statische Analyse umgehen. Die Anwendung kann den Anmeldungsüberprüfungs- und -durchsichtsprozesse bestehen und können zum Kauf und/oder Herunterladen im App Store platziert werden. Wird das Videospiel oder andere Anwendung auf dem Smartphone, Tablet-Computer oder einem anderen Computer-System installiert, kann der Angreifer den Angriff beginnen. Der Angreifer kann schädliche Steuerflüsse einführen und die Gadgets in einer bestimmten Reihenfolge zusammenfügen, um arglistige Vorgänge durchzuführen.
  • Vorteilhafterweise können die hierin offenbarten RTR-Rücksprungbefehle und/oder RTR-Information helfen, die Analyse von Code auf arglistige Absichten und/oder versteckte Gadgets zu ermöglichen und/oder verbessern. Einerseits können die Paare aus RTR-Rücksprungbefehlen und Rücksprungzielbefehlen und/oder die Paare kompatibler RTR-Information die Steuerflussrücksprungpfade statischer machen oder fixieren. Während der Laufzeit kann beschränkt werden, dass die Steuerflussrücksprungpfade nach Wunsch des Angreifers überall hingehen, sondern sie können vielmehr auf die Steuerflussrücksprungpfade beschränkt sein, die mit diesen Befehlspaaren oder kompatiblen RTR-Informationspaaren kompatibel sind. Die Positionen der Rücksprungzielbefehle und der Sätze kompatibler RTR-Information geben alle möglichen/zulässigen Rücksprungziele an. Es kann möglich sein, zu mehreren verschiedenen möglichen Rücksprungpositionen zu springen, die auch einen kompatiblen Rücksprungzielbefehl mit kompatibler RTR-Information haben (z. B. durch Zufall etc.), obwohl es einfacher sein sollte, diese unterschiedlichen Rücksprungpfade vorwegzunehmen oder vorauszusehen und sie sollten im Allgemeinen in geringerer Zahl vorliegen. Dies kann es für die Analyse (z. B. statische Analyseverfahren) viel einfacher machen, die möglichen Rücksprungpfade zu durchsuchen, was bei der Detektion von schädlichem Code helfen kann. Dies kann auch dabei helfen, es dem Anwendungsentwickler zu erschweren, eine Anwendung zu gestalten, die einen ROP-Angriff oder einen anderen arglistigen Angriff durchführen kann und gleichzeitig in der Lage ist, eine Detektion während der Analyse zu umgehen.
  • 6 ist ein Blockdiagramm einer Ausführungsform eines maschinenlesbaren Mediums 680 (z. B. ein maschinenlesbares Speichermedium), das eine erste Art von Code 682 bzw. eine zweite Art von Code 684 speichert oder anderweitig bereitstellt, die RTR-Rücksprungbefehle 683, 685 aufweisen, die verschiedene zulässige oder erlaubte RTR-Information angeben. In manchen Ausführungsformen kann die erste Art von Code Benutzerebenen-Code und/oder nicht zugriffsbeschränkter Code sein, während die zweite Art von Code Systemebenen-Code und/oder zugriffsbeschränkter Code sein kann. In anderen Ausführungsformen können andere Arten von Code verwendet werden, wie etwa beispielsweise Bibliotheks-Code im Gegensatz zu Nicht-Bibliotheks-Code, Gerätetreiber-Code im Gegensatz zu Nicht-Gerätetreiber-Code, Betriebssystem-Code im Gegensatz zu Nicht-Betriebssystem-Code, Benutzerebenen-Code im Gegensatz zu Nicht-Benutzerebenen-Code oder verschiedene Kombinationen daraus.
  • Die erste Art von Code weist RTR-Rücksprungbefehle 683 auf, die RTR-Information angeben, die für die erste Art von Code 682 zulässig oder erlaubt ist, aber für die zweite unterschiedliche Art von Code 684 nicht erlaubt ist. In manchen Ausführungsformen kann die RTR-Information, die für die erste Art von Code (z. B. Benutzerebenen-Code) erlaubt ist, für eine Vielzahl anderer Arten von Code (z. B. Betriebssystem-Code, Gerätetreiber-Code) nicht erlaubt sein. Ebenso weist die zweite Art von Code RTR-Rücksprungbefehle 685 auf, die RTR-Information enthalten, die für die zweite Art von Code 684 erlaubt oder zulässig ist, die aber für die erste Art von Code 682 nicht erlaubt ist. In manchen Ausführungsformen kann die RTR-Information, die für die zweite Art von Code (z. B. Betriebssystem-Code) erlaubt ist, für eine Vielzahl anderer Arten von Code (z. B. Benutzerebenen-Code, Gerätetreiber-Code etc.) nicht erlaubt sein.
  • In manchen Ausführungsformen kann unterschiedliche zulässige RTR-Information für unterschiedliche Ebenen der Zugangsbeschränkung oder Sicherheit verwendet werden. Beispielsweise kann die RTR-Information der RTR-Rücksprungbefehle 683 der ersten Art von Code 682 (z. B. Benutzerebenen- und/oder nicht zugriffsbeschränkter Code) auf einen Satz zulässiger oder erlaubter Werte beschränkt sein, die sich mit Bezug auf einen Satz zulässiger oder erlaubter Werte für die RTR-Information der RTR-Rücksprungbefehle 685 einer zweiten Art von Code 684 (z. B. Systemebenen- und/oder zugriffsbeschränkter Code) gegenseitig ausschließen. Beispielsweise können nichtüberlappende Wertebereiche für diese zwei unterschiedlichen Arten von Code verwendet werden. Als ein spezielles veranschaulichendes Beispiel können gegebenenfalls ganzzahlige Werte von 0–127 für die RTR-Information für die erste Art von Code 682 verwendet werden, während die ganzzahligen Werte 128–255 gegebenenfalls für die RTR-Information für die zweite Art von Code 684 verwendet werden kann.
  • Zusätzlich dazu können, wenn gewünscht, mehr als zwei (z. B. drei, vier, fünf oder mehr) verschiedene Arten von Code gegebenenfalls verschiedene exklusive Sätze (z. B. Bereiche ganzer Zahlen) zulässiger RTR-Information aufweisen. Beispielsweise können in einer speziellen beispielhaften Ausführungsform gegebenenfalls sechs unterschiedliche, sich gegenseitig ausschließende Sätze (z. B. Bereiche ganzer Zahlen) zulässiger RTR-Information für RTR-Befehle verwendet werden. Beispielsweise kann ein erster ganzzahliger Wertebereich für die RTR-Befehle von Benutzeranwendungen verwendet werden, ein zweiter anderer Wertebereich kann für die RTR-Befehle von Benutzerbibliotheken verwendet werden, ein dritter, wiederum anderer, Wertebereich kann für die RTR-Befehle von Systemanwendungen verwendet werden, ein vierter, wiederum anderer, Wertebereich kann für die RTR-Befehle von Systembibliotheken verwendet werden, ein sechster, wiederum anderer, Wertebereich kann für die RTR-Befehle von Gerätetreibern verwendet werden und ein sechster, wiederum anderer, Wertebereich kann für die RTR-Befehle eines Betriebssystemkerns verwendet werden. Es versteht sich, dass dies lediglich ein veranschaulichendes Beispiel ist, das nicht erforderlich ist.
  • Bei dieser Ausführungsform wird angemerkt, dass die zulässige RTR-Information den RTR-Rücksprungbefehlen, nicht den Rücksprungzielbefehlen zugewiesen und/oder für diese reguliert wird. Als ein Beispiel kann es einer Benutzerebenenanwendung nicht erlaubt sein, einen RTR-Rücksprungbefehl mit RTR-Information (z. B. einem Wert) zu enthalten, der für die Benutzerebenenanwendung nicht zulässig ist (z. B. stattdessen für das Betriebssystem reserviert ist). Dem Benutzerebenen-Code kann es jedoch erlaubt sein, einen Rücksprungzielbefehl (z. B. einen ENDRETK-Befehl) mit RTR-Information (z. B. einem Wert) zu enthalten, die gleich, passend oder komplementär ist zu der für das Betriebssystem reservierten RTR-Information. Auf diese Weise kann die Benutzerebenenanwendung eine Betriebssystemprozedur aufrufen und ein Rücksprung kann zurück zur Benutzerebenenanwendung, die einen Rücksprungzielbefehl mit komplementärer RTR-Information enthält, erlaubt sein.
  • 7 ist ein Blockflussdiagramm einer Ausführungsform eines Verfahrens 786 zum Analysieren von Code. Die Code-Analyse kann verwendet werden, um zu bestimmen, ob der Code Grundsätze oder Regeln erfüllt, die festlegen, welche RTR-Information für RTR-Rücksprungbefehle zulässig oder erlaubt ist. In manchen Ausführungsformen kann das Verfahren von einem Code-Analysesystem durchgeführt werden. Beispielsweise kann in manchen Ausführungsformen das Code-Analysesystem ein Modul eines Anwendungsmarktplätze (z. B. dem App Store) oder einer anderen digitalen Verbreitungsplattform sein, der/die die Analyse durchführt, um zu verifizieren, ob ein Anwendungsentwickler die RTR-Information gemäß den Regeln oder Grundsätzen zugewiesen hat. Als ein weiteres Beispiel kann das Code-Analysesystem ein oder mehrere Betriebssysteme, Module virtueller Maschinen oder andere zugriffsbeschränkte Software-Module umfassen. In noch einem weiteren Beispiel kann die Logik eines Prozessors, wie etwa Mikro-Code und/oder Hardware, das Verfahren durchführen.
  • Das Verfahren umfasst das Empfangen einer ersten Art von Code in Block 787. Beispielsweise kann ein Code-Empfangsmodul den Code empfangen. Das Verfahren umfasst das Bestimmen, ob RTR-Rücksprungbefehle der ersten Art von Code nur RTR-Information angeben, die für die erste Art von Code, aber nicht für eine oder mehrere andere Arten von Code erlaubt ist, bei Block 788. Die Arten von Code können jede der zuvor erwähnten sein. Dies kann die Verwendung von jedem der zuvor erwähnten sich gegenseitig ausschließenden Sätze oder Bereiche von RTR-Information umfassen. Wenn die Bestimmung „nein” lautet, schreitet das Verfahren bei Block 789 fort, wo festgelegt wird, dass die RTR-Information die Grundsätze oder Regeln nicht erfüllt. Ansonsten, wenn die Bestimmung „ja” lautet, fährt das Verfahren bei Block 790 fort, wo festgelegt wird, dass die RTR-Information die Grundsätze oder Regeln erfüllt. Als ein Beispiel kann eine digitale Verbreitungsplattform entscheiden, den Code als Reaktion auf Block 789 nicht zu verifizieren, sofern die RTR-Information nicht angepasst ist, um den Regeln oder Grundsätzen zu entsprechen. Als weiteres Beispiel kann ein Betriebssystemmodul bestimmen, die Ausführung des Codes als Reaktion auf Block 789 nicht zu erlauben.
  • 8 ist ein Blockflussdiagramm einer anderen Ausführungsform eines Verfahrens 891 zum Analysieren von Code. In manchen Ausführungsformen kann das Verfahren durch ein Code-Analysesystem durchgeführt werden. Beispielsweise kann das Code-Analysesystem in manchen Ausführungsformen ein Modul eines Anwendungsmarktplätzen (z. B. dem App Store) oder einer anderen digitalen Verbreitungsplattform sein. Als weiteres Beispiel kann das Code-Analysesystem ein oder mehrere zugriffsbeschränkte Software-Module umfassen.
  • Das Verfahren umfasst das Empfangen von Code bei Block 892. Beispielsweise kann ein Code-Empfangsmodul den Code empfangen. Das Verfahren umfasst gegebenenfalls das Empfangen von Metadaten, die die beabsichtigten komplementären Paare aus RTR-Rücksprung- und Rücksprungzielbefehlen angibt, in Block 893. In manchen Ausführungsformen kann ein Code-Analysesystem erfordern, dass beabsichtigte Komplementärpaare von RTR-Rücksprung- und Rücksprungzielbefehlen, die keine passende oder kompatible RTR-Information aufweisen, identifiziert werden. Beispielsweise kann ein Code-Analysesystem eines Anwendungsmarktplatzes (z. B. dem App Store) oder einer anderen digitalen Verbreitungsplattform eine solche Identifikation erfordern, wenn die Anwendungen oder der Code zur Begutachtung und Überprüfung eingereicht werden und/oder bevor sie bewilligt werden. Die Anwendungsentwickler müssen möglicherweise Metadaten gemeinsam mit der Anwendung oder dem Code einreichen, die diese beabsichtigten Komplementärpaare von RTR-Rücksprung- und Rücksprungzielbefehlen angeben. Als weiteres Beispiel kann ein oder mehrere zugriffsbeschränkte Software-Module solche Metadaten oder Identifikation zum Zeitpunkt des Anwendungsaufrufs erfordern. Solche Informationen können auch verwendet werden, um die Analyse auf potentielle Angriffe zu verbessern.
  • Das Verfahren umfasst das Ändern von RTR-Informationen für zumindest ein Paar beabsichtigter komplementärer RTR-Rücksprung- und Rücksprungzielbefehlen, während gleichzeitig die RTR-Information komplementär bleiben darf, in Block 894. In manchen Ausführungsformen kann das Code-Analysesystem oder ein Modul die Angaben oder Metadaten einsetzen, um neue oder andere RTR-Informationen (z. B. Werte) zumindest einem, selektiv manchen, einer Vielzahl von oder allen der beabsichtigten Paaren kompatibler RTR-Rücksprung- und Rücksprungzielbefehlen zuzuweisen. Beispielsweise kann die RTR-Information eines RTR-Rücksprungbefehls und seines identifizierten Rücksprungzielbefehls verändert werden, so dass sie kompatibel bleiben, aber eine andere RTR-Information als zuvor aufweisen. Zum Beispiel kann ein RET17/ENDRET17-Paar auf ein RET233/ENDRET233-Paar geändert werden.
  • Dies kann auf verschiedene Arten in verschiedenen Ausführungsformen erfolgen. In einem Aspekt kann das System oder ein Modul überprüfen, dass es einen ausreichenden Grad an Diversität oder Entropie unter allen RTR-Informationssätzen gibt (z. B. ein Verhältnis von unterschiedlichen zu gleichen Paaren RTR-Informationen, das zumindest einen Schwellenwert erreichen muss). Ein extremes Beispiel wäre, wenn Code dieselbe RTR-Information für alle RTR-Rücksprung- und Rücksprungzielbefehlspaare verwenden würde, dann könnte der Wert der Überprüfung auf RTR-Informationskompatibilität herabgesetzt sein. Wenn das System oder Modul detektiert, dass es zu viele beabsichtigte Paare kompatibler Befehle mit derselben RTR-Information gibt (z. B. oberhalb eines Schwellenwertes), kann es bestimmen, einen Teil der RTR-Information zu ändern, um die Anzahl der verschiedenen möglichen Rücksprungzielsteuertransfers, die der Prozessor zulassen würde, zu reduzieren. Die Metadaten können zu diesem Zweck verwendet werden. Dies kann helfen, manche versteckten Gadgets zu entfernen. Dies kann von einem System oder Modul einer digitalen Verbreitungsplattform, einem Betriebssystemmodul oder dergleichen ausgeführt werden.
  • In einem anderen Aspekt kann gegebenenfalls die RTR-Information von manchen, einem Großteil oder allen beabsichtigten Paaren kompatibler Befehle verändert werden (z. B. pseudozufällig, gemäß eines Ersetzungsalgorithmus etc.), ungeachtet dessen, ob eine Diversitätsüberprüfung stattfindet. Dies kann helfen, die RTR-Information für die verschiedenen Paare zu vermischen oder umzustellen, was dabei helfen kann, versteckte Gadgets zu verhindern, die so gestaltet wurden, dass sie dieselbe kompatible RTR-Information aufweisen. Beispielsweise kann in einer speziellen Ausführungsform ein zugriffsbeschränktes Software-Modul (z. B. ein Betriebssystemmodul, Monitormodul einer virtuellen Maschine etc.) zu einem Zeitpunkt, an dem eine Anwendung oder Code aufgerufen oder geladen wird, manchen, einer Großzahl oder allen angegebenen oder beabsichtigten Befehlspaaren neue oder andere RTR-Informationen zuweisen. In einer anderen speziellen Ausführungsform kann ein Modul (z. B. von einer digitalen Verbreitungsplattform oder Betriebssystem) zu einem Zeitpunkt, an dem der Code herunterlädt (z. B. wenn eine Anwendung heruntergeladen wird), manchen, einem Großteil oder allen angegebenen oder beabsichtigten Paaren neue oder andere RTR-Informationen zuweisen.
  • Wiederum andere Wege, um zusätzliche Beschränkungen auf RTR-Information zu legen, werden ebenfalls in Betracht gezogen. Beispielsweise kann in manchen Ausführungsformen ein Modul (z. B. einer digitalen Verbreitungsplattform oder ein zugriffsbeschränkte Software-Modul) Grundsätze oder Regeln verhängen, die festlegen, dass verschiedene oder eindeutige RTR-Informationssätze für jeden der unterschiedlichen RTR-Rücksprungbefehle zu verwenden sind, damit diese zulässig oder erlaubt sind. Beispielsweise kann verfügt werden, dass jeder RTR-Rücksprungbefehl einen anderen Wert (z. B. eine andere ganze Zahl oder Konsonante) aufweist. Die Menge an RTR-Information (z. B. die Anzahl von Bits) kann ausreichend sein, um alle diese verschiedenen Werte bereitzustellen. Die spezielle Menge an RTR-Information hängt von der jeweiligen Umsetzung ab.
  • In manchen Ausführungsformen können die hierin offenbarten RTR-Rücksprungbefehle und Rücksprungzielbefehle neue unterschiedliche Opcodes erhalten, die nicht definiert sind und/oder in Alt-Code illegal sind. In anderen Worten existieren diese Opcodes möglicherweise in einem Befehlssatz eines Prozessors, der vor der Einführung des RTR-Rücksprung- und Rücksprungzielbefehle in den Befehlssatz gebaut wurde, nicht.
  • In anderen Ausführungsformen können die hierin offenbarten RTR-Rücksprungbefehle und/oder Rücksprungzielbefehle Opcodes erhalten, die dieselben wie diese(r) alte(n) Befehl(e) sind und/oder für den alten Befehlssatz definiert wurde. Dies kann erlauben, dass diese Befehle auf Alt-Hardware ausgeführt werden. In einer Ausführungsform kann ein Rücksprungzielbefehl (z. B. ein RETK-Befehl) kodiert werden, so dass die RTR-Information (z. B. das K) ein Direktoperand oder ein Suffix zu einem bestehenden Prozedurrücksprungbefehl (z. B. einem RET-Befehl) ist. Beispielsweise ist der Einzel-Byte-Befehl C3 in einer Intel-Architektur ein naher Prozedurrücksprungbefehl. Die RTR-Information (z. B. das K) kann an das Ende des C3-Befehls angebracht sein, so dass der Befehl auf Alt-Hardware laufen könnte, da die Alt-Hardware das C3 als den alten Prozedurrücksprungbefehl interpretieren und die nachfolgende RTR-Information (z. B. das K) ignorieren würde. Die Alt-Hardware kann die RTR-Information (z. B. das K) als Suffix betrachten, das ignoriert werden kann oder zumindest nicht verwendet werden muss. Im Gegensatz dazu kann die RTR-Information (z. B. das K) auf neuer Hardware vom Prozessor als ein Direktoperand betrachtet werden, das RTR-Information für die Verwendung beim Bearbeiten der Steuerflusstransfers bereitstellt. Bezugnehmend nun auf den Rücksprungzielbefehl kann der Rücksprungzielbefehl (z. B. der ENDRETK-Befehl) in einer Ausführungsform im alten Befehlssatz als legale oder definierte Instanz einer Nulloperation (NOP) kodiert sein. Auf diese Weise kann Alt-Hardware in der Lage sein, den Rücksprungzielbefehl (z. B. den ENDRETK-Befehl) zu verarbeiten, da er lediglich als eine NOP behandelt wird. Im Gegensatz dazu kann der Rücksprungzielbefehl (z. B. der ENDRETK-Befehl) auf neuer Hardware verwendet werden, um RTR-Information, wie hierin anderswo beschrieben, bereitzustellen.
  • In anderen Ausführungsformen kann ein Opcode eines alten Befehls gegebenenfalls umgewidmet werden. Beispielsweise kann dies für einen alten Befehl gemacht werden, der in einer modernen Umgebung gewöhnlich nicht verwendet wird und/oder sich im Prozess der Veraltung befindet. Als ein Beispiel kann gegebenenfalls ein RETn-Befehl in einer Intel-Architektur (z. B. mit den C2- oder CA-Opcodes) umgewidmet werden. Der RETn-Befehl weist einen 16-Bit-Direktoperanden (imm16) auf, der verwendet wird, um die Anzahl an Bytes (z. B. imm16 Bytes) zu spezifizieren, die erforderlich sind, um vom Stapel abzurufen. Derzeit wird der RETn-Befehl nicht weithin verwendet und ist im Begriff zu veralten, hauptsächlich deswegen, weil es derzeit üblicher ist, Daten in Registern zu verwalten, anstatt sie auf den Stapel zu legen und sie dann wieder abzurufen. Ein Prozessor kann einen ersten oder Alt-Modus aufweisen, in dem der RETn-Befehl üblicherweise interpretiert oder implementiert ist, wobei der 16-Bit-Direktoperand verwendet wird, um die Anzahl der Bytes anzugeben, die benötigt werden, um vom Stapel abzurufen. Der Prozessor kann auch einen zweiten oder neuen Modus aufweisen, in dem der RETn-Befehl interpretiert oder implementiert werden kann, wobei der 16-Bit-Direktoperand RTR-Information (z. B. einen K-Wert) bereitstellt).
  • In manchen Ausführungsform können neue aufrufende Prozeduren, die die hierin offenbarten neuartigen Rücksprungzielbefehle aufweisen, mit ein wenig Hilfe von der Systemsoftware in der Lage sein, in eine Alt-Prozedur (z. B. eine Prozedur einer von alten und neuen Systemen gemeinsam benutzten Funktionsbibliothek) aufzurufen und dennoch in der Lage sein, die Vorteile der hierin offenbarten Rücksprungzielbeschränkungen zu nutzen. Beispielsweise kann es einen alten Prozedurrücksprungbefehl (z. B. einen alten RET-Befehl mit dem C3-Opcode) in der Alt-Prozedur geben und eine Vielzahl von Bits oder ein oder mehr Bytes können nach dem alten Prozedurrücksprungbefehl als RTR-Information (z. B. ein K-Wert) verwendet oder interpretiert werden. Üblicherweise gibt es eine Vielzahl vorliegender Bits oder ein oder mehrere Bytes nach einem alten Rücksprungbefehl (z. B. einem C3-RET-Befehl). Beispielsweise kann Speicher in Gruppen (z. B. von 4 KB) zugeteilt werden. Der Rücksprungbefehl kann sich irgendwo innerhalb dieser Gruppen befinden. Üblicherweise würde es ein Byte nach dem Rücksprungbefehl geben, außer der Rücksprungbefehl war das allerletzte Byte der Gruppe und die nächste Gruppe war nicht zugeteilt. Zum Beispiel, wenn die Anwendung 4 KB an der Adresse 0x50000 und weitere 4 KG an der Adresse 0x51000 zuteilt und der Rücksprungbefehl befindet sich an der Adresse 50FFF, dann ist das nächste Byte bei 0x5100 und dieses nächste Byte kann als RTR-Information verwendet werden. Im Gegensatz dazu gäbe es kein Extra-Byte für RTR-Information wenn der Rücksprungbefehl bei 0x51 FFF wäre und eine Speichergruppe bei 0x52000 nicht zugeteilt wäre. Das heißt, in manchen Ausführungsformen kann eine Vielzahl von Bits oder ein oder mehrere Bytes nach einem alten Prozedurrücksprungbefehl in einer Alt-Prozedur (z. B. einer Bibliothek) als RTR-Information verwendet werden. Die neue aufrufende Prozedur kann den neuartigen Rücksprungzielbefehl mit komplementärer RTR-Information aufweisen.
  • System-Software (aufgerufen aufgrund eines Steuerschutzfehlers) kann bestimmte Fälle behandeln. Beispielsweise kann die System-Software eine Situation behandeln, in der der Alt-Rücksprungbefehl am Ende des Code-Raumes erscheint und die Bytes, die in dem virtuellen Adressraum nach dem RET vorliegen würden, nicht auf den physikalischen Speicher abgebildet sind. Die System-Software könnte auch einen Fall behandeln, in dem die Bibliothek interne Rücksprünge aufweist und da sie eine Alt-Bibliothek ist, interne Rücksprungzielbefehle, wie etwa beispielsweise durch Konsultieren einer Whitelist oder mittels anderer Logik, fehlen. In manchen Ausführungsformen kann System-Software (z. B. ein Betriebssystem) Grundsätze aufweisen, die erkennen, dass alte Prozeduren aufgerufen werden, und erlauben, dass manche der hierin offenbarten beschränkenden Kontrollen ignoriert werden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computer-Architekturen Prozessorkerne können auf unterschiedliche Arten, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren umgesetzt sein. Beispielsweise können Implementierungen solcher Kerne umfassen: 1) einen reihenfolgegebundenen Allzweck-Kern für allgemeine Rechenleistungen; 2) einen reihenfolgelosen Hochleistungs-Allzweck-Kern für allgemeine Rechenleistungen; 3) einen Spezialkern, der speziell für Grafik und/oder wissenschaftliche (Durchsatz-)Rechenleistung vorgesehen ist. Implementierungen verschiedener Prozessoren können umfassen: 1) eine CPU, die einen oder mehrere reihenfolgegebundene Allzweck-Kerne für allgemeine Rechenleistungen und/oder einen oder mehrere reihenfolgelose Allzweck-Kerne für allgemeine Rechenleistungen umfasst; und 2) einen Co-Prozessor, der einen oder mehrere Spezialkerne umfasst, die hauptsächlich für Grafik und/oder wissenschaftliche Zwecke (Durchsatz) vorgesehen sind. Solche unterschiedlichen Prozessoren (ihren zu unterschiedlichen Computer-Systemarchitekturen, die folgendes umfassen können: 1) den Co-Prozessor auf einem von der CPU getrennten Chip; 2) den Co-Prozessor auf einem separaten Nacktchip im selben Gehäuse wie eine CPU; 3) den Co-Prozessor auf demselben Nacktchip wie eine CPU (in welchem Fall ein solcher Co-Prozessor manchmal als Sonderzweck-Logik bezeichnet wird, wie etwa integrierte Grafik- und/oder wissenschaftliche (Durchsatz-)Logik, oder als Sonderzweck-Kerne); und 4) ein System auf einem Chip, das die beschriebene CPU auf demselben Nacktchip umfassen kann (manchmal als der/die Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet, der oben beschriebene Co-Prozessor und zusätzliche Funktionalität). Beispielhafte Kernarchitekturen werden als nächstes beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computer-Architekturen.
  • Beispielhafte Kernarchitekturen
  • Reihenfolgegebundenes und reihenfolgeloses Kern-Blockdiagramm
  • 9 ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgegebundene Pipeline als auch eine beispielhafte reihenfolgelose Registerumbenennungs-Ausgabe-/-Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 9B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines reihenfolgegebundenen Architekturkerns als auch einen beispielhaften reihenfolgelosen Registerumbenennungs-Ausgabe-/Ausführungs-Architekturkern zum Einbau in einen Prozessor gemäß Ausführungsformen der Erfindung veranschaulicht. Die Boxen mit durchgehender Umrandung in 9A–B veranschaulichen die reihenfolgegebundene Pipeline und den reihenfolgegebundenen Kern, während die optionale Hinzufügung der Boxen mit gestrichelter Umrandung die reihenfolgelosen Registerumbenennungs-Ausgabe-/-Ausführungs-Pipeline und -Kern veranschaulichen. Angesichts der Tatsache, dass der reihenfolgegebundene Aspekt eine Teilmenge des reihenfolgelosen Aspekts ist, wird der reihenfolgelose Aspekt beschrieben.
  • In 9A umfasst eine Prozessor-Pipeline 900 eine Abrufstufe 902, eine Längendekodierstufe 904, eine Dekodierstufe 906, eine Zuweisungsstufe 908, eine Umbenennungsstufe 910, eine Planungsstufe (auch als Versand- oder Ausgabestufe bezeichnet) 912, eine Registerlese-/Speicherlese-Stufe 914, eine Ausführungsstufe 916, eine Zurückkopier-/Speicherschreib-Stufe 918, eine Ausnahmenbehandlungsstufe 922 und eine Übergabestufe 924.
  • 9B zeigt einen Prozessorkern 990, der eine mit einer Ausführungsengineeinheit 950 gekoppelte Vorderseiteneinheit 930 umfasst, die wiederum beide mit einer Speichereinheit 970 gekoppelt sind. Der Kern 990 kann ein Reduced-Instruction-Set-Computing-Kern (RISC), ein Complex-Instruction-Set-Computing-Kern (CISC), ein Very-Long-Instruction-Word-Kern (VLIW) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 990 ein Spezialzweckkern, wie etwa beispielsweise ein Netzwerk- oder Kommunikationskern, eine Kompressionsengine, Co-Prozessorkern, ein Kern für Allzweck-Berechnung auf Grafikprozessoreinheiten (GPGPU), Grafikkern oder dergleichen sein.
  • Die Vorderseiteneinheit 930 umfasst eine Abzweigungsvorhersageeinheit 932, die mit einer Befehls-Cache-Einheit 934 gekoppelt ist, die mit einem Befehlsübersetzungspuffer (TLB) 936 gekoppelt ist, der mit einer Befehlsabrufeinheit 938 gekoppelt ist, die mit einer Dekodiereinheit 940 gekoppelt ist. Die Dekodiereinheit 940 (oder Dekodierer) kann Befehle dekodieren und eine oder mehrere Mikrovorgänge, Mikro-Code-Eintrittspunkte, Mikrobefehle andere Befehle oder andere Steuersignale als Ausgabe erzeugen, die aus den ursprünglichen Befehlen dekodiert wurden oder diese anderweitig widerspiegeln oder von diesen abgeleitet sind. Die Dekodiereinheit 940 kann unter Verwendung verschiedener Mechanismen umgesetzt sein. Beispiele für geeignete Mechanismen umfassen, ohne darauf beschränkt zu sein, Verweistabellen, Hardware-Implementierungen, programmierbare logische Anordnungen (PLA), Mikrocode-Festwertspeicher (ROM) etc. In einer Ausführungsform umfasst der Kern 990 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für gewisse Makrobefehle (z. B. in der Dekodiereinheit 940 oder anderswo innerhalb der Vorderseiteneinheit 930) speichert. Die Dekodiereinheit 940 ist mit einer Umbennenungs-/Zuweisungseinheit 952 in der Ausführungsengineeinheit 950 gekoppelt.
  • Die Ausführungsengineeinheit 950 umfasst die Umbenennungs-/Zuweisungseinheit 952, die mit einer Ruhestandseinheit 954 und einem Satz aus einer oder mehreren Planungseinheit(en) 956 gekoppelt ist. Die Planungseinheit(en) 956 stellt/stellen eine beliebige Anzahl verschiedener Planer, einschließlich Reservierungsstationen, zentrales Befehlsfenster etc., dar. Die Planungseinheit(en) 956 ist/sind mit der/den physikalischen Registerdatei(en)-Einheit(en) 958 gekoppelt. Jede der physikalischen Registerdatei(en)-Einheiten 958 stellt eine oder mehrere physikalische Registerdateien dar, von denen unterschiedliche einen oder mehrere verschiedene Datentypen speichern, wie etwa skalare Integerwerte, skalare Gleitkommawerte, gepackte Integerwerte, gepackte Gleitkommawerte, Vektor-Integer, Vektor-Gleitkomma, Status (z. B. ein Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist), etc. In einer Ausführungsform umfasst die physikalische Registerdatei(en)-Einheit 958 eine Vektorregistereinheit, eine Schreibmaskeregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architektur-Vektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die physikalischen Registerdatei(en)-Einheit(en) wird/werden von der Ruhestandseinheit 954 überlappt, um verschiedene Wege zu veranschaulichen, wie Registerumbenennung und reihenfolgelose Ausführung umgesetzt werden kann (z. B. mittels (eines) Aufzeichnungspuffer(s) und (einer) Ruhestandregisterdatei(en); mittels (einer) Zukunftsdatei(en), (eines) Geschichtepuffer(s) und (einer) Ruhestandsregisterdatei(en); mittels einer Registerkarte und einem Pool von Registern; etc.). Die Ruhestandseinheit 954 und die physikalischen Registerdatei(en)-Einheit(en) 958 ist/sind mit dem/den Ausführungs-Cluster(n) 960 gekoppelt. Das/Die Ausführungs-Cluster 060 umfasst/umfassen einen Satz aus einer oder mehreren Ausführungseinheiten 962 und einen Satz aus einer oder mehreren Speicherzugriffseinheiten 964. Die Ausführungseinheiten 962 können verschiedene Vorgänge (z. B. Verschiebungen, Additionen, Subtraktionen, Multiplikationen) und auf verschiedenen Datentypen (z. B. skalares Gleichkomma, gepackter Integer, gepacktes Gleitkomma, Vektor-Integer, Vektor-Gleitkomma) durchführen. Während manche Ausführungsformen eine Reihe von Ausführungseinheiten, die speziellen Funktionen oder Funktionssätzen gewidmet sind, umfassen können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle sämtliche Funktionen durchführen, umfassen. Die Planungseinheit(en) 956, physikalische(n) Registerdatei(en)-Einheit(en) 958 und das/die Ausführungs-Cluster werden als möglicherweise Plural gezeigt, da bestimmte Ausführungsformen separate Pipelines für bestimmte Datentypen/Vorgänge erzeugen (z. B. eine skalare Integer-Pipeline, eine skalare Gleitkomma-/gepackte Integer-/gepackte Gleitkomma-/Vektor-Integer-/Vektor-Gleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Planungseinheit, physikalische Registerdatei(en)-Einheit und/oder Ausführungs-Cluster aufweisen – und im Fall einer separaten Speicherzugriffs-Pipeline sind gewisse Ausführungsformen implementiert, in denen nur das Ausführungs-Cluster dieser Pipeline (eine) Speicherzugriffseinheit(en) 964 aufweist). Es versteht sich ebenfalls, dass bei Verwendung separater Pipelines eine oder mehrere dieser Pipelines reihenfolgelose Ausgabe-/Ausführungs-Pipelines und der Rest reihenfolgegebundene Pipelines sein können.
  • Der Satz Speicherzugriffseinheiten 964 ist mit der Speichereinheit 970 gekoppelt, die eine Daten-TLB-Einheit 972 umfasst, die mit einer Daten-Cache-Einheit 974 gekoppelt ist, die mit einer Ebene-2-(L2-)Cache-Einheit 976 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 964 eine Ladungseinheit, eine Speicheradresseinheit und eine Speicherdateneinheit umfassen, die jeweils mit der Daten-TLB-Einheit 972 in der Speicherzugriffseinheit 970 gekoppelt sind. Die Befehls-Cache-Einheit 934 ist zudem mit einer Ebene-2-(L2-)Cache-Einheit 976 in der Speichereinheit 970 gekoppelt. Die L2-Cache-Einheit 976 ist mit einer oder mehreren Ebenen von Cache und gegebenenfalls mit einem Hauptspeicher gekoppelt.
  • Beispielsweise können die beispielhafte reihenfolgelose Registerumbenennungs-Ausgabe-/-Ausführungs-Kernarchitektur die Pipeline 900 wie folgt umsetzen: 1) die Befehlsabrufeinheit 938 führt die Abrufstufe und die Längendekodierstufe 902 und 904 durch; 2) die Dekodiereinheit 940 führt die Dekodierstufe 906 durch; 3) die Umbenennungs-/Zuweisungseinheit 952 führt die Zuweisungsstufe 908 und die Umbenennungsstufe 910 durch; 4) die Planungseinheit(en) 956 führt/führen die Planungsstufe 912 durch; 5) die physikalische(n) Registerdatei(en)-Einheit(en) 958 und die Speichereinheit 970 führen die Registerlese-/Speicherlesestufe 914 durch; das Ausführungscluster 960 führt die Ausführungsstufe 916 durch; 6) die Speichereinheit 970 und die physikalische(n) Registerdatei(en)-Einheit(en) 958 führen die Zurückkopier-/Speicherschreib-Stufe 918 durch; 7) verschiedene Einheiten können an der Ausnahmenbehandlungsstufe 922 beteiligt sein; und 8) die Ruhestandseinheit 954 und die physikalische(n) Registerdatei(en)-Einheit(en) 958 führen die Übergabestufe 924 durch.
  • Der Kern 990 kann eine oder mehr Befehlssätze unterstützen (z. B. den x86 Befehlssatz (mit einigen Erweiterungen, die in neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Befehlssatz (mit gegebenenfalls zusätzlichen Erweiterungen, wie etwa NEON) von ARM Holdings aus Sunnyvale, CA); einschließlich des/der hierin beschriebenen Befehls/Befehle. In einer Ausführungsform umfasst der Kern 990 eine Logik, um eine gebündelte Datenbefehlssatzerweiterung (z. B. AVX1, AVX2) zu unterstützen, wodurch die von vielen Multimediaanwendungen benutzten Vorgänge unter Verwendung gebündelter Daten durchgeführt werden können.
  • Es versteht sich, dass der Kern Multithreading (das Ausführen zweier oder mehrerer paralleler Sätze von Vorgängen oder Threads) unterstützen kann und dies auf eine Reihe von Wegen tun kann, einschließlich Zeitscheibenmultithreading, simultanes Multithreading (wo ein einziger physikalischer Kern einen logischen Kern für jeden der Threads, den der physikalische Kern gleichzeitig bearbeitet, bereitstellt, oder eine Kombination daraus (z. B. Zeitscheibenabruf und -dekodierung und danach simultanes Multithreading, wie in der Intel® Hyperthreading-Technologie).
  • Während Registerumbenennung im Zusammenhang mit reihenfolgeloser Ausführung beschrieben wird, versteht sich, dass Registerumbenennung auch in einer reihenfolgegebundenen Architektur eingesetzt werden kann. Während die veranschaulichte Ausführungsform des Prozessors auch separate Befehls- und Daten-Cache-Einheiten 973/974 und eine gemeinsam genutzte L2-Cache-Einheit 976 umfasst, können alternative Ausführungsformen einen einzigen internen Cache für sowohl Befehle als auch Daten aufweisen, wie etwa beispielsweise ein interner Ebene-1-(L1-)Cache oder mehrere Ebenen interner Caches. In manchen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, der außerhalb des Kerns und/oder des Prozessors liegt, umfassen. Alternativ dazu kann der gesamte Cache außerhalb des Kerns und/oder des Prozessors liegen.
  • Spezielle beispielhafte reihenfolgegebundene Kernarchitektur
  • 10A–B veranschaulichen ein Blockdiagramm einer spezielleren beispielhaften reihenfolgegebundenen Kernarchitektur, deren Kern einer von mehreren Logik-Blöcken (einschließlich anderer Kerne derselben Art und/oder anderer Arten) auf einem Chip wäre. Die Logik-Blöcke kommunizieren über ein bandbreitenstarkes Verbundnetzwerk (z. B. ein Ringnetzwerk) mit einiger fixierten Funktions-Logik, Speicher-I/O-Schnittstellen und anderer notweniger I/O-Logik, abhängig von der Anwendung.
  • 10A ist ein Blockdiagramm eines einzelnen Prozessorkerns zusammen mit seiner Verbindung mit dem chipbasierten Verbundnetzwerk 1002 und seiner lokalen Teilmenge des Ebene-2-(L2-)Caches 1004 gemäß Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt ein Befehlsdekodierer 1000 den x86 Befehlssatz mit einer gebündelten Datenbefehlssatzerweiterung. Ein L1-Cache 1006 erlaubt Zugriffe auf den Cache-Speicher mit geringer Latenz in die skalaren und Vektoreinheiten. Während in einer Ausführungsform (zur Vereinfachung des Designs) eine skalare Einheit 1008 und eine Vektoreinheit 1010 separate Registersätze nutzen (die skalaren Register 1012 bzw. Vektorregister 1014) und zwischen ihnen transferierte Daten in den Speicher geschrieben und dann von einem Ebene-1-(L1-)Cache 1006 wieder ausgelesen werden, können alternative Ausführungsformen der Erfindung einen anderen Ansatz wählen (z. B. die Verwendung eines einzigen Registersatzes oder die Einbeziehung eines Kommunikationspfades, der den Transfer von Daten zwischen den beiden Registerdateien ohne Schreiben und Auslesen ermöglicht).
  • Die lokale Teilmenge des L2-Caches 1004 ist ein Teil eines globalen L2-Caches, der in separate lokale Teilmengen aufgeteilt ist, eine pro Prozessorkern. Jeder Prozessorkern weist einen direkten Zugriffpfad auf seine eigene Teilmenge des L2-Caches 1004 auf. Von einem Prozessorkern gelesene Daten werden in seiner L2-Cache-Teilmenge 1004 gespeichert und auf sie kann rasch zugegriffen werden, parallel zu anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen. Von einem Prozessorkern geschriebene Daten werden in seine eigene L2-Cache-Teilmenge 1004 geschrieben und falls erforderlich aus anderen Teilmengen gelöscht. Das Ringnetzwerk garantiert Kohärenz für gemeinsam genutzte Daten. Das Ringnetzwerk ist bidirektional, um es Akteuren, wie etwa Prozessorkernen, L2-Caches oder anderen Logik-Blöcken, zu erlauben, innerhalb des Chips miteinander zu kommunizieren. Jeder Datenpfad des Rings ist pro Richtung 1012-bits breit.
  • 10B ist eine erweiterte Ansicht eines Teils des Prozessorkerns aus 10A gemäß Ausführungsformen der Erfindung. 10B umfasst einen L1-Daten-Cache 1006A, der Teil des L1-Caches 1004 ist, sowie einen höheren Detailgrad bezüglich der Vektoreinheit 1010 und der Vektorregister 1014. Insbesondere ist die Vektoreinheit 1010 eine 16-breite Vektorverarbeitungseinheit (VPU) (siehe die 16-breite ALU 1028), die eines oder mehrere aus Integerbefehlen, Gleitkommabefehlen mit einfacher Präzision und Gleitkommabefehlen mit doppelter Präzision ausführt. Die VPU unterstützt das Reorganisieren der Registereingaben mit einer Reorganisationseinheit 1020, die numerische Umwandlung mit Zahlenumwandlungseinheiten 1022A–B und die Replikation mit einer Replikationseinheit 1024 auf der Speichereingabe. Schreibmaskenregister 1026 erlauben das Vorhersagen resultierender Vektorschreibvorgänge.
  • Prozessor mit integriertem Speichersteuerung und Grafik
  • 11 ist ein Blockdiagramm eines Prozessors 1100, der gemäß Ausführungsformen der Erfindung mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung und aufweisen kann und integrierte Grafik aufweisen kann. Die Boxen mit durchgehender Umrandung in 11 veranschaulichen einen Prozessor 1100 mit einem einzigen Kern 1102A, einen Systemagenten 1110, einen Satz aus einem oder mehreren Bussteuerungseinheiten 1116, während die optionale Hinzufügung der Boxen mit gestrichelter Umrandung einen alternativen Prozessor 1100 mit mehreren Kernen 1102A–N, einem Satz aus einem oder mehreren integrierten Speichersteuerungseinheit(en) 1114 in der Systemagenteneinheit 1110 und Spezialzweck-Logik 1108 darstellt.
  • Somit können unterschiedliche Implementationen des Prozessors 1100 umfassen: 1) eine CPU mit einer Spezialzwecklogik 1108, die mit Grafik integriert ist, und/oder wissenschaftlicher (Durchsatz-)Logik (die einen oder mehrere Kerne umfassen kann), wobei die Kerne 1102A–N ein oder mehrere Allzweckkerne sind (z. B. reihenfolgegebundene Allzweckkerne, reihenfolgelose Allzweckkerne, eine Kombination aus den beiden); 2) ein Co-Prozessor mit den Kernen 1102A–N, von denen eine große Zahl Spezialzweckkerne sind, die hauptsächlich für Grafik und/oder wissenschaftliche Zwecke (Durchsatz) gedacht sind; und 3) ein Co-Prozessor mit den Kernen 1102A–N, von denen eine große Zahl reihenfolgegebundene Allzweckkerne sind. Somit kann der Prozessor 1100 ein Allzweckprozessor, Co-Prozessor oder Spezialzweckprozessor sein, wie etwa beispielsweise ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsengine, Grafikprozessor, GPGPU (Allzweck-Berechnung auf Grafikprozessoreinheiten), ein Hochdurchsatz-Co-Prozessor mit vielen integrierten Kernen (MIC) (einschließlich 30 oder mehr Kerne), ein eingebetteter Prozessor und dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1100 kann ein Teil eines oder eines Substrats sein und/oder kann auf einem oder mehreren Substraten umgesetzt sein unter Verwendung einer Reihe von Prozesstechnologien, wie etwa BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst eine oder mehrere Cache-Ebenen innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzten Cache-Einheiten 1106 und einen externen Speicher (nicht gezeigt), der mit dem Satz integrierter Speichersteuerungseinheiten 1106 gekoppelt ist. Der Satz gemeinsam genutzter Cache-Einheiten 1106 kann einen oder mehrere Caches der mittleren Ebene, wie etwa Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Ebenen eines Caches, einen Last-Level-Cache (LLC) und/oder Kombinationen daraus umfassen. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 1112 die integrierte Grafiklogik 1108, den Satz gemeinsam genutzter Cache-Einheiten 1106 und die Systemagenteinheit 1110/integrierte Speichersteuerungseinheit(en) 1114 verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Verfahren zum Verbinden solcher Einheiten einsetzen. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 1106 und Kernen 1102A–N erhalten.
  • In manchen Ausführungsformen sind ein oder mehrere der Kerne 1102A–N Multithreading-fähig. Der Systemagent 1110 umfasst die Bestandteile, die die Kerne 1102A–N koordinieren und betreiben. Die Systemagenteinheit 1110 kann beispielsweise eine Leistungssteuereinheit (PCU) und eine Anzeigeneinheit umfassen. Die PCU kann Logik und Bestandteile, die für das Regulieren des Leistungsverhaltens der Kerne 1102A–N und der integrierten Grafiklogik 1108 benötigt werden, sein oder diese umfassen. Die Anzeigeeinheit dient zum Steuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1102A–N können in Bezug auf den Architekturbefehlssatz homogen oder heterogen sein; das heißt, zwei oder mehrere der Kerne 1102A–N können in der Lage sein, denselben Befehlssatz auszuführen, während andere in der Lage sein können, nur eine Teilmenge dieses Befehlssatzes oder einen anderen Befehlssatz auszuführen.
  • Beispielhafte Computer Architekturen
  • 1215 sind Blockdiagramme beispielhafter Computer-Architekturen. Andere auf dem Gebiet der Erfindung bekannte Systemdesigns und Konfigurationen für Laptops, Desktop-Computer, Taschencomputer, Minicomputer, Ingenieursarbeitsplätze, Server, Netzwerkvorrichtungen, Netzwerkknoten, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSP), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienabspielvorrichtungen, Taschenvorrichtungen und verschiedene andere elektronische Vorrichtungen sind ebenfalls geeignet. Generell ist eine große Vielfalt von Systemen oder elektronischen Gadgets im Allgemeinen geeignet, die in der Lage sind, einen Prozessor und/oder eine andere Ausführungslogik, wie hierin offenbart, zu integrieren.
  • Bezugnehmend nun auf 12 ist ein Blockdiagramm eines Systems 1200 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1200 kann einen oder mehrere Prozessor(en) 1210, 1215 umfassen, die mit einem Steuerknoten 1220 gekoppelt sind. In einer Ausführungsform umfasst der Steuerknoten 1220 einen Grafikspeichersteuerungsknoten (GMCH) 1290 und einen Eingabe-/Ausgabeknoten (IOH) 1250 (die sich auf separaten Chips befinden können); der GMCH 1290 umfasst Speicher- und Grafiksteuerungen, mit denen ein Speicher 1240 und ein Co-Prozessor 1245 gekoppelt sind; der IOH 1250 koppelt Eingabe-/Ausgabe-Vorrichtungen (I/O-Vorrichtungen) 1260 mit dem GMCH 1290. Alternativ dazu ist eines oder beide aus Speicher- und Grafiksteuerungen innerhalb des Prozessors integriert (wie hierin beschrieben), der Speicher 1240 und der Co-Prozessor sind direkt mit dem Prozessor 1210 gekoppelt und der Steuerungsknoten 1220 befindet sich mit dem IOH 1250 auf einem einzigen Chip.
  • Die optionale Natur zusätzlicher Prozessoren 1215 wird in 12 durch gebrochene Linien dargestellt. Jeder Prozessor 1210, 1215 kann eine oder mehr der hierin beschriebenen Verarbeitungskerne umfassen und kann eine beliebige Version des Prozessors 1100 sein.
  • Der Speicher 1240 kann beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM) sein, ein Phasenwechselspeicher (PCM) oder eine Kombination aus den beiden sein. Bei zumindest einer Ausführungsform kommuniziert der Steuerungsknoten 1120 kommuniziert mit dem/den Prozessor(en) 1210, 1215 über einen Multi-Drop-Bus, wie etwa einen Front-Side-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie etwa QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 1295.
  • In einer Ausführungsform ist der Co-Prozessor 1245 ein Spezialzweckprozessor, wie etwa beispielsweise ein Hochdurchsatz-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsengine, Grafikprozessor, GPGPU, eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann ein Steuerungsknoten 1120 einen integrierten Grafikbeschleuniger umfassen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 1210, 1210 in Bezug auf ein Spektrum von Eigenschaften, einschließlich Architektur-, Mikroarchitektur-, Thermal-, Energieverbrauchseigenschaften und dergleichen, geben.
  • In einer Ausführungsform führt der Prozessor 1210 Befehle aus, die allgemeine Datenverarbeitungsvorgänge steuern. Co-Prozessorbefehle können innerhalb dieser Befehle eingebettet sein. Der Prozessor 1210 erkennt diese Co-Prozessorbefehle als eine Art, die vom angebrachten Co-Prozessor 1245 ausgeführt werden sollten. Demgemäß gibt der Prozessor 1210 diese Co-Prozessorbefehle (oder Co-Prozessorbefehle darstellende Steuersignale) auf einen Co-Prozessor-Bus oder eine Verbindung an den Co-Prozessor 1245 aus. (Ein) Co-Prozessor(en) 1235 nimmt/nehmen die empfangenen Co-Prozessorbefehle an und führt/führen sie aus.
  • Bezugnehmend nun auf 13 ist ein Blockdiagramm eines ersten detaillierteren beispielhaften Systems 1300 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung. Wie in 13 gezeigt ist ein Multiprozessorsystem 1300 ein Punkt-zu-Punkt-Verbundsystem und umfasst einen ersten Prozessor 1370 und einen über eine Punkt-zu-Punkt-Verbindung 1350 gekoppelten zweiten Prozessor 1380. Jeder der Prozessoren 1370 und 1380 kann eine beliebige Version des Prozessors 1100 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 1370 und 1380 die Prozessoren 1210 bzw. 1215, während der Co-Prozessor 1338 der Co-Prozessor 1245 ist. In einer anderen Ausführungsform sind die Prozessoren 1370 und 1380 Prozessor 1210 bzw. Co-Prozessor 1245.
  • Die Prozessoren 1370 and 1380 sind einschließlich der integrierten Speichersteuerungseinheiten (IMC-Einheiten) 1372 bzw. 1382. Prozessor 1370 umfasst als Teil seiner Bussteuerungseinheiten die Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1376 und 1378; ebenso umfasst der zweite Prozessor 1380 die P-P-Schnittstellen 1386 und 1388. Die Prozessoren 1370, 1380 können über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 1350 Informationen mittels P-P-Schnittstellenschaltkreise 1378m 1388 austauschen. Wie in 13 gezeigt, koppeln die IMC 1372 und 1382 die Prozessoren mit entsprechenden Speichern, nämlich einem Speicher 1332 und einem Speicher 1334, die Teile von lokal an entsprechenden Prozessoren angebrachtem Hauptspeicher sein können.
  • Die Prozessoren 1370, 1380 können jeweils über individuelle P-P-Schnittstellen 1352, 1354 Informationen mittels Punkt-zu-Punkt-Schnittstellenschaltkreisen 1376, 1394, 1386, 1398 mit einem Chipsatz 1390 Informationen austauschen. Der Chipsatz 1390 kann gegebenenfalls über eine Hochleistungsschnittstelle 1339 Informationen mit dem Co-Prozessor 1338 austauschen. In einer Ausführungsform ist der Co-Prozessor 1338 ein Spezialzweckprozessor, wie etwa beispielsweise ein Hochdurchsatz-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, Kompressionsengine, Grafikprozessor, GPGPU, eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in einem von beiden Prozessoren umfasst sein oder sich außerhalb beider Prozessoren befinden, jedoch über eine P-P-Schnittstelle mit den Prozessoren verbunden, so dass die lokale Cache-Information von einem der beiden oder beiden Prozessoren im gemeinsam genutzten Cache gespeichert werden kann, wenn ein Prozessor in einen Stromsparmodus versetzt wird.
  • Der Chipsatz 1390 kann über eine Schnittstelle 1396 mit einem ersten Bus 1316 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1316 ein Peripheral-Component-Interconnect-Bus (PCI-Bus) sein oder ein Bus, wie etwa ein PCI-Express-Bus oder ein anderer I/O-Verbindungsbus der dritten Generation, obwohl der Schutzumfang der vorliegenden Erfindung dahingehend nicht eingeschränkt ist.
  • Wie in 13 gezeigt können verschiedene I/O-Vorrichtungen 1314 mit dem ersten Bus 1316 gekoppelt sein, zusammen mit einer Busbrücke 1318, die den ersten Bus 1316 mit einem zweiten Bus 1320 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessor(en) 1315, wie etwa Co-Prozessoren, Hochdurchsatz-MIC-Prozessoren, GPGPU, Beschleuniger (wie etwa, z. B. Grafikbeschleuniger oder digitale Signalverarbeitungseinheiten (DSP-Einheiten), im Feld programmierbare Gatteranordnungen oder jeder andere Prozessor mit dem ersten Bus 1316 gekoppelt. In einer Ausführungsform kann der zweite Bus 1320 ein Low-Pin-Count-Bus (LPC-Bus) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1320 gekoppelt werden, einschließlich beispielsweise eine Tastatur und/oder eine Maus 1322, Kommunikationsvorrichtungen 1327 und eine Speichereinheit 1328, wie etwa ein Disk-Laufwerk oder eine andere Massenspeichervorrichtung, die in einer Ausführungsform Befehle/Code und Daten 1330 umfassen kann. Zudem kann ein Audio-I/O 1324 mit dem zweiten Bus gekoppelt sein. Es wird angemerkt, dass auch andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 13 einen Multi-Drop-Bus oder eine andere derartige Architektur umsetzen.
  • Bezugnehmend nun auf 14 ist ein Blockdiagramm eines zweiten detaillierteren beispielhaften Systems 1400 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 13 und 14 tragen gleiche Bezugszeichen und bestimmte Aspekte aus 13 wurden in 14 ausgelassen, um zu vermeiden, andere Aspekte von 14 zu verdecken.
  • 14 veranschaulicht, dass die Prozessoren 1370, 1380 eine integrierte Speicher- und I/O-Steuerlogik („CL”) 1372 bzw. 1382 umfassen können. Somit umfassen die CL 1372, 1382 integrierte Speichersteuerungseinheiten und umfassen I/O-Steuerlogik. 14 veranschaulicht, dass nicht nur die Speicher 1332, 1334 mit den CL 1372, 1382 gekoppelt sind, sondern auch die I/O-Vorrichtungen 1414 mit der Steuerlogik 1372, 1382 gekoppelt sind. Alte I/O-Vorrichtungen 1415 sind mit dem Chipsatz 1390 gekoppelt.
  • Bezugnehmend nun auf 15 ist ein Blockdiagramm eines SoC 1500 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung. Ähnliche Elemente in 11 sind mit denselben Bezugszeichen gekennzeichnet. Darüber hinaus befinden sich optionale Merkmale weiterentwickelter SoC in Boxen mit gestrichelter Umrandung. In 15 ist (eine) Verbundeinheit(en) 1502 gekoppelt mit: einem Anwendungsprozessor 1510, der einen Satz aus einem oder mehreren Kernen 202A–N und (einer) gemeinsam genutzten Speichereinheit(en) 1106 umfasst; eine Systemagenteinheit 1110; (eine) Bussteuerungseinheit(en) 1116; (eine) integrierte Speichersteuerungseinheit(en) 1114; ein Satz aus einem oder mehreren Co-Prozessoren 1520, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; eine statische Direktzugriffsspeichereinheit (SRAM) 1530; eine Direktspeicherzugriffseinheit (DMA) 1532; und eine Anzeigeeinheit 1540 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst/umfassen der/die Co-Prozessor(en) 1520 einen Spezialzweckprozessor, wie etwa beispielsweise einen Netzwerk- oder Kommunikationsprozessor, eine Kompressionsengine, GPGPU, einen Hochdurchsatz-MIC-Prozessor, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze umgesetzt sein. Ausführungsformen der Erfindung können als Computerprogramme oder als Programmcode umgesetzt sein, der auf programmierbaren Systemen ausgeführt wird, die zumindest einen Prozessor, ein Speichersystem (einschließlich flüchtigem und nichtflüchtigem Speicher und/oder Speicherelementen), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung umfassen.
  • Programmcode, wie der in 13 veranschaulichte Code 1330, kann auf Eingabebefehle angewandt werden, um die hierin beschriebenen Funktionen durchzuführen und Ausgabeinformation zu erzeugen. Die Ausgabeinformation kann auf eine oder mehrere Ausgabevorrichtungen in bekannter Manier angewandt werden. Für die Zwecke dieser Anmeldung umfasst ein Verarbeitungssystem ein beliebiges System, das einen Prozessor, wie etwa beispielsweise einen digitalen Signalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor, aufweist.
  • Der Programmcode kann in einer hochrangigen prozeduralen oder objektorientierten Programmiersprache umgesetzt sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch wenn gewünscht in Assembler- oder Maschinensprache implementiert sein. Tatsächlich sind die hierin beschriebenen Mechanismen in ihrem Schutzumfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von zumindest einer Ausführungsform können von repräsentativen Befehlen umgesetzt werden, die auf einem maschinenlesbaren Medium gespeichert sind, welches verschiedene Logik innerhalb des Prozessors darstellt, die, wenn sie von der Maschine gelesen wird, die Maschine dazu veranlasst, eine Logik zu fabrizieren, um die hierin beschriebenen Verfahren durchzuführen. Solche Darstellungen, auch als „IP-Kerne” bekannt, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich fertigen.
  • Solche maschinenlesbaren Speichermedien können, ohne darauf beschränkt zu sein, umfassen, nichttransistorische, greifbare Anordnungen von Artikeln, die von einer Maschine oder Vorrichtung hergestellt oder gebildet wurden, einschließlich Speichermedien wie etwa Festplatten, jede andere Art von Disk, einschließlich Floppy-Disks, optische Disks, Compact-Disc-Read-Only-Memories (CD-Rom), Compact-Disk-Rewritable's (CD-RW) und magnetisch-optische Disks, Halbleitervorrichtungen, wie etwa Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), dynamische Direktzugriffsspeicher (DRAM), statische Direktzugriffsspeicher (SRAM), löschbare programmierbare Nur-Lese-Speicher (EPROM), Flash-Speicher, elektrisch lösbare programmierbare Nur-Lese-Speicher (EEPROM), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder jede andere Art von Medium, die sich zum Speichern elektronischer Befehle eignet.
  • Demgemäß können Ausführungsformen der Erfindung auch nichttransistorische, maschinenlesbare Medien umfassen, die Befehle enthalten oder Aufbaudaten, wie etwa Hardwarebeschreibungssprache (HDL), enthalten, die hierin beschriebene Strukturen, Schaltkreise, Vorrichtungen, Prozessoren und/oder Systemeigenschaften definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulation (einschließlich Binartranslation, Code-Morphen etc.)
  • In manchen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl aus einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlsumwandler übersetzen (z. B. mittels statischer Binärübersetzung, dynamischer Binärübersetzung, einschließlich dynamischer Kompilierung), morphen, emulieren oder einen Befehl anderweitig in einen oder mehrere andere vom Kern zu verarbeitende Befehle umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination daraus umgesetzt sein. Der Befehlsumwandler kann sich auf dem Prozessor, nicht auf dem Prozessor oder teilweise auf und teilweise nicht auf dem Prozessor befinden.
  • 16 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln von Binärbefehlen in einem Quellbefehlssatz in Binärbefehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung darstellt. In der veranschaulichten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl der Befehlsumwandler alternativ dazu in Software, Firmware, Hardware oder Kombinationen daraus umgesetzt sein kann. 16 zeigt, dass ein Programm in einer höheren Programmiersprache 1602 mit Hilfe eines x86 Compilers 1604 kompiliert werden kann, um x86 Binärcode 1606 zu erzeugen, der von einem Prozessor mit zumindest einem x86 Befehlssatzkern 1616 nativ ausgeführt werden kann. Der Prozessor mit zumindest einem x86 Befehlssatzkern 1616 stellt einen beliebigen Prozessor dar, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit zumindest einem x86 Befehlssatzkern ausführen, indem er (1) einen wesentlichen Anteil des Befehlssatzes des Intel x86 Befehlssatzkerns oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die für die Ausführung auf einem Intel-Prozessor mit zumindest einem x86 Befehlssatzkern ausgerichtet ist, kompatibel ausführt oder anderweitig verarbeitet, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit zumindest einem x86 Befehlssatzkern zu erreichen. Der x86 Compiler 1604 stellt einen Compiler dar, der zum Erzeugen von x86 Binärcode 1606 (z. B. Objektcode) betätigbar ist, der mit oder ohne zusätzlicher Verlinkungsbearbeitung auf dem Prozessor mit zumindest einem x86 Befehlssatzkern 1616 ausgeführt werden kann. 16 zeigt ebenso, dass das Programm in der höheren Programmiersprache unter Verwendung eines alternativen Befehlssatz-Compilers 1608 kompiliert werden kann, um einen alternativen Befehlssatzbinärcode 1610 zu erzeugen, der von einem Prozessor ohne zumindest einen x86 Befehlssatzkern 1614 (z. B. ein Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA, ausführen und/oder die den ARM-Befehlssatz von ARMS Holdings aus Sunnyvale, CA, ausführen) nativ ausgeführt werden kann. Der Befehlsumwandler 1612 wird verwendet, um den x86 Binärcode 1606 in Code umzuwandeln, der von dem Prozessor ohne einen x86 Befehlssatzkern 1614 nativ ausgeführt werden kann. Dieser umgewandelte Code ist vermutlich nicht derselbe wie der alternative Befehlssatzbinärcode 1610, weil ein Befehlsumwandler, der dazu in der Lage ist, schwierig herzustellen ist; jedoch wird der umgewandelte Code den allgemeinen Vorgang bewerkstelligen und wird aus Befehlen vom alternativen Befehlssatz bestehen. Somit stellt der Befehlsumwandler 1612 Software, Firmware, Hardware oder eine Kombination daraus dar, die durch es einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86 Befehlssatzprozessor oder -kern aufweist, durch Emulation, Simulation oder jeden anderen Prozess den x86 Binärcode 1606 auszuführen.
  • Hierin für eine beliebige Vorrichtung beschriebene Bestandteile, Merkmale und Details können auch gegebenenfalls in jedem der hierin beschriebenen Verfahren verwendet werden und/oder für jedes dieser Verfahren gelten, die von und/oder mit einer solchen Vorrichtung durchgeführt werden. Jeder der hierin beschriebenen Prozessoren kann in einem der hierin offenbarten Computer-Systeme oder anderen Systemen umfasst sein. In manchen Ausführungsformen können die Befehle Merkmale oder Details der hierin offenbarten Befehlsformate aufweisen, obwohl dies nicht erforderlich ist.
  • In der Beschreibung und den Patentansprüchen können die Begriffe „gekoppelt” und/oder „verbunden” zusammen mit ihren Derivaten verwendet worden sein. Diese Begriffe sollen nicht als Synonyme füreinander verstanden werden. Vielmehr kann „verbunden” in Ausführungsformen verwendet werden, um anzudeuten, dass sich zwei oder mehr Elemente in direktem physischem und/oder elektrischem Kontakt miteinander befinden. „Gekoppelt” kann bedeuten, dass sich zwei oder mehr Elemente in direktem physischem und/oder elektrischem Kontakt miteinander befinden. Jedoch kann „gekoppelt” auch bedeuten, dass sich zwei oder mehr Elemente nicht in direktem Kontakt miteinander befinden, aber dennoch weiterhin zusammenwirken oder miteinander wechselwirken. Beispielsweise kann eine Rücksprungzielbeschränkungseinheit mit einer Dekodiereinheit durch eine oder mehr dazwischenliegende Bestandteile gekoppelt sein. In den Figuren werden Pfeile verwendet, um Verbindungen und Kopplungen zu zeigen.
  • Der Begriff „und/oder” kann verwendet worden sein. Wie hierin verwendet bedeutet der Begriff „und/oder” das eine oder das andere oder beides (z. B. A und/oder B bedeutet A oder B oder sowohl A als auch B).
  • In der obigen Beschreibung wurden spezielle Details dargelegt, um ein genaues Verständnis der Ausführungsformen bereitzustellen. Jedoch können andere Ausführungsformen ohne manche dieser speziellen Details in die Praxis umgesetzt werden. Der Schutzumfang der Erfindung soll nicht von den oben bereitgestellten speziellen Beispielen, sondern lediglich durch die untenstehenden Patentansprüche bestimmt werden. In anderen Fällen wurden wohlbekannte Schaltkreise, Strukturen, Vorrichtungen und Vorgänge in Blockdiagrammform mit und/oder ohne Details gezeigt, um zu verhindern, dass das Verständnis der Beschreibung erschwert wird. Wo es als angemessen erachtet wurde, wurden Bezugszeichen oder Endstücke von Bezugszeichen in den Figuren wiederholt, um auf entsprechende oder analoge Elemente hinzuweisen, die gegebenenfalls ähnliche oder dieselben Eigenschaften aufweisen können, sofern nicht anders angegeben oder klar ersichtlich.
  • Verschiedene Vorgänge und Verfahren wurden beschrieben. Manche der Verfahren wurden in einer relativ einfachen Form in den Flussdiagrammen beschrieben, aber Vorgänge können gegebenenfalls zu den Verfahren hinzugefügt und/oder aus ihnen entfernt werden. Zusätzlich dazu ist, obwohl die Flussdiagramme eine bestimmte Reihenfolge der Vorgänge gemäß Ausführungsformen zeigen, diese Reihenfolge beispielhaft. Alternative Ausführungsformen können die Vorgänge in einer anderen Reihenfolge durchführen, gewisse Vorgänge kombinieren, gewisse Vorgänge überlappen etc.
  • Bestimmte Ausführungsformen können von Hardware-Komponenten durchgeführt werden, oder können in maschinenausführbaren oder schaltkreisausführbaren Befehlen verkörpert sein, die verwendet werden können, um eine Maschine, einen Schaltkreis oder eine Hardware-Komponente (z. B. einen Prozessor, einen Teil eines Prozessors, Schaltkreis etc.), der/die mit den Befehlen programmiert ist, dazu veranlassen die Vorgänge durchzuführen und/oder dazu führen, dass er/sie dies tut. Die Vorgänge können auch gegebenenfalls von einer Kombination aus Hardware und Software durchgeführt werden. Ein Prozessor, Maschine, Schaltkreis oder Hardware kann spezielle oder bestimmte Schaltschemata oder eine andere Logik (z. B. Hardware, die potentiell mit Firmware und/oder Software kombiniert ist) umfassen, die zum Ausführen und/oder Verarbeiten des Befehls und Speichern eines Ergebnisses als Antwort auf den Befehl einsetzbar ist.
  • Manche Ausführungsformen umfassen einen Herstellungsgegenstand (z. B. ein Computerprogrammprodukt), das ein maschinenlesbares Medium umfasst. Das Medium kann einen Mechanismus umfassen, der Informationen in einer für die Maschine lesbaren Formbereitstellt, beispielsweise speichert. Das maschinenlesbare Medium kann einen Befehl oder eine Befehlssequenz bereitstellen oder darauf gespeichert haben, der/die falls und/oder wenn er/sie von einer Maschine ausgeführt wird, dazu verwendet werden kann, die Maschine zu veranlassen, einen oder mehrere hierin offenbarte Vorgänge, Verfahren oder Techniken durchzuführen, und/oder dazu fuhren kann, dass die Maschine dies tut. Das maschinenlesbare Medium kann eine oder mehr der Ausführungsformen der hierin offenbarten Befehle speichern oder anderweitig bereitstellen.
  • In manchen Ausführungsformen kann das maschinenlesbare Medium ein greifbares und/oder nichttransistorisches, maschinenlesbares Speichermedium. Beispielsweise kann das greifbare und/oder nichttransistorische, maschinenlesbare Speichermedium eine Floppy-Diskette, ein optisches Speichermedium, eine optische Disk, eine optische Datenspeichervorrichtung, eine CD-ROM, eine magnetische Disk, eine magnetisch-optische Disk, einen Festwertspeicher (ROM), einen programmierbaren ROM (PROM), einen löschbaren programmierbaren ROM (EPROM), einen elektrisch löschbaren programmierbaren ROM (EEPROM), einen Direktzugriffspeicher (RAM), einen statischen RAM (SRAM), einen dynamischen RAM (DRAM), einen Flash-Speicher, einen Phasenwechselspeicher, ein Phasenwechseldatenspeichermaterial, einen nichtflüchtigen Speicher, eine nichtflüchtige Datenspeichervorrichtung, einen nichttransistorischen Speicher, eine nichttransistorische Datenspeichervorrichtung oder dergleichen. Das nichttransistorische, maschinenlesbare Speichermedium besteht nicht aus einem transistorischen verbreiteten Signal.
  • Beispiele für geeignete Maschinen umfassen, ohne darauf beschränkt zu sein, einen Allzweckprozessor, einen Spezialzweckprozessor, eine Befehlsverarbeitungsvorrichtung, einen digitalen Logik-Schaltkreis, einen integrierten Schaltkreis oder dergleichen. Noch weitere Beispiele geeigneter Maschinen umfassen eine Rechenvorrichtung oder eine andere elektronische Vorrichtung, die einen Prozessor, eine Befehlsverarbeitungsvorrichtung, einen digitalen Logik-Schaltkreis oder integrierten Schaltkreis umfasst. Beispiele für solche Rechenvorrichtungen und elektronische Vorrichtungen umfassen, ohne darauf beschränkt zu sein, Desktop-Computer, Laptop-Computer, Notebook-Computer, Tablet-Computer, Netbooks, Smartphones, Mobiltelefone, Server, Netzwerkvorrichtungen (z. B. Router und Schalter), mobile Internetvorrichtungen (MID), Medienabspielvorrichtungen, Smart-TV, Nettops, Set-Top-Boxen und Videospielcontroller.
  • Der Bezug in dieser Beschreibung auf „eine Ausführungsform”, „eine Ausführungsform”, „eine oder mehrere Ausführungsformen”, „manche Ausführungsformen” gibt beispielsweise an, dass ein bestimmtes Merkmal in der Praxis der Erfindung umfasst sein kann, aber nicht notwendigerweise erforderlich ist. Ebenso sind verschiedene Merkmale in der Beschreibung manchmal in einer Ausführungsform, Figur oder Beschreibung davon zusammengefasst, um die Offenbarung zu vereinfachen und das Verständnis verschiedener erfindungsmäßiger Aspekte zu unterstützen. Das Verfahren der Offenbarung soll jedoch nicht als eine Intention widerspiegelnd verstanden werden, dass die Erfindung mehr Merkmale erfordert, als ausdrücklich in jedem Patentanspruch rezitiert sind. Vielmehr liegen, wie die nachfolgenden Patentansprüche widerspiegeln, erfindungsgemäße Aspekte in weniger als allen Merkmalen einer einzigen offenbarten Ausführungsform. Somit sind die auf die detaillierte Beschreibung folgenden Patentansprüche hiermit ausdrücklich in diese detaillierte Beschreibung integriert, wobei jeder Patentanspruch für sich alleine als separate Ausführungsform der Erfindung steht.
  • BEISPIELHAFTE AUSFÜHRUNGSFORMEN
  • Die nachfolgenden Beispiele beziehen sich auf weitere Ausführungsformen. Besonderheiten in den Beispielen können in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 1 ist ein Prozessor, der eine Dekodiereinheit umfasst, um einen rücksprungzielbeschränkten Prozedurrücksprungbefehl (RTR-Rücksprungbefehl) zu dekodieren. Der Prozessor umfasst auch eine Rücksprungzielbeschränkungseinheit, die mit der Dekodiereinheit gekoppelt ist und auf den RTR-Rücksprungbefehl anspricht, um zu bestimmen, ob ein Versuch des RTR-Rücksprungbefehls, einen Steuerflusstransfer zu einem Befehl an einer dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse beschränkt werden soll. Die Bestimmung basiert auf der Kompatibilität einer Art des Befehls an der Rücksprungadresse mit dem RTR-Rücksprungbefehl und basiert auf der Kompatibilität einer ersten rücksprungzielbeschränkten Information (RTR-Information) mit einer zweiten RTR-Information des Befehls an der Rücksprungadresse. Der Prozessor umfasst auch eine mit der Rücksprungbeschränkungseinheit und der Dekodiereinheit gekoppelten Steuerflusstransfereinheit, wobei die Steuerflusstransfereinheit auf den RTR-Rücksprungbefehl anspricht, um den Steuerfluss zu dem Befehl an der Rücksprungadresse zu transferieren, wenn die Rücksprungzielbeschränkungseinheit bestimmt, den Versuch nicht zu beschränken.
  • Beispiel 2 umfasst den Prozessor nach Beispiel 1, in dem die Rücksprungzielbeschränkungseinheit bestimmen soll, den Versuch nicht zu beschränken, wenn ein der ersten RTR-Information entsprechender erster Wert zu einem der zweiten RTR-Information entsprechenden zweiten Wert passt, und bestimmen soll, den Versuch zu beschränken, wenn der erste Wert nicht zum zweiten Wert passt.
  • Beispiel 3 umfasst den Prozessor nach Beispiel 2, wobei die Rücksprungbeschränkungseinheit bestimmen soll, den Versuch nicht zu beschränken, wenn der erste Wert gleich ist dem zweiten Wert, und bestimmen soll, den Versuch zu beschränken, wenn der erste Wert nicht gleich dem zweiten Wert ist.
  • Beispiel 4 umfasst den Prozessor nach Beispiel 1, wobei die Rücksprungbeschränkungseinheit bestimmen soll, den Versuch zu beschränken, wenn ein Opcode des Befehls an der Rücksprungadresse nicht einer aus einem Satz von nicht mehr als fünf Opcodes ist, die allen Befehlen entsprechen, die von einer mit dem RTR-Rücksprungbefehl kompatiblen Art sind. Die zu Befehle sollen dazu verwendet werden, potentiell zulässige Rücksprungziele für den RTR-Rücksprungbefehl zu markieren.
  • Beispiel 5 umfasst den Prozessor nach Beispiel 1, wobei der RTR-Rücksprungbefehl einen Direktoperanden aufweist, um die erste RTR-Information bereitzustellen, und wobei der Befehl an der Rücksprungadresse einen Direktoperanden aufweist, um die zweite RTR-Information bereitzustellen.
  • Beispiel 6 umfasst den Prozessor nach einem der Beispiele 1 bis 5, wobei der Prozessor, wenn die Rücksprungzielbeschränkungseinheit bestimmt, den Versuch nicht zu beschränken, den Befehl an der Rücksprungadresse als eine Nulloperation durchführen soll.
  • Beispiel 7 umfasst den Prozessor nach einem der Beispiele 1 bis 5, wobei die Rücksprungbeschränkungseinheit, wenn die Rücksprungbeschränkungseinheit bestimmt, den Versuch zu beschränken, eines aus einer Ausnahme, einem Fehler und einer Unterbrechung verursachen soll.
  • Beispiel 8 umfasst den Prozessor nach Beispiel 1, wobei die Dekodiereinheit den RTR-Rücksprungbefehl dekodieren soll, der einen Direktoperanden und einen Opcode aufweisen soll, der derselbe wie ein alter Prozedurrücksprungbefehl ist, der in einem Befehlssatz vor dem RTR-Rücksprungbefehl existierte. Der alte Prozedurrücksprungbefehl wurde ursprünglich verwendet, um zu veranlassen, dass eine Reihe von Bytes, die vom Direktoperanden angegeben wurden, vom Stapel ausgelesen wird. Der Prozessor soll den Direktoperanden für die erste RTR-Information verwenden.
  • Beispiel 9 umfasst den Prozessor nach Beispiel 1, wobei die Dekodiereinheit den RTR-Rücksprungbefehl dekodieren soll, der einen Direktoperanden und einen Opcode aufweisen soll, der derselbe wie ein alter Prozedurrücksprungbefehl ist, der in einem Befehlssatz vor dem RTR-Rücksprungbefehl existierte. Der Prozessor hat gegebenenfalls einen ersten Modus, in dem der Direktoperand der ersten RTR-Information entsprechen soll, und einen zweiten Modus, in dem der Direktoperand ignoriert werden soll.
  • Beispiel 10 ist ein Verfahren in einem Prozessor, das das Empfangen eines rücksprungzielbeschränkten Prozedurrücksprungbefehl (RTR-Rücksprungbefehl) umfasst. Das Beschränken, in Reaktion auf den RTR-Rücksprungbefehl, eines Versuchs vom RTR-Rücksprungbefehl, einen Steuerflusstransfer zu einem Befehl an einer dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse zu machen. Das Beschränken basiert auf zumindest einem aus dem Bestimmen, dass eine Befehlsart an der Rücksprungadresse mit dem RTR-Rücksprungbefehl nicht kompatibel ist, und dem Bestimmen, dass die erste rücksprungzielbeschränkte Information (RTR-Information), die vom RTR-Rücksprungbefehl angegeben wird, mit der zweiten RTR-Information, die vom Befehl an der Rücksprungadresse angegeben wird, nicht kompatibel ist.
  • Beispiel 11 umfasst das Verfahren nach Beispiel 10, wobei das Beschränken auf einer Bestimmung basiert, dass die RTR-Information des RTR-Rücksprungbefehls nicht gleich der RTR-Information des Befehls an der Rücksprungadresse ist.
  • Beispiel 12 umfasst das Verfahren nach Beispiel 10, wobei das Beschränken auf einer Bestimmung basiert, dass ein Opcode des Befehls an der Rücksprungadresse nicht einer aus einem Satz von nicht mehr als fünf Opcodes ist, die allen Befehlen entsprechen, die von einer mit dem RTR-Rücksprung kompatiblen Art sind.
  • Beispiel 13 umfasst das Verfahren nach Beispiel 10, wobei das Empfangen das Empfangen des RTR-Rücksprungbefehls mit einem Direktoperanden zum Bereitstellen der ersten RTR-Information umfasst.
  • Beispiel 14 ist ein Code-Analysesystem, das ein Code-Aufnahmemodul zum Empfangen von Code einer ersten Art umfasst. Ein Code-Analysemodul ist mit dem Code-Aufnahmemodul gekoppelt, um zu bestimmen, ob alle rücksprungzielbeschränkten Prozedurrücksprungbefehle (RTR-Rücksprungbefehle) im Code der ersten Art nur rücksprungzielbeschränkte Information (RTR-Information) angibt, die für die erste Art, aber nicht eine oder mehrere anderen Arten von Code erlaubt sind.
  • Beispiel 15 umfasst das Code-Analysesystem nach Beispiel 14, wobei die erste Art nichtzugriffsbeschränkten Code umfasst und eine oder mehrere andere Arten von zugriffsbeschränkten Code umfassen.
  • Beispiel 16 umfasst das Code-Analysesystem nach Beispiel 14, wobei die erste Art eine Benutzerebenenanwendung umfasst und die eine oder mehreren verschiedenen Arten von Code eine Vielfalt von Benutzerebenenbibliothekscode, Gerätetreibercode, Systemebenenbibliothekscode und Betriebssystemcode umfasst.
  • Beispiel 17 umfasst das Code-Analysesystem nach Beispiel 14, wobei das Code-Analysemodul bestimmen soll, ob alle RTR-Rücksprungbefehle im Code der ersten Art nur Werte von RTR-Information angeben, die in einem ersten Bereich liegen, und wobei der erste Bereich sich mit einem oder mehreren anderen Bereichen, die der einen oder mehreren anderen Codearten entsprechen, gegenseitig ausschließt.
  • Beispiel 18 umfasst das Code-Analysesystem nach einem der Beispiele 14 bis 17, wobei das Code-Analysemodul ein Modul einer digitalen Verbreitungsplattform und ein Betriebssystemmodul umfasst.
  • Beispiel 19 umfasst das Code-Analysesystem nach einem der Beispiele 14 bis 17, wobei das Code-Analysemodul ein Betriebssystemmodul umfasst.
  • Beispiel 20 ist ein Code-Analysesystem, das ein Code-Aufnahmemodul zum Empfangen von Code umfasst. Das System umfasst auch ein mit dem Code-Aufnahmemodul gekoppeltes Code-Analysemodul, um die rücksprungzielbeschränkte Information (RTR-Information) für zumindest ein Paar aus komplementären rücksprungzielbeschränkten Prozedurrücksprungbefehlen (RTR-Rücksprungbefehlen) und Rücksprungzielbefehlen zu ändern. Dies geschieht während die RTR-Information des Paares komplementärer RTR-Rücksprung- und Rücksprungzielbefehle komplementär gelassen wird.
  • Beispiel 21 umfasst das Code-Analysesystem nach Beispiel 20, wobei das Code-Aufnahmesystem zudem Metadaten empfangen soll, die eine Vielzahl von Paaren komplementärer RTR-Rücksprung- und Rücksprungzielbefehle im Code angeben. Das Code-Analysemodul soll die RTR-Information für jedes Paar komplementärer RTR-Rücksprung- und Rücksprungzielbefehle ändern, während die RTR-Information des Paares komplementärer RTR-Rücksprung- und Rücksprungzielbefehle komplementär gelassen wird.
  • Beispiel 22 umfasst das Code-Analysesystem nach einem der Beispiele 20 bis 21, wobei das Code-Analysemodul ein Betriebssystemmodul umfasst.
  • Beispiel 23 umfasst das Code-Analysesystem nach einem der Beispiele 20 bis 21, wobei das Code-Analysemodul ein Modul einer digitalen Verbreitungsplattform umfasst.
  • Beispiel 24 ist ein System zum Verarbeiten von Befehlen, das eine Verbindung und einen mit der Verbindung gekoppelten Prozessor umfasst. Der Prozessor soll einen rücksprungzielbeschränkten Prozedurrücksprungbefehl (RTR-Rücksprungbefehl) empfangen. Der Prozessor soll als Antwort auf den RTR-Rücksprungbefehl, bestimmen, einen Versuch vom RTR-Rücksprungbefehl einen Steuerflusstransfer zu einem Befehl an einer dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse zu beschränken, basierend auf einem aus einem Mangel an Kompatibilität einer Art des Befehls an der Rücksprungadresse mit dem RTR-Rücksprungbefehl und einem Mangel an Kompatibilität von erster rücksprungzielbeschränkter Information (RTR-Information) des RTR-Rücksprungbefehls mit dem Befehl an der Rücksprungadresse. Das System umfasst auch einen mit der Verbindung gekoppelten dynamischen Direktzugriffsspeicher (DRAM).
  • Beispiel 25 umfasst das System nach Beispiel 24, wobei der Prozessor bestimmen soll, den Versuch zu beschränken, basierend darauf, dass ein Wert eines Direktoperanden des RTR-Rücksprungbefehls nicht gleich dem Wert eines Direktoperanden des Befehls an der Rücksprungadresse ist. Der Prozessor kann als Reaktion auf das Bestimmen, den Versuch zu beschränken, einen aus einem Fehler und einer Ausnahme verursachen.
  • Beispiel 26 ist ein Fertigartikel, der ein nichttransistorisches, maschinenlesbares Speichermedium umfasst. Das nichttransistorische, maschinenlesbare Speichermedium speichert Befehle. Die Befehle sollen, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen, Vorgänge durchzuführen, einschließlich dem Untersuchen von rücksprungzielbeschränkter Information (RTR-Information) aller rücksprungzielbeschränkten Prozedurrücksprungbefehle (RTR-Rücksprungbefehle) im Code einer ersten Art. Auch das Bestimmen, ob die RTR-Rücksprungbefehle im Code der ersten Art nur RTR-Information angibt, die für die erste Art von Code erlaubt ist, aber nicht für eine oder mehrere andere Arten von Code erlaubt ist.
  • Beispiel 27 umfasst den Fertigartikel nach Beispiel 26, wobei die Befehle die Maschine zu bestimmen veranlassen sollen, ob die RTR-Befehle im Code der ersten Art nur Werte in einem ersten Bereich angeben, die für die erste Art von Code erlaubt sind, aber nicht für eine oder mehrere andere Arten von Code erlaubt ist.
  • Beispiel 28 ist ein Prozessor oder eine andere Vorrichtung, die zum Durchführen des Verfahrens nach einem der Beispiele 10–13 eingesetzt werden kann.
  • Beispiel 29 ist ein Prozessor oder eine andere Vorrichtung, die Mittel zum Durchführen des Verfahrens nach einem der Beispiele 10–13 umfasst.
  • Beispiel 30 ist ein Prozessor oder eine andere Vorrichtung einschließlich Module, Einheiten, Logik, Schaltkreise, Mittel oder jede Kombination daraus, um das Verfahren nach einem der Beispiele 10–13 durchzuführen.
  • Beispiel 31 ist ein Fertigartikel, der ein maschinenlesbares Medium umfasst, das gegebenenfalls ein nichttransistorisches, maschinenlesbares Medium ist, das gegebenenfalls einen Befehl speichert oder anderweitig bereitstellt, der falls und/oder wenn von einem Prozessor, einem Computersystem oder einer anderen Maschine ausgeführt wird, eingesetzt werden kann, um die Maschine zu veranlassen, das Verfahren nach einem der Beispiele 10–13 durchzuführen.
  • Beispiel 32 ist ein Computersystem oder eine andere elektronische Vorrichtung, einschließlich einer Verbindung; einem mit der Verbindung gekoppelten Prozessor; und zumindest einem mit der Verbindung gekoppelten Bestandteil, der ausgewählt ist aus einem dynamischen Direktzugriffsspeicher (DRAM), einem Grafikchip, einem Drahtloskommunikationschip, einem Phasenwechselspeicher und einer Videokamera, wobei das System oder die andere elektronische Vorrichtung eingesetzt werden kann, um das Verfahren nach einem der Beispiele 10–13 durchzuführen.
  • Beispiel 33 ist ein Prozessor oder eine andere Vorrichtung, der/die eingesetzt werden kann, um einen oder mehrere Vorgänge oder ein beliebiges im Wesentlichen wie hierin beschriebenes Verfahren durchzuführen.
  • Beispiel 34 ist ein Prozessor oder eine andere Vorrichtung, der/die der Mittel zum Durchführen eines oder mehrerer Vorgänge oder eines beliebigen im Wesentlichen wie hierin beschriebenen Verfahrens umfasst.
  • Beispiel 35 ist ein Prozessor oder eine andere Vorrichtung zum Durchführen eines beliebigen der im Wesentlichen wie hierin beschriebenen Befehle.
  • Beispiel 36 ist ein Prozessor oder eine andere Vorrichtung, der/die Mittel zum Durchführen eines beliebigen der im Wesentlichen hierin beschriebenen Befehle umfasst.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • 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.
  • Zitierte Nicht-Patentliteratur
    • Intel® 64 and IA-32 Architectures Software Developer's Manual, Band 2, Befehlssatzreferenz, A–Z, Bestellnummer 325383-041US, Dezember 2011 [0004]
    • Artikel „Jekyll an iOS: When Benign Apps Become Evil”, 22. USENIX Security Symposium, August 2013 [0054]

Claims (25)

  1. Prozessor, der umfasst: eine Dekodiereinheit zum Dekodieren eines rücksprungzielbeschränkten Prozedurrücksprungbefehls (RTR-Rücksprungbefehls); eine Rücksprungzielbeschränkungseinheit, die mit der Dekodiereinheit gekoppelt ist und auf den RTR-Rücksprungbefehl anspricht, um zu bestimmen, ob ein Versuch vom RTR-Rücksprungbefehl, einen Steuerflusstransfer zu einem Befehl an einer dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse zu beschränken, basierend auf der Kompatibilität einer Art des Befehls an der Rücksprungadresse mit dem RTR-Rücksprungbefehl und basierend auf der Kompatibilität einer ersten rücksprungzielbeschränkten Information (RTR-Information) des RTR-Rücksprungbefehls mit zweiter RTR-Information des Befehls an der Rücksprungadresse; eine Steuerflusstransfereinheit, die mit der Rücksprungzielbeschränkungseinheit und mit der Dekodiereinheit gekoppelt ist, wobei die Steuerflusstransfereinheit auf den RTR-Rücksprungbefehl anspricht, um den Steuerfluss zum Befehl an der Rücksprungadresse zu transferieren, wenn die Rücksprungzielbeschränkungseinheit bestimmt, den Versuch nicht zu beschränken.
  2. Prozessor nach Anspruch 1, wobei die Rücksprungzielbeschränkungseinheit bestimmen soll, den Versuch nicht zu beschränken, wenn ein der ersten RTR-Information entsprechender erster Wert zu einem der zweiten RTR-Information entsprechenden zweiten Wert passt, und bestimmen soll, den Versuch zu beschränken, wenn der erste Wert nicht zum zweiten Wert passt.
  3. Prozessor nach Anspruch 2, wobei die Rücksprungzielbeschränkungseinheit bestimmen soll, den Versuch nicht zu beschränken, wenn der erste Wert gleich dem zweiten Wert ist, und bestimmen soll, den Versuch zu beschränken, wenn der erste Wert nicht gleich dem zweiten Wert ist.
  4. Prozessor nach Anspruch 1, wobei die Rücksprungzielbeschränkungseinheit bestimmen soll, den Versuch zu beschränken, wenn ein Opcode des Befehls an der Rücksprungadresse nicht einer aus einem Satz von nicht mehr als fünf Opcodes ist, die allen Befehlen entsprechen, die von einer mit dem RTR-Rücksprungbefehl kompatiblen Art sind und die verwendet werden sollen, um potentiell zulässige Rücksprungziele für den RTR-Rücksprungbefehl zu markieren.
  5. Prozessor nach Anspruch 1, wobei der RTR-Rücksprungbefehl einen Direktoperanden aufweist, um die erste RTR-Information bereitzustellen, und wobei der Befehl an der Rücksprungadresse einen Direktoperanden aufweist, um die zweite RTR-Information bereitzustellen.
  6. Prozessor nach einem der Ansprüche 1 bis 5, wobei, wenn die Rücksprungzielbeschränkungseinheit bestimmt, den Versuch nicht zu beschränken, der Prozessor den Befehl an der Rücksprungadresse als eine Nulloperation durchführen soll.
  7. Prozessor nach einem der Ansprüche 1 bis 5, wobei, wenn die Rücksprungzielbeschränkungseinheit bestimmt, den Versuch zu beschränken, die Rücksprungzielbeschränkungseinheit eines aus einer Ausnahme, einem Fehler und einer Unterbrechung verursachen soll.
  8. Prozessor nach Anspruch 1, wobei die Dekodiereinheit den RTR-Rücksprungbefehl dekodieren soll, der einen Direktoperanden und einen Opcode aufweisen soll, der derselbe wie ein alter Prozedurrücksprungbefehl ist, der in einem Befehlssatz vor dem RTR-Rücksprungbefehl existierte, wobei der alte Prozedurrücksprungbefehl ursprünglich eine vom Direktoperanden angegebene Anzahl von Bytes von einem Stapel auslesen sollte und wobei der Prozessor den Direktoperanden für die erste RTR-Information verwenden soll.
  9. Prozessor nach Anspruch 1, wobei die Dekodiereinheit den RTR-Rücksprungbefehl dekodieren soll, der einen Direktoperanden und einen Opcode aufweist, der derselbe wie ein alter Prozedurrücksprungbefehl ist, der in einem Befehlssatz vor dem RTR-Rücksprungbefehl existierte, und wobei der Prozessor einen ersten Modus, in dem der Direktoperand der ersten RTR-Information entsprechen soll, und einen zweiten Modus, in dem der Direktoperand ignoriert werden soll, aufweist.
  10. Verfahren in einem Prozessor, wobei das Verfahren umfasst: das Empfangen eines rücksprungzielbeschränkten Prozedurrücksprungbefehls (RTR-Rücksprungbefehl); und das Beschränken, als Reaktion auf den RTR-Rücksprungbefehl, eines Versuchs vom RTR-Rücksprungbefehl, einen Steuerflusstransfer zu einem Befehl an einer dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse vorzunehmen, basierend auf zumindest einem aus: dem Bestimmen, dass eine Art des Befehls an der Rücksprungadresse nicht mit dem RTR-Rücksprungbefehl kompatibel ist; und dem Bestimmen, dass eine erste rücksprungzielbeschränkte Information (RTR-Information), die vom RTR-Rücksprungbefehl angegeben wird, mit der zweiten RTR-Information, die von dem Befehl an der Rücksprungadresse angegeben wird, nicht kompatibel ist.
  11. Verfahren nach Anspruch 10, wobei das Beschränken auf einer Bestimmung basiert, dass die RTR-Information des RTR-Rücksprungbefehls nicht gleich der RTR-Information des Befehls an der Rücksprungadresse ist.
  12. Verfahren nach Anspruch 10, wobei das Beschränken auf einer Bestimmung basiert, dass ein Opcode des Befehls an der Rücksprungadresse nicht eines aus einem Satz von nicht mehr als fünf Opcodes ist, die allen Befehlen entsprechen, die von einer mit dem RTR-Rücksprungbefehl kompatiblen Art sind.
  13. Verfahren nach Anspruch 10, wobei das Empfangen das Empfangen des RTR-Rücksprungbefehls mit einem Direktoperanden zum Bereitstellen der ersten RTR-Information umfasst.
  14. System zum Verarbeiten von Befehlen, wobei das System umfasst: eine Verbindung; einen mit der Verbindung gekoppelten Prozessor, wobei der Prozessor einen rücksprungzielbeschränkten Prozedurrücksprungbefehl (RTR-Rücksprungbefehl) empfangen soll, der Prozessor als Antwort auf den RTR-Rücksprungbefehl bestimmen soll, einen Versuch vom RTR-Rücksprungbefehl, einen Steuerflusstransfer zu einem Befehl an einer dem RTR-Rücksprungbefehl entsprechenden Rücksprungadresse durchzuführen, zu beschränken, basierend auf einem aus einem Mangel an Kompatibilität einer Art des Befehls an der Rücksprungadresse mit der RTR-Rücksprunginformation und einem Mangel an Kompatibilität einer ersten rücksprungzielbeschränkten Information (RTR-Information) des RTR-Rücksprungbefehls mit dem Befehl an der Rücksprungadresse; und einen mit der Verbindung gekoppelten dynamischen Direktzugriffsspeicher (DRAM).
  15. System nach Anspruch 14, wobei der Prozessor bestimmen soll, den Versuch zu beschränken, basierend darauf, dass ein Wert eines Direktoperanden des RTR-Rücksprungbefehls nicht gleich einem Wert eines Direktoperanden des Befehls an der Rücksprungadresse ist, und wobei der Prozessor als Antwort auf das Bestimmen, den Versuch zu beschränken, eines aus einem Fehler und einer Ausnahme verursachen soll.
  16. Code-Analysesystem, umfassend: ein Code-Aufnahmemodul zum Empfangen von Code einer ersten Art; ein mit dem Code-Aufnahmemodul gekoppeltes Code-Analysemodul, um zu bestimmen, ob alle rücksprungzielbeschränkten Prozedurrücksprungbefehle (RTR-Rücksprungbefehle) im Code der ersten Art nur rücksprungzielbeschränkte Information (RTR-Information) angeben, die für die ersten Art, aber nicht für eine oder mehrere andere Arten von Code erlaubt ist.
  17. Code-Analysesystem nach Anspruch 16, wobei die erste Art nichtzugriffsbeschränkten Code umfasst und die eine oder mehreren anderen Arten von Code zugriffsbeschränkten Code umfasst/umfassen.
  18. Code-Analysesystem nach Anspruch 16, wobei die erste Art eine Benutzerebenenanwendung umfasst und die eine oder mehreren anderen Arten von Code eine Vielzahl von Benutzerebenenbibliothekscode, Gerätetreibercode, Systemebenenbibliothekscode und Betriebssystemcode umfasst/umfassen.
  19. Code-Analysesystem nach Anspruch 16, wobei das Code-Analysemodul bestimmen soll, ob alle RTR-Rücksprungbefehle im Code der ersten Art nur Werte von RTR-Information angeben, die sich in einem ersten Bereich befinden, und wobei der erste Bereich sich mit einem oder mehreren anderen Bereichen, die der einen oder den mehreren anderen Arten von Code entsprechen, gegenseitig ausschließt.
  20. Code-Analysesystem, umfassend: ein Code-Aufnahmemodul zum Empfangen von Code; ein mit dem Code-Aufnahmemodul gekoppeltes Code-Analysemodul, um rücksprungzielbeschränkte Information (RTR-Information) für zumindest ein Paar komplementärer rücksprungzielbeschränkter Prozedurrücksprungbefehle (RTR-Rücksprungbefehl) und Rücksprungzielbefehle zu ändern, während die RTR-Information des Paares komplementärer RTR-Rücksprung- und Rücksprungzielbefehle komplementär gelassen werden soll.
  21. Code-Analysesystem nach Anspruch 20, wobei das Code-Aufnahmemodul zudem Metadaten empfangen soll, die eine Vielzahl von Paaren komplementärer RTR-Rücksprung- und Rücksprungzielbefehle im Code angeben, und wobei das Code-Analysemodul die RTR-Information für jedes Paar komplementärer RTR-Rücksprung- und Rücksprungzielbefehle ändern soll, während die RTR-Information für jedes Paar komplementärer RTR-Rücksprung- und Rücksprungzielbefehle komplementär gelassen werden soll.
  22. Fertigartikel, der ein nichttransistorisches, maschinenlesbares Speichermedium umfasst, wobei das nichttransistorische, maschinenlesbare Speichermedium Befehle speichert und die Befehle, wenn sie von einer Maschine ausgeführt werden, die Maschine zum Durchführen von Vorgängen veranlassen sollen, wobei die Vorgänge umfassen: das Untersuchen von rücksprungzielbeschränkter Information (RTR-Information) aller rücksprungzielbeschränkten Prozedurrücksprungbefehle (RTR-Rücksprungbefehle) im Code einer ersten Art; und das Bestimmen, ob die RTR-Rücksprungbefehle im Code der ersten Art nur RTR-Information angeben, die für die erste Art von Code, aber nicht für eine oder mehrere andere Arten von Code erlaubt ist.
  23. Fertigartikel nach Anspruch 22, wobei die Befehle, die die Maschine veranlassen sollen zu bestimmen, ob die RTR-Befehle im Code der ersten Art nur die für die erste Art von Code, aber nicht für eine oder mehr andere Arten von Code erlaubte RTR-Information angeben, Befehle umfassen, die die Maschine dazu veranlassen, zu bestimmen, ob die RTR-Befehle im Code der ersten Art nur Werte angeben, die sich in einem ersten Bereich befinden, der für die erste Art von Code, aber nicht für die eine oder mehreren anderen Arten von Code erlaubt ist.
  24. Prozessor, der Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 10–13 umfasst.
  25. Fertigartikel, der ein nichttransistorisches, maschinenlesbares Speichermedium umfasst, das einen Befehl bereitstellt, der bei Ausführung durch eine Maschine eingesetzt werden kann, um die Maschine zum Durchführen des Verfahrens nach einem der Ansprüche 10–13 zu veranlassen.
DE102015002124.9A 2014-03-28 2015-02-19 Rücksprungzielbeschränkte Prozedurrücksprungbefehle, Prozessoren, Verfahren und Systeme Pending DE102015002124A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/229,822 2014-03-28
US14/229,822 US9703948B2 (en) 2014-03-28 2014-03-28 Return-target restrictive return from procedure instructions, processors, methods, and systems

Publications (1)

Publication Number Publication Date
DE102015002124A1 true DE102015002124A1 (de) 2015-10-01

Family

ID=52630844

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015002124.9A Pending DE102015002124A1 (de) 2014-03-28 2015-02-19 Rücksprungzielbeschränkte Prozedurrücksprungbefehle, Prozessoren, Verfahren und Systeme

Country Status (7)

Country Link
US (1) US9703948B2 (de)
JP (1) JP5961288B2 (de)
KR (1) KR101691719B1 (de)
CN (1) CN104951697B (de)
DE (1) DE102015002124A1 (de)
GB (1) GB2524618B (de)
TW (1) TWI590096B (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US10353680B2 (en) * 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US9733909B2 (en) 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
EP3172665A4 (de) 2014-07-25 2018-03-28 INTEL Corporation Verwendung eines look-aside-umwandlungspuffers zur implementierung einer agnostischen befehlssatzlaufzeitarchitektur
US9904780B2 (en) * 2014-07-31 2018-02-27 Nec Corporation Transparent detection and extraction of return-oriented-programming attacks
WO2016041592A1 (en) * 2014-09-17 2016-03-24 Irdeto B.V. Generating and executing protected items of software
US9501637B2 (en) * 2014-09-26 2016-11-22 Intel Corporation Hardware shadow stack support for legacy guests
JP6435834B2 (ja) * 2014-12-12 2018-12-12 富士通株式会社 命令実行制御装置、命令実行制御方法
US20160381050A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US9767292B2 (en) 2015-10-11 2017-09-19 Unexploitable Holdings Llc Systems and methods to identify security exploits by generating a type based self-assembling indirect control flow graph
US10437998B2 (en) 2015-10-26 2019-10-08 Mcafee, Llc Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
CN105825086B (zh) * 2016-03-16 2018-07-24 西北大学 一种基于攻击树的rop防护方法
RU2634172C1 (ru) * 2016-06-02 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ передачи управления между адресными пространствами
US9948185B2 (en) * 2016-06-10 2018-04-17 Dialog Semiconductor (Uk) Limited Fast-transient switching converter with type III compensation
US10423792B2 (en) * 2016-09-23 2019-09-24 Red Hat, Inc. Identifying exploitable code sequences
US10395033B2 (en) * 2016-09-30 2019-08-27 Intel Corporation System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
DK3812900T3 (da) * 2016-12-31 2024-02-12 Intel Corp Systemer, fremgangsmåder og apparater til heterogen beregning
US10607003B2 (en) 2017-06-29 2020-03-31 International Business Machines Corporation Mitigation of code reuse attacks by restricted indirect branch instruction
US11093605B2 (en) * 2018-06-28 2021-08-17 Cisco Technology, Inc. Monitoring real-time processor instruction stream execution
JP2022522863A (ja) * 2019-03-05 2022-04-20 シー2エー‐セック,リミテッド リターン指向プログラミング攻撃保護
CN110378117B (zh) * 2019-06-21 2022-12-30 华为技术有限公司 控制流完整性检测方法、装置及系统
IT202100002642A1 (it) 2021-02-05 2022-08-05 Sk Hynix Inc Metodo implementato da un microcontrollore per gestire una istruzione nop e microcontrollore corrispondente
US20230098640A1 (en) * 2021-09-26 2023-03-30 Ceremorphic, Inc. Core Processor and Redundant Branch Processor with Control Flow Attack Detection

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198258A (ja) 1996-01-19 1997-07-31 Nec Corp タスクスタックオーバーフロー検出回路
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
JP3552627B2 (ja) 2000-02-04 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体
DE60201511T2 (de) 2001-02-06 2005-10-20 Adelante Technologies B.V. Verfahren, system und computerprogrammprodukt zum manipulieren eines anweisungsflusses in einer pipeline eines prozessors
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
KR100505106B1 (ko) 2002-05-29 2005-07-29 삼성전자주식회사 강화된 보안 기능을 갖춘 스마트 카드
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
KR100777938B1 (ko) 2003-09-04 2007-11-21 싸이언스 파크 가부시키가이샤 부정 코드 실행의 방지 방법, 및 부정 코드 실행의 방지용 프로그램의 기록매체
US20050138263A1 (en) * 2003-12-23 2005-06-23 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US20050154859A1 (en) * 2004-01-14 2005-07-14 Arm Limited Branch prediction in a data processing apparatus
CN1280713C (zh) * 2004-03-09 2006-10-18 中国人民解放军国防科学技术大学 双栈返回地址预测器设计方法
US7552477B1 (en) * 2005-02-23 2009-06-23 Symantec Corporation Detecting return-to-LIBC buffer overflows via dynamic disassembly of offsets
US8141163B2 (en) * 2007-07-31 2012-03-20 Vmware, Inc. Malicious code detection
US8341383B2 (en) 2007-11-02 2012-12-25 Qualcomm Incorporated Method and a system for accelerating procedure return sequences
JP2009230479A (ja) 2008-03-24 2009-10-08 Toshiba Microelectronics Corp マイクロプロセッサ
CN101727312B (zh) * 2009-01-22 2013-01-09 杭州中天微系统有限公司 一种支持自动纠错功能的返回地址栈实现方法
CN101819522B (zh) * 2009-03-04 2012-12-12 威盛电子股份有限公司 微处理器以及相关指令解析的方法
US8689201B2 (en) 2010-01-27 2014-04-01 Telcordia Technologies, Inc. Automated diversity using return oriented programming
CA2704863A1 (en) 2010-06-10 2010-08-16 Ibm Canada Limited - Ibm Canada Limitee Injection attack mitigation using context sensitive encoding of injected input
US20120151184A1 (en) 2010-12-10 2012-06-14 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US8997218B2 (en) 2010-12-22 2015-03-31 F-Secure Corporation Detecting a return-oriented programming exploit
US8776223B2 (en) 2012-01-16 2014-07-08 Qualcomm Incorporated Dynamic execution prevention to inhibit return-oriented programming
US9122792B2 (en) * 2013-05-17 2015-09-01 International Business Machines Corporation Step over operation for machine code function calls

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Artikel "Jekyll an iOS: When Benign Apps Become Evil", 22. USENIX Security Symposium, August 2013
Intel® 64 and IA-32 Architectures Software Developer's Manual, Band 2, Befehlssatzreferenz, A-Z, Bestellnummer 325383-041US, Dezember 2011

Also Published As

Publication number Publication date
US9703948B2 (en) 2017-07-11
KR20150112773A (ko) 2015-10-07
KR101691719B1 (ko) 2016-12-30
CN104951697A (zh) 2015-09-30
TWI590096B (zh) 2017-07-01
US20150278516A1 (en) 2015-10-01
GB2524618A (en) 2015-09-30
JP5961288B2 (ja) 2016-08-02
GB201500925D0 (en) 2015-03-04
CN104951697B (zh) 2018-07-03
JP2015191658A (ja) 2015-11-02
TW201602827A (zh) 2016-01-16
GB2524618B (en) 2017-04-05

Similar Documents

Publication Publication Date Title
DE102015002124A1 (de) Rücksprungzielbeschränkte Prozedurrücksprungbefehle, Prozessoren, Verfahren und Systeme
DE102015007571B4 (de) Keine-lokalität-hinweis-vektor-speicherzugriff-prozessoren, -verfahren, -systeme und -befehle
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE102019109088A1 (de) Schutz von schlüsseln und sensitiven daten gegen angriffe in einer mikroprozessorarchitektur
DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
DE112017000677T5 (de) Prozessorerweiterungen zum Schutz von Stapeln während Ringübergängen
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
CN101351774A (zh) 将存储页面与程序相关联的页面着色
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: SAMSON & PARTNER PATENTANWAELTE MBB, DE

R130 Divisional application to

Ref document number: 102015017502

Country of ref document: DE