DE112009005006T5 - Optimizations for an Unbound Transactional Storage System (UTM) - Google Patents
Optimizations for an Unbound Transactional Storage System (UTM) Download PDFInfo
- Publication number
- DE112009005006T5 DE112009005006T5 DE112009005006T DE112009005006T DE112009005006T5 DE 112009005006 T5 DE112009005006 T5 DE 112009005006T5 DE 112009005006 T DE112009005006 T DE 112009005006T DE 112009005006 T DE112009005006 T DE 112009005006T DE 112009005006 T5 DE112009005006 T5 DE 112009005006T5
- Authority
- DE
- Germany
- Prior art keywords
- metadata
- loss
- address
- data
- 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.)
- Withdrawn
Links
- 238000003860 storage Methods 0.000 title claims description 38
- 238000005457 optimization Methods 0.000 title description 5
- 230000004044 response Effects 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000007704 transition Effects 0.000 claims abstract description 21
- 238000012217 deletion Methods 0.000 claims abstract description 6
- 230000037430 deletion Effects 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 92
- 238000013519 translation Methods 0.000 claims description 88
- 238000012360 testing method Methods 0.000 claims description 49
- 238000012544 monitoring process Methods 0.000 claims description 41
- 230000006835 compression Effects 0.000 claims description 38
- 238000007906 compression Methods 0.000 claims description 38
- 238000012546 transfer Methods 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims description 4
- 238000013479 data entry Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 claims description 2
- 238000009877 rendering Methods 0.000 claims description 2
- 238000011010 flushing procedure Methods 0.000 claims 1
- 239000003550 marker Substances 0.000 claims 1
- 239000000872 buffer Substances 0.000 abstract description 20
- 239000000725 suspension Substances 0.000 abstract description 3
- 230000014616 translation Effects 0.000 description 69
- 230000004888 barrier function Effects 0.000 description 60
- 230000006870 function Effects 0.000 description 14
- 235000019580 granularity Nutrition 0.000 description 14
- 230000003139 buffering effect Effects 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000004907 flux Effects 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 206010000210 abortion Diseases 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000011065 in-situ storage Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004574 scanning tunneling microscopy Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- GPIQOFWTZXXOOV-UHFFFAOYSA-N 2-chloro-4,6-dimethoxy-1,3,5-triazine Chemical compound COC1=NC(Cl)=NC(OC)=N1 GPIQOFWTZXXOOV-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000012669 compression test Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 235000013490 limbo Nutrition 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000005036 potential barrier Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Abstract
Ein Verfahren und eine Vorrichtung zum Optimieren eines unbounded transactional memory (UTM) Systems werden hierin beschrieben. Eine Hardware-Unterstützung für Monitore, Puffer und Metadaten wird bereitgestellt, wobei orthogonale metaphysikalische Adressräume für Metadaten getrennt mit Threads und/oder Software-Untersystemen innerhalb von Threads verbunden werden können. Zusätzlich können die Metadaten durch Hardware in einer komprimierten Weise hinsichtlich für Software transparenten Daten gehalten werden. Darüber hinaus ist die Hardware in Reaktion auf eine Metadatenzugriffsinstruktion/Operationen in der Lage, einen erzwungenen Metadatenwert zu unterstützen, um mehrere Modi einer transaktionalen Ausführung freizugeben. Falls jedoch Monitore, gepufferte Daten, Metadaten oder andere Informationen verlorengehen oder Konflikte erfasst werden, sorgt die Hardware für Variationen einer Verlustinstruktion, die in der Lage ist, ein Transaktionsstaturregister für einen derartigen Verlust oder Konflikt zu pollen und die Ausführung zu einer Marke in Reaktion auf das Erfassen des Verlustes oder Konflikts zu springen. In ähnlicher Weise werden mehrere Variationen einer Commit-Instruktion bereitgestellt, um es Software zu ermöglichen, Commit-Bedingungen und Informationen zum Löschen bei einem Commit zu definieren. Darüber hinaus liefert die Hardware eine Unterstützung, um eine Aussetzung und Wiederaufnahme von Transaktionen bei Ringniveauübergängen zu ermöglichen.A method and apparatus for optimizing an unbounded transactional memory (UTM) system are described herein. Hardware support for monitors, buffers, and metadata is provided wherein metadata orthogonal metaphysical address spaces can be separately connected to threads and / or software subsystems within threads. In addition, the metadata may be held by hardware in a compressed manner with respect to software transparent data. In addition, in response to a metadata access instruction / operations, the hardware is able to support a forced metadata value to enable multiple modes of transactional execution. However, if monitors, buffered data, metadata or other information is lost or conflicts are detected, the hardware provides for variations of a loss instruction capable of polling a transaction history register for such loss or conflict and execution in response to a flag to capture the capture of the loss or conflict. Similarly, several variations of a commit instruction are provided to enable software to define commit conditions and commit deletion information. In addition, the hardware provides support to allow suspension and resumption of transactions at ring level transitions.
Description
GEBIETTERRITORY
Diese Erfindung betrifft das Gebiet der Prozessorausführung und insbesondere die Ausführung von Instruktionsgruppen.This invention relates to the field of processor execution, and more particularly to the execution of instruction sets.
HINTERGRUNDBACKGROUND
Fortschritte in der Halbleiterbearbeitung und im Logikdesign ermöglichten eine Vergrößerung des Umfangs der Logik, die auf integrierten Schaltungsvorrichtungen vorhanden sein kann. Im Ergebnis wurden Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen und mehreren logischen Prozessoren, die auf einzelnen integrierten Schaltungen vorhanden sind, entwickelt. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise einen Einzelprozessorchip, wobei der Prozessorchip jede beliebige Anzahl von Kernen oder logischen Prozessoren umfassen kann.Advances in semiconductor processing and logic design have allowed for an increase in the amount of logic that may be present on integrated circuit devices. As a result, computer system configurations have been developed from a single or multiple integrated circuits in a system to multiple cores and multiple logical processors resident on individual integrated circuits. A processor or integrated circuit typically includes a single-processor chip, wherein the processor chip may include any number of cores or logical processors.
Die immerzu ansteigende Anzahl von Kernen und logischen Prozessoren auf integrierten Schaltungen ermöglicht, dass mehrere Softwarethreads gleichzeitig ausgeführt werden können. Jedoch entstanden durch das Anwachsen der Anzahl von Softwarethreads, die gleichzeitig ausgeführt werden können, Probleme bei der Synchronisierung von Daten, die zwischen den Softwarethreads gemeinsam geteilt werden. Eine herkömmliche Lösung für den Zugang zu gemeinsam geteilten Daten in Mehrfachkern- oder Mehrfachlogikprozessorsystemen umfasst die Verwendung von Verriegelungen, um einen gegenseitigen Ausschluss über Mehrfachzugriffe auf gemeinsam geteilte Daten zu garantieren. Jedoch führt die immer weiter zunehmende Möglichkeit mehrere Softwarethreads auszuführen potentiell zu einer falschen Konkurrenzsituation und einer Serialisierung der Ausführung.The ever increasing number of cores and logic processors on integrated circuits allows multiple software threads to be executed concurrently. However, the increase in the number of software threads that can run concurrently has resulted in problems in synchronizing data shared between the software threads. One conventional approach to sharing shared data in multi-core or multiple-logic processor systems involves the use of latches to guarantee mutual exclusion via multiple accesses to shared data. However, the ever-increasing ability to execute multiple software threads potentially results in a fake contention and serialization of execution.
Beispielsweise wird eine Hash-Tabelle betrachtet, die gemeinsam geteilte Daten enthält. Mit einem Verriegelungssystem kann ein Programmierer die gesamte Hash-Tabelle verriegeln, wodurch einem Thread der Zugang zur gesamten Hash-Tabelle ermöglicht wird. Jedoch werden der Durchsatz und die Leistungsfähigkeit anderer Threads potentiell negativ beeinflusst, da sie auf Einträge in der Hash-Tabelle nicht zugreifen können, bis die Verriegelung aufgelöst wird. Alternativ kann jeder Eintrag in der Hash-Tabelle verriegelt werden. Nach einer Extrapolation dieses einfachen Beispiels zu einem großen skalierbaren Programm ist offensichtlich, dass für beide Arten die Komplexität einer Verriegelungskonfliktsituation, Serialisierung, Feinsynchronisierung und Deadlockvermeidung für Programmierer extrem hinderliche Auflagen werden.For example, consider a hash table that contains shared data together. With a locking system, a programmer can lock the entire hash table, allowing a thread access to the entire hash table. However, the throughput and performance of other threads are potentially adversely affected because they can not access entries in the hash table until the lock is resolved. Alternatively, each entry in the hash table can be locked. After extrapolating this simple example to a large scalable program, it is obvious that for both types, the complexity of a lock conflict situation, serialization, fine synchronization and deadlock avoidance will be extremely cumbersome for programmers.
Eine weitere jüngere Datensynchronisationstechnik umfasst die Verwendung eines transaktionalen Speichers (TM). Häufig umfasst die transaktionale Ausführung eine Ausführung einer Gruppierung einer Mehrzahl von Mikrooperationen, Operationen oder Instruktionen. Bei dem obigen Beispiel führen beide Threads in der Hash-Tabelle aus und ihre Speicherzugriffe werden überwacht/verfolgt. Falls beide Threads auf denselben Eintrag zugreifen/denselben Eintrag verändern, kann eine Konfliktauflösung durchgeführt werden, um eine Datengültigkeit sicherzustellen. Ein Typ einer transaktionalen Ausführung umfasst einen Software Transactional Memory (STM) (Software-Transaktional-Speicher), wobei eine Verfolgung von Speicherzugriffen, Konfliktauflösung, Taskabbrüchen und anderen transaktionalen Tasks häufig ohne Hardwareunterstützung in Software durchgeführt werden.Another recent data synchronization technique involves the use of transactional memory (TM). Often, transactional execution involves execution of a grouping of a plurality of micro-operations, operations, or instructions. In the above example, both threads execute in the hash table and their memory accesses are monitored / tracked. If both threads access the same entry / modify the same entry, a conflict resolution can be performed to ensure data validity. One type of transactional execution includes Software Transactional Memory (STM), where memory access, conflict resolution, task abends, and other transactional task tracking are often performed without software hardware support.
Eine andere Art einer transaktionalen Ausführung umfasst ein Hardware Transactional Memory (HTM) System (Hardware-Transaktional-Speichersystem), bei dem Hardware zur Unterstützung der Zugriffsverfolgung, Konfliktauflösung und für andere transaktionale Tasks einbezogen ist. Zuvor wurden tatsächliche Speicherdatenarrays mit zusätzlichen Bits zum Halten von Informationen, wie beispielsweise Hardwareattribute zur Verfolgung von Lesevorgängen, Schreibvorgängen und Buffering, erweitert und folglich werden die Daten mit den Daten vom Prozessor zum Speicher bewegt. Häufig wird diese Information als dauerhaft bezeichnet, d. h. sie geht bei einer Cache-Entleerung nicht verloren, da die Information sich mit den Daten durch die Speicherhierarchie bewegt. Jedoch auferlegt diese Dauerhaftigkeit dem Speicherhierarchiesystem einen zusätzlichen Overhead.Another type of transactional execution includes a hardware transactional memory (HTM) system that includes hardware to support access tracking, conflict resolution, and other transactional tasks. Previously, actual memory data arrays have been augmented with additional bits to hold information, such as hardware attributes for tracking reads, writes, and buffering, and thus data is moved with the data from the processor to memory. Often this information is called permanent, i. H. it is not lost on cache flush as the information moves through the memory hierarchy with the data. However, this durability imposes an additional overhead on the memory hierarchy system.
Zusätzlich waren bisherige Hardware Transactional Memory (HTM) Systeme mit einer Anzahl von Ineffizienzen belastet. Als ein erstes Beispiel bieten HTMs zur Zeit kein effizientes Verfahren zum Übergang zwischen ungepuffert oder gepuffert und von nicht überwachten Zuständen zu einem gepufferten und überwachten Zustand, um eine Konsistenz vor einem Commit einer Transaktion sicherzustellen. Als ein weiteres Beispiel bestehen zahlreiche Ineffizienzen der Schnittstelle eines HTM mit Software. Insbesondere stellt die Hardware keinen Mechanismus bereit, um Softwarespeicherzugangsbarrieren richtig zu beschleunigen, die unterschiedliche Formen starker und schwacher Atomität zwischen transaktionalen und nicht transaktionalen Operationen berücksichtigen. Zusätzlich liefert Hardware während eines versuchten Commits einer Transaktion keine Möglichkeiten zur Bestimmung, wann eine Transaktion abbrechen oder Committen soll, basierend auf einem Verlust an Überwachung, Pufferung und/oder anderen Attributinformationen. Ähnlich sorgt der Instruktionssatz für diese früheren HTMs nicht für Commit-Instruktionen, die Informationen definieren, die bei einem Commit einer Transaktion gehalten oder gelöscht werden sollen. Andere beispielhafte Effizienzen umfassen: HTMs sehen keine Instruktionen zur effizienten Vektor- oder Sprungausführung bei einer Erfassung eines Konflikts oder bei einem Informationsverlust vor und die Unfähigkeit momentaner HTMs Ringlevel-Prioritätsübergänge während einer Ausführung von Transaktionen handzuhaben.In addition, previous hardware transactional memory (HTM) systems were burdened with a number of inefficiencies. As a first example, HTMs currently do not provide an efficient way to transition between unbuffered or buffered and unmonitored states to a buffered and monitored state to ensure consistency before committing a transaction. As another example, there are numerous inefficiencies of the interface of an HTM with software. In particular, the Hardware does not provide a mechanism to properly accelerate software memory access barriers that are aware of different forms of strong and weak atomicity between transactional and non-transactional operations. In addition, during an attempted commit of a transaction, hardware provides no means of determining when to abort or commit a transaction based on a loss of monitoring, buffering, and / or other attribute information. Similarly, the instruction set for these prior HTMs does not provide for commit instructions that define information to be held or deleted when a transaction commits. Other exemplary efficiencies include: HTMs do not provide instructions for efficient vector or jump execution in detecting a conflict or loss of information, and the inability of current HTMs to handle Ringlevel priority transitions during transaction execution.
KURZBESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS
Die vorliegende Erfindung ist beispielhaft veranschaulicht und nicht durch die Figuren der beigefügten Zeichnungen beschränkt.The present invention is illustrated by way of example and not limited by the figures of the accompanying drawings.
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
In der folgenden Beschreibung sind zahlreiche spezielle Details, wie Beispiele spezieller Hardwarestrukturen für eine transaktionale Ausführung, spezifische Typen und Implementierungen von Zugangsmonitoren, spezifische Typen von Cache-Kohärenzmodellen zur Erfassung von Zugriffskonflikten, spezifische Datengranularitäten und spezifische Typen von Speicherzugriffen und Orten, etc. dargelegt, um ein umfassendes Verständnis der vorliegenden Erfindung zu gewährleisten. Es ist jedoch für den Fachmann offensichtlich, dass diese speziellen Details nicht eingesetzt werden müssen, um die vorliegende Erfindung zu realisieren. Bei anderen Beispielen wurden gut bekannte Komponenten oder Methoden, wie beispielsweise das Codieren von Transaktionen in Software, das Einfügen von Operationen zur Durchführung von enumerierten Funktionen durch einen Compiler, die Abgrenzung von Transaktionen, spezifische und alternative Multikern- und Multithread-Prozessorarchitekturen, spezifische Compilermethoden/-implementierungen und spezifische Betriebsdetails von Mikroprozessoren nicht in Einzelheiten beschrieben, um eine unnötige Verschleierung der vorliegenden Erfindung zu vermeiden.In the following description, numerous specific details, such as specific hardware structures for transactional execution, specific types and implementations of access monitors, specific types of cache coherency models for detecting access conflicts, are specific Data granularities and specific types of memory accesses and locations, etc. set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that these specific details need not be employed to practice the present invention. Other examples have included well-known components or methods such as encoding transactions in software, inserting operations to perform enumerated functions by a compiler, delineating transactions, specific and alternative multi-core and multi-threaded processor architectures, specific compiler methods. Implementations and specific operating details of microprocessors are not described in detail to avoid unnecessary concealment of the present invention.
Die hierin beschriebenen Verfahren und Vorrichtungen sind zur Optimierung von Hardware und Software für eine Unbounded Transactional Memory (UTM) Ausführung (Unbeschränkte Transaktional-Speicherausführung) vorgesehen. Insbesondere werden die Optimierungen primär mit Bezug zu einer Unterstützung eines UTM Systems erläutert. Jedoch können die hierin beschriebenen Verfahren und Vorrichtungen in jeder Form eines Transaktional-Speichersystems verwendet werden, wie beispielsweise in einer Hardware zur Unterstützung oder Beschleunigung von Software-Transaktional-Speichersystemen (STMs), reinen Hardware-Transaktional-Speichersystemen (HTMs) oder einem Hybrid daraus, das sich in der Implementierung von einem UTM-System unterscheidet.The methods and apparatus described herein are for optimizing hardware and software for Unbounded Transactional Memory (UTM) execution (Transactional Unlimited Memory Execution). In particular, the optimizations are explained primarily with reference to a support of a UTM system. However, the methods and apparatus described herein may be used in any form of a transactional memory system, such as in hardware to support or speed up software transactional memory (STM) systems, pure hardware transactional memory (HTM) systems, or a hybrid thereof that differs in implementation from a UTM system.
Unter Bezugnahme auf
Bei einer Ausführungsform betrifft ein Verarbeitungselement eine Thread-Unit, eine Prozess-Unit, einen Kontext, einen logischen Prozessor, einen Hardwarethread, einen Kern und/oder jedes andere beliebige Element, das geeignet ist, einen Zustand für einen Prozessor zu halten, wie beispielsweise einen Ausführungszustand oder einen Architekturzustand. Mit anderen Worten betrifft ein Verarbeitungselement gemäß einer Ausführungsform jede beliebige Hardware, die geeignet ist, unabhängig mit Code in Verbindung zu stehen, wie beispielsweise einem Softwarethread, einem Betriebssystem, einer Anwendung oder einem anderen Code.In one embodiment, a processing element relates to a thread unit, a process unit, a context, a logical processor, a hardware thread, a core, and / or any other element capable of holding a state for a processor, such as an execution state or an architectural state. In other words, a processing element according to one embodiment relates to any hardware capable of being independently associated with code, such as a software thread, operating system, application, or other code.
Ein physikalischer Prozessor bezieht sich typischerweise auf eine integrierte Schaltung, die potentiell jede beliebige Anzahl anderer Verarbeitungselemente, wie beispielsweise Kerne oder Hardwarethreads umfasst.A physical processor typically refers to an integrated circuit that potentially includes any number of other processing elements, such as cores or hardware threads.
Ein Kern bezieht sich häufig auf eine Logik, die sich auf einer integrierten Schaltung befindet, die geeignet ist einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit zumindest einigen zweckbestimmten Ausführungsressourcen verknüpft ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarethread typischerweise auf jede beliebige Logik, die sich auf einer integrierten Schaltung befindet, die geeignet ist einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei sich die unabhängig aufrechterhaltenen Architekturzustände einen Zugriff auf Ausführungsressourcen teilen. Wie zu erkennen ist gibt es eine Überlappung zwischen der Nomenklatur eines Hardwarethreads und eines Kerns, wenn bestimmte Ressourcen gemeinsam geteilt werden und andere für einen Architekturzustand zweckbestimmt sind. Häufig werden ein Kern und ein Hardwarethread von einem Betriebssystem als individuelle logische Prozessoren gesehen, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu planen.One core often refers to logic residing on an integrated circuit capable of maintaining an independent architectural state, each independently maintained architectural state being associated with at least some dedicated execution resources. Unlike cores, a hardware thread typically refers to any logic residing on an integrated circuit that is capable of maintaining an independent architectural state, with independently maintained architectural states sharing access to execution resources. As can be seen, there is an overlap between the nomenclature of a hardware thread and a kernel when certain resources are shared and others are dedicated to an architectural state. Often, a kernel and a hardware thread are seen by an operating system as individual logical processors, with the operating system being able to individually plan operations on each logical processor.
Ein logischer Prozessor
Hierin ist ein erster Thread mit Architekturzustandsregistern
Der Prozessor
Wie dargestellt ist, umfasst der Prozessor
Das Dekodiermodul
In einem Beispiel umfasst der Allocator- und Renamer-Block
Der Scheduler- und die Ausführungseinheit(en)-Block
Ein Datencache niedriger Ebene und ein Datenübersetzungspuffer (D-TLB)
Bei einer Ausführungsform ist der Prozessor
Typischerweise sind während einer Ausführung einer Transaktion Aktualisierungen des Speichers nicht global sichtbar gemacht, bis die Transaktion committed ist. Als ein Beispiel ist ein transaktionales Schreiben in eine Stelle für einen lokalen Thread potentiell sichtbar, jedoch werden die Schreibdaten in Antwort auf ein Lesen von einem anderen Thread nicht weitergeleitet, bis die Transaktion, die das transaktionale Schreiben umfasst, committed ist. Während die Transaktion immer noch schwebend ist, werden Datenpunkte/Elemente, die von einem Speicher geladen und in einem Speicher geschrieben werden, verfolgt, wie nachfolgend in weiteren Einzelheiten erläutert wird. Sobald die Transaktion einen Commit-Punkt erreicht, wird die Transaktion committed und es werden während der Transaktion erfolgte Aktualisierungen allgemein sichtbar gemacht, falls keine Konflikte für die Transaktion erfasst wurden.Typically, during execution of a transaction, updates to the memory are not made globally visible until the transaction is committed. As an example, a transactional write to a location for a local thread is potentially visible, however, the write data is not forwarded in response to a read from another thread until the transaction comprising the transactional write is committed. While the transaction is still pending, data points / items loaded from memory and written to memory are tracked, as will be explained in more detail below. Once the transaction reaches a commit point, the transaction is committed and updates made during the transaction are made generally visible if no conflicts are detected for the transaction.
Wenn jedoch die Transaktion während des Schwebezustands invalidiert wird, wird die Transaktion abgebrochen und potentiell neu gestartet, ohne dass die Aktualisierungen global sichtbar gemacht werden. Folglich bezieht sich der Schwebezustand einer Transaktion, wie er hierin verwendet wird, auf eine Transaktion, die mit der Ausführung begonnen hat und nicht committed oder abgebrochen wurde, d. h. schwebend ist.However, if the transaction is invalidated during the suspend state, the transaction is aborted and potentially restarted without making the updates globally visible. Thus, the limbo of a transaction as used herein refers to a transaction that has begun execution and has not been committed or aborted, i. H. is floating.
Ein Software-Transaction-Memory(STM)-System betrifft häufig das Durchführen einer Zugriffsverfolgung, Konfliktauflösung oder andere Transaktionsspeicheraufgaben in Software oder zumindest teilweise in Software. Bei einer Ausführungsform ist der Prozessor
Ein Compiler umfasst häufig ein Programm oder eine Gruppe von Programmen, um Quelltext/Code in Zieltext/Code zu übersetzen. Gewöhnlich wird eine Kompilierung eines Programms von Anwendungs-Code mit einem Compiler in mehreren Phasen und Durchgangen durchgeführt, um einen Programmiersprachencode hoher Ebene in einen Maschinen- oder Assemblersprachencode niedriger Ebene zu transformieren. Jedoch kennen Einzeldurchgangscompiler für eine einfache Kompilierung dennoch verwendet werden. Ein Compiler kann jede beliebige bekannte Kompilierungstechnik verwenden und kann jede beliebige Compileroperation durchführen, wie beispielsweise eine lexikalische Analyse, eine Vorverarbeitung, ein Parsen, eine Semantikanalyse, eine Codegenerierung, eine Codetransformation und eine Codeoptimierung.A compiler often includes a program or set of programs to translate source code into destination text / code. Typically, compilation of a program of application code with a compiler is performed in multiple phases and passes to transform a high level programming language code into a low level machine or assembly language code. However, single pass compilers still know how to be used for easy compilation. A compiler may use any known compilation technique and may perform any compiler operation, such as lexical analysis, preprocessing, parsing, semantic analysis, code generation, code transformation, and code optimization.
Größere Compiler umfassen häufig mehrere Phasen, jedoch sind diese Phasen meistens von zwei allgemeinen Phasen umfasst: (1) ein Front-End, d. h. dort, wo im Allgemeinen eine syntaktische Verarbeitung, semantische Verarbeitung und einige Transformationen/Optimierungen stattfinden können und (2) ein Back-End, d. h. dort, wo im Allgemeinen Analyse, Transformationen, Optimierungen und eine Codegenerierung stattfinden. Einige Compiler beziehen sich auf ein Middle-End, das das Verwischen der Abgrenzung zwischen einem Front-End und einem Back-End eines Compilers veranschaulicht. Als Ergebnis kann eine Bezugnahme auf ein Einfügen, eine Assoziierung, Erzeugung oder eine andere Operation eines Compilers in jeder der zuvor genannten Phasen oder in jedem der zuvor genannten Durchgänge sowie in jeder anderen bekannten Phase oder in jedem anderen bekannten Durchgang eines Compilers stattfinden. Als ein veranschaulichendes Beispiel fügt ein Compiler potentiell transaktionale Operationen, Calls, Funktionen etc. in eine oder mehrere Phasen einer Kompilierung ein, wie beispielsweise eine Einfügung von Calls/Operationen in einer Front-End-Phase einer Kompilierung und dann eine Transformation der Calls/Operationen in einem Code niedriger Ebene während einer transaktionalen Speichertransformationsphase.Larger compilers often include multiple phases, but these phases are mostly comprised of two general phases: (1) a front-end, ie where syntactic processing, semantic processing and some transformations / optimizations can generally take place and (2) Back-end, where generally analysis, transformations, optimizations, and code generation take place. Some compilers refer to a middle-end that demonstrates blurring the boundary between a front-end and a back-end of a compiler. As a result, a reference insertion, association, creation, or other operation of a compiler in each of the aforementioned phases or in each of the aforementioned passes, as well as in any other known phase or in any other known passage of a compiler. As an illustrative example, a compiler inserts potentially transactional operations, calls, functions, etc. into one or more phases of compilation, such as insertion of calls / operations in a front-end phase of compilation, and then transformation of the calls / operations in a low-level code during a transactional memory transformation phase.
Nichtsdestoweniger kompiliert der Compiler trotz der Ausführungsumgebung und der dynamischen und der statischen Natur eines Compilers gemäß einer Ausführungsform Programmcode, um eine transaktionale Ausführung zu ermöglichen. Daher betrifft eine Bezugnahme auf die Ausführung eines Programmcodes gemäß einer Ausführungsform (1) die Ausführung eines Compilerprogramms (von Compilerprogrammen) entweder dynamisch oder statisch, um einen Hauptprogrammcode zu kompilieren, transaktionale Strukturen aufrechtzuerhalten oder andere mit einer Transaktion verbundene Operationen auszuführen, (2) die Ausführung eines Hauptprogrammcodes einschließlich von transaktionalen Operationen/Calls, (3) die Ausführung von anderem Programmcode, wie beispielsweise Bibliotheken, der mit dem Hauptprogrammcode verknüpft ist, oder (4) eine Kombination daraus.Nevertheless, despite the execution environment and the dynamic and static nature of a compiler, in accordance with one embodiment, the compiler compiles program code to enable transactional execution. Therefore, reference to the execution of a program code according to an embodiment (1) relates to the execution of a compiler program (either compiler programs) either dynamically or statically to compile main program code, maintain transactional structures, or perform other transaction related operations (2) Execution of a main program code including transactional operations / calls, (3) execution of other program code, such as libraries associated with the main program code, or (4) a combination thereof.
Häufig wird in Software-Transactional-Memory(STM)-Systemen ein Compiler verwendet, um einige Operationen, Calls und anderen Codes inline mit Anwendungscode, der kompiliert werden soll, einzufügen, während andere Operationen, Calls, Funktionen und Code getrennt in Bibliotheken bereitgestellt werden. Dies bietet den Vertreibern der Bibliotheken potentiell die Möglichkeit, die Bibliotheken zu optimieren und zu aktualisieren ohne den Anwendungscode neu zu kompilieren. Als spezielles Beispiel kann ein Call an eine Commit-Funktion inline in Anwendungscode an einem Commit-Punkt einer Transaktion eingefügt werden, während die Commit-Funktion getrennt in einer aktualisierbaren Bibliothek bereitgestellt wird. Zusätzlich beeinflusst die Wahl, wo spezielle Operationen und Calls platziert werden sollen, potentiell die Effizienz des Anwendungscodes. Wenn beispielsweise eine Filteroperation, die in weiteren Einzelheiten mit Bezug zu Zugangsbarrieren unter Bezugnahme auf
Bei einer Ausführungsform ist der Prozessor
Als eine Kombination kann der Prozessor
Wie oben erläutert, umfassen Transaktionen transaktionale Speicherzugriffe auf Datenelemente sowohl durch lokale Verarbeitungselemente innerhalb eines Prozessors
Eine Dateneinheit oder ein Datenelement kann Daten bei jedem beliebigen Granularitätsniveau umfassen, wie durch Hardware, Software oder einer Kombination daraus definiert wird. Eine nicht abschließende Liste von Beispielen von Daten, Datenelementen, Dateneinheiten oder Bezugnahmen darauf umfassen eine Speicheradresse, ein Datenobjekt, eine Klasse, ein Feld eines Typs eines dynamischen Sprachcodes, einen Typ eines dynamischen Sprachcodes, eine Variable, einen Operanden, eine Datenstruktur und eine indirekte Bezugnahme auf eine Speicheradresse. Jedoch kann jedes beliebige bekannte Gruppieren von Daten als ein Datenelement oder eine Dateneinheit bezeichnet werden. Einige der obengenannten Beispiele, wie beispielsweise ein Feld eines Typs eines dynamischen Sprachcodes und ein Typ eines dynamischen Sprachcodes betreffen Datenstrukturen eines dynamischen Sprachcodes. Zur Veranschaulichung ist dynamischer Sprachcode, wie beispielsweise JavaTM von Sun Microsystems, Inc. eine stark typisierte Sprache. Jede Variable umfasst einen Typ, der zur Kompilierungszeit bekannt ist. Die Typen sind in zwei Kategorien unterteilt – primitive Typen (Boolsch und numerisch, z. B. int, float) und Referenztypen (Classes, Interfaces und Arrays). Die Werte von Referenztypen sind Bezugnahmen auf Objekte. In Java kann ein Objekt, das aus Feldern besteht, eine Klasseninstanz oder ein Array sein. Unter der Annahme eines Objektes a einer Klasse A wird üblicherweise die Notation A::x verwendet, um auf das Feld x eines Typs A zu verweisen, und a.x, um auf das Feld x eines Objekts a einer Klasse A zu verweisen. Beispielsweise kann ein Ausdruck als a.x = a.y + a.z ausgedrückt werden. Hierbei werden das Feld y und das Feld z zum Hinzufügen geladen und das Ergebnis wird in das Feld x geschrieben.A data unit or data item may include data at any level of granularity, as defined by hardware, software, or a combination thereof. A non-exhaustive list of examples of data, data elements, data units, or references thereto, includes a memory address, a data object, a class, a dynamic language code type field, a dynamic language code type, a variable, an operand, a data structure, and an indirect one Reference to a memory address. However, any known grouping of data may be referred to as a data item or unit of data. Some of the above examples, such as a dynamic language code type field and a dynamic language code type, relate to dynamic language code data structures. By way of illustration, dynamic language code, such as Java ™ from Sun Microsystems, Inc., is a strongly typed language. Each variable has a type known at compile time. The types are divided into two categories - primitive types (Boolean and numeric, such as int, float) and reference types (Classes, Interfaces, and Arrays). The values of reference types are references to objects. In Java, an object consisting of fields can be a class instance or an array. Assuming an object a of a class A, the notation A :: x is usually used to refer to the field x of a type A, and ax to refer to the field x of an object a of a class A. For example, an expression can be expressed as ax = ay + az. In this case, the field y and the field z are loaded for addition and the result is written in the field x.
Daher können Überwachungs-/Pufferungsspeicherzugriffe auf Datenelemente bei jeder beliebigen Datenniveaugranularität durchgeführt werden. Beispielsweise werden bei einer Ausführungsform Speicherzugriffe auf Daten auf einer Typebene überwacht. Hierbei können ein transaktionales Schreiben in ein Feld A::x und ein nicht transaktionales Laden eines Feldes A::y als Zugriffe auf dasselbe Datenelement überwacht werden, d. h. Typ A. Bei einer anderen Ausführungsform wird eine Speicherzugriffüberwachung/Puffern auf einer Feldniveaugranularität durchgeführt. Hierbei werden ein transaktionales Schreiben in A::x und ein nichttransaktionales Laden von A::y nicht als Zugriffe auf dasselbe Datenelement überwacht, da sie Bezugnahmen auf getrennte Felder darstellen. Man beachte, dass andere Datenstrukturen oder Programmiertechniken beim Verfolgen von Speicherzugriffen auf Datenelemente berücksichtigt werden können. Als Beispiel sei angenommen, dass die Felder x und y des Objekts einer Klasse A, d. h. A::x und A::y, die auf Objekte einer Klasse B zeigen, auf neu zugewiesene Objekte initialisiert werden und dass nach einer Initialisierung niemals in diese geschrieben wird. Bei einer Ausführungsform wird ein transaktionales Schreiben in ein Feld B::z eines Objekts, auf das durch A::x gezeigt wird, hinsichtlich eines nicht transaktionalen Ladens eines Feldes B::z eines Objekts, auf das durch A::y gezeigt wird, nicht als Speicherzugriff auf dasselbe Datenelement überwacht. Anhand der Extrapolation dieser Beispiele kann festgestellt werden, dass Monitore ein Überwachen/Puffern bei jedem beliebigen Datengranularitätniveau ausführen können.Therefore, monitoring / buffering memory accesses to data elements may be performed at any data level granularity. For example, in one embodiment, memory accesses to data at a type level are monitored. In this case, a transactional write to a field A :: x and a non-transactional loading of a field A :: y can be monitored as accesses to the same data element, i. H. Type A. In another embodiment, memory access monitoring / buffering is performed on a field level granularity. In this case, a transactional write in A :: x and a non-transactional load of A :: y are not monitored as accesses to the same data item because they are references to separate fields. Note that other data structures or programming techniques may be considered when tracking memory accesses to data items. For example, suppose that the fields x and y of the object of class A, d. H. A :: x and A :: y point to class B objects, initialize to newly assigned objects, and never write to them after initialization. In one embodiment, a transactional write to a field B :: z of an object pointed to by A :: x is considered to be a non-transactional loading of a field B :: z of an object pointed to by A :: y , not monitored as memory access to the same data item. By extrapolating these examples, it can be seen that monitors can perform monitoring / buffering at any level of data granularity.
Gemäß einer Ausführungsform umfasst der Prozessor
Als spezifisches veranschaulichendes Beispiel umfassen Lese- und Schreibmonitore mit Cache-Orten verbundene Attribute, wie beispielsweise Orte in einem Datencache
Daher führen, basierend auf der Konstruktion, verschiedene Kombinationen von Cache-Kohärenz-Anfragen und überwachten Kohärenz-Zuständen von Cache-Zeilen zu potentiellen Konflikten, wie beispielsweise, dass eine Cache-Zeile ein Datenelement in einem gemeinsamen leseüberwachten Zustand hält und ein Snoop eine Schreibanfrage auf das Datenelement anzeigt. Umgekehrt können eine Cache-Zeile, die ein Datenelement hält, das sich in einem gepufferten Schreibzustand befindet und ein externer Snoop, der eine Leseanfrage zu dem Datenelement anzeigt, als potentiell konfliktionär betrachtet werden. Gemäß einer Ausführungsform ist eine Snoop-Logik an eine Konflikterfassungs/Berichtslogik wie beispielsweise Monitore und/oder eine Logik zur Konflikterfassung/Bericht, sowie Statusregister, um die Konflikte zu berichten, angeschlossen, um derartige Kombinationen von Zugriffsanfragen und Attributzuständen zu erfassen.Therefore, based on the design, various combinations of cache coherency requests and monitored cache line coherency states lead to potential conflicts, such as a cache line holding a data item in a common read-monitored state and a snoop holding a write request to the data element. Conversely, a cache line holding a data item that is in a buffered write state and an external snoop that is indicating a read request to the data item may be considered potentially conflicting. According to one embodiment, snoop logic is connected to conflict detection / reporting logic such as monitors and / or conflict detection / reporting logic, as well as status registers to report the conflicts, to detect such combinations of access requests and attribute states.
Jedoch können beliebige Kombinationen von Bedingungen und Szenarien als für eine Transaktion invalidierend angesehen werden, die durch eine Instruktion, wie beispielsweise eine Commit-Instruktion definiert sein kann. Dies ist nachfolgend in weiteren Einzelheiten mit Bezugnahme auf
Gemäß einer Ausführungsform ist Hardware des Prozessors
Im Gegensatz dazu wird als ein weiteres Beispiel ein Cache-Speicher, wie beispielsweise ein Daten-Cache
Man beachte, dass die Ausdrücke intern und extern aus der Perspektive eines Threads in Verknüpfung mit der Ausführung einer Transaktion oder Verarbeitungselementen, die sich einen Cache gemeinsam teilen, häufig relativ sind. Beispielsweise wird ein erstes Verarbeitungselement zur Ausführung eines Software-Threads, der mit der Ausführung einer Transaktion verbunden ist, als ein lokaler Thread bezeichnet. Daher wird in obiger Erörterung, falls ein Speichern an oder Laden von einer Adresse empfangen wird, in die vorher durch den ersten Thread geschrieben wurde, was zu einer Cachezeile für die Adresse führt, die in einem gepufferten Kohärenz-Zustand gehalten wird, dem ersten Thread die gepufferte Version der Cache-Zeile geliefert, da es sich um den lokalen Thread handelt. Im Gegensatz dazu kann ein zweiter Thread auf einem anderen Verarbeitungselement im selben Prozessor ausführen, ist jedoch nicht mit einer Ausführung der Transaktion verbunden, die für die Cache-Zeile verantwortlich ist, die in dem gepufferten Zustand gehalten wird – ein externer Thread; daher verfehlt ein Laden oder Speichern vom zweiten Thread an der Adresse die gepufferte Version der Cache-Zeile und eine normale Cache-Ersetzung wird verwendet, um die nicht gepufferte Version der Cache-Zeile aus einem Speicher höherer Ebene abzurufen.Note that the expressions internally and externally are often relative from the perspective of a thread associated with the execution of a transaction or processing elements that share a cache. For example, a first processing element for executing a software thread associated with the execution of a transaction is referred to as a local thread. Therefore, in the above discussion, if storing or loading is received from an address previously written by the first thread, resulting in a cache line for the address held in a buffered coherency state, the first thread is received supplied the buffered version of the cache line because it is the local thread. In contrast, a second thread may execute on a different processing element in the same processor, but is not associated with any execution of the transaction responsible for the cache line being held in the buffered state - an external thread; therefore, loading or saving from the second thread at the address misses the buffered version of the cache line and a normal cache replacement is used to fetch the non-buffered version of the cache line from higher-level memory.
Hierin werden die internen/lokalen und externen/entfernten Threads auf demselben Prozessor ausgeführt und bei einigen Ausführungsformen können sie auch auf getrennten Verarbeitungselementen im selben Kern eines Prozessors ausgeführt werden, die sich einen Zugriff auf den Cache gemeinsam teilen. Jedoch ist der Gebrauch dieser Ausdrücke nicht in dieser Weise beschränkt. Wie oben erläutert, kann sich lokal auf mehrere Threads beziehen, die sich einen Zugriff auf einen Cache gemeinsam teilen, uns muss nicht spezifisch für einen einzelnen Thread sein, der mit der Ausführung der Transaktion verbunden ist, während sich extern oder entfernt auf Threads beziehen kann, die sich einen Zugang zum Cache nicht gemeinsam teilen. Herein, the internal / local and external / remote threads are executed on the same processor and, in some embodiments, may also be executed on separate processing elements in the same core of a processor that share access to the cache in common. However, the use of these terms is not limited in this way. As discussed above, a local thread may refer to multiple threads that share access to a cache in common, we need not be specific to a single thread associated with running the transaction, while externally or remotely may refer to threads that do not share access to the cache.
Wie oben in der ersten Bezugnahme zu
Metaphysikalische Address-Räume für MetadatenMetaphysical address spaces for metadata
Metadatenmetadata
Mit Bezug zu
Als ein erstes Beispiel umfassen Metadaten
Alternativ können Metadaten
Als ein weiteres Beispiel umfassen Metadaten
Folglich umfasst eine Lösung ein Verwenden eines Lesefilters, um einen ersten Voreinstellungswert zu halten, um anzuzeigen, dass das Datenelement
Einige wenige andere Beispiele von Metadaten umfassen einen Hinweis einer Darstellung einer oder eine Bezugnahme auf eine Adresse für einen Handler, der entweder generisch oder spezifisch für eine mit einem Datenelement verbundene Transaktion ist, eine unwiderrufliche/eigensinnige Natur einer mit einem Datenelement
In Fortsetzung der Erläuterung von Darstellungen für Metadaten werden auch die oben beschriebenen Hardware-Monitore und gepufferten Kohärenz-Zustände bei einigen Ausführungsformen als Metadaten betrachtet. Die Monitore geben an, ob ein Ort auf externe Leseanfragen oder externe Read-For-Ownership-Anfragen (Lesen-für-Besitz-Anfragen) zu überwachen ist, während der gepufferte Kohärenz-Zustand anzeigt, ob eine zugeordnete Daten-Cache-Zeile, die ein Datenelement hält, gepuffert ist. Jedoch werden bei den oben angegebenen Beispielen Monitore als Attribut-Bits unterhalten, die an Cache-Zeilen angefügt sind oder auf andere Weise direkt mit Cache-Zeilen verbunden sind, während der gepufferte Kohärenz-Zustand zu Cache-Zeilen-Kohärenz-Zustands-Bits hinzugefügt wird. Folglich sind in diesem Fall Hardware Monitore und gepufferte Kohärenz-Zustände Teil der Cache-Zeilen-Struktur, die nicht in einem getrennten metaphysikalischen Addressraum gehalten wird, wie die veranschaulichten Metadaten
Verlustbehaftete MetadatenLossy metadata
Ähnlich zur oben geführten Erörterung mit Bezugnahme auf gepufferte Cache-Kohärenzzustände sind Metadaten
Metaphysikalischer AdressraumMetaphysical address space
Wie die veranschaulichte Ausführungsform zeigt, werden Metadaten
Obwohl sich bei diesem Beispiel Metadaten potentiell in Konkurrenz zu Daten für einen Raum im Cache-Speicher befinden, führt die Fähigkeit, Metadaten lokal zu halten, potentiell zu einer effizienten Unterstützung für Metadaten ohne hohe Kosten, um langlebige Metadaten über eine Speicherhierarchie zu verbreiten. Wie sich aus der Annahme dieses Beispiels ergibt, werden diese Metadaten im selben Speicher, d. h. im Speicher
Bei einem 1:1-Verhältnis von Metadaten zu Daten schattet der metaphysikalische Adressraum den Datenadressraum ab, bleibt jedoch orthogonal, wie oben erläutert wurde. Im Gegensatz dazu können, wie nachfolgend erläutert wird, Metadaten mit Bezug zu physikalischen Daten komprimiert werden. In diesem Fall schattet die Größe eines metaphysikalischen Adressraums für Metadaten den Datenadressraum bezüglich der Größe nicht ab, bleibt dennoch orthogonal.At a 1: 1 ratio of metadata to data, the metaphysical address space shadows the data address space, but remains orthogonal, as discussed above. In contrast, as discussed below, metadata related to physical data may be compressed. In this case, the size of a metaphysical address space for metadata does not shade the data address space in size, yet remains orthogonal.
Metaphysikalische AdressübersetzungMetaphysical address translation
In Fortsetzung der Erläuterung metaphysikalischer Adressräume kann jedes beliebige Verfahren zum Übersetzen einer Datenadresse, wie beispielsweise einer Adresse für ein Datenelement
Bei einer anderen Ausführungsform kann eine Instruktion, die durch ihren Op-Code identifiziert ist, potentiell sowohl auf Daten als auch auf Metadaten für eine gegebene Metadatenadresse zugreifen und somit komplexe Operationen durchführen, wie beispielsweise ein konditionales Speichern zu Daten basierend auf Metadaten. Zum Beispiel wird eine Instruktion in eine Test- und Setze-Metadaten-Operation, um Metadaten zu testen und auf einen Wert zu setzen sowie eine zusätzliche Operation dekodiert, um Daten auf einen Wert zu setzen, falls der Test der Metadaten erfolgreich war. Als weiteres Beispiel kann ein Datenelement basierend auf einem Datenlesevorgang von einem Datenspeicher zur passenden Metadatenadresse bewegt werden.In another embodiment, an instruction identified by its op code may potentially access both data and metadata for a given metadata address, thus performing complex operations, such as conditional storage to data based on metadata. For example, an instruction is encoded into a test and set metadata operation to test and set metadata and an additional operation to set data to a value if the metadata test was successful. As another example, a data item may be moved from a data store to the appropriate metadata address based on a data read operation.
Beispiele einer Übersetzung der Datenadresse
Einige wenige spezifische veranschaulichende Beispiele einer Übersetzung einer Datenadresse in eine Metadatenadresse, oder in anderen Worten einer Bestimmung einer Metadatenadresse aus/basierend auf einer Datenadresse, werden nachfolgend beschrieben. (1) Übersetzen einer ersten Adresse in eine zweite Adresse unter Verwendung einer normalen Adressenübersetzung von virtuell in physikalisch und Hinzufügen, Anhängen oder Einbeziehen eines metaphysikalischen Wertes an oder in die Datenadresse, um die Metadatenadresse zu bilden; (2) Nicht-Durchführen einer Adressübersetzung von virtuell in physikalisch der Datenadresse und Hinzufügen, Anfügen oder Einbeziehen eines metaphysikalischen Wertes an oder in die Datenadresse, um die Metadatenadresse zu bilden; (3) Übersetzen einer Datenadresse in eine übersetzte Metadatenadresse unter Verwendung einer metaphysikalischen Übersetzungstabellenlogik, die ebenfalls einen metaphysikalischen Wert umfassen kann, wobei sie nicht notwendiger Weise ein Einbeziehen, Hinzufügen, Anfügen oder Einfügen eines metaphysikalischen Wertes an oder in die übersetzte Metadatenadresse erfordert, um die Metadatenadresse zu bilden. Darüber hinaus kann jede beliebige der zuvor genannten Übersetzungstechniken ein Kompressionsverhältnis von Daten zu Metadaten, um Metadaten für jedes Kompressionsverhältnis getrennt zu speichern, einschließen, d. h. darauf basieren.A few specific illustrative examples of a translation of a data address into a metadata address, or in other words a determination of a metadata address from / based on a data address, are described below. (1) translating a first address to a second address using a normal virtual-to-physical address translation and adding, appending, or including a metaphysical value to or in the data address to form the metadata address; (2) non-performing address translation from virtual to physical to the data address and adding, appending, or incorporating a metaphysical value to or into the data address to form the metadata address; (3) translating a data address into a translated metadata address using metaphysical translation table logic, which may also include a metaphysical value, and does not necessarily require incorporation, addition, append or insertion of a metaphysical value to or into the translated metadata address in order to obtain the metadata address Metadata address form. In addition, any of the aforementioned translation techniques may include a compression ratio of data to metadata to separately store metadata for each compression ratio, i. H. based on it.
Hier kann eine Adresse für eine Übersetzung und/oder Komprimierung modifiziert sein, wie beispielsweise durch Vernachlässigung spezifischer Bits einer Adresse, Entfernen spezifischer Bits einer Adresse, Veränderung der Bit-Bereiche, die bei einer Adresse für eine Auswahl verschiedener Granularitäten von Daten verwendet werden, Übersetzen spezifischer Bits und Hinzufügen oder Ersetzen spezifischer Bits mit Informationen, die zu Metadaten in Beziehung stehen. Die Kompression wird in weiteren Einzelheiten nachfolgend mit Bezugnahme auf
Multiple Metaphysikalische AdressräumeMultiple metaphysical address spaces
Unter Bezugnahme auf
Daher ist es potenziell vorteilhaft zu ermöglichen, dass einzelne Threads der Threads
Zur Veranschaulichung sei angenommen, dass eine Metadatenzugriffsoperation, die mit dem Thread
Aus dem Beispiel lässt sich schließen, dass durch Verwenden der Thread-ID für die Threads
Dennoch kann es bezüglich Instruktionen/Operationen, um auf Metadaten zuzugreifen, bestimmte Situationen geben, in welchen einem Metadatenzugriff von einem Thread ein Zugriff auf Metadaten eines anderen Threads gewährt wird. In anderen Worten kann bei einigen Implementierungen ein Zugriff über PEIDs und/oder MDIDs (wie nachfolgend erörtert wird) vorteilhaft sein. Beispielsweise um zu bestimmen, ob Hardware Konflikte erfasst hat, um Monitor-Metadaten von einem anderen Thread zu prüfen, um zu bestimmen, ob ein zugeordnetes Datenelement durch einen anderen Thread überwacht wird, um Metadaten anderer Threads zu löschen oder um Commit-Bedingungen zu bestimmen, die ein Thread prüfen muss, um Metadaten anderer Threads, die mit dem Datenelement
Hierin wird ein spezifischer Opcode für die Operationen, um auf Metadaten eines anderen Threads zuzugreifen, erkannt und als ein Ergebnis führt die metaphysikalische Übersetzungslogik
Zusätzlich kann jedes Verarbeitungselement
Ein Software-Untersystem umfasst jeden beliebigen auf einem Verarbeitungselement auszuführenden Task oder Code, der einen getrennten metaphysikalischen Adressraum verwenden kann. Als ein veranschaulichendes Beispiel umfassen vier Untersysteme, die mit individuellen metaphysikalischen Adressräumen verbunden sein können, ein transaktionales Laufzeit-Untersystem, ein Garbage-Collection-Laufzeit-Untersystem, ein Speicherschutz-Untersystem und ein Software-Übersetzungs-Untersystem, die auf einem einzelnen Verarbeitungselement ausgeführt werden können. Hierin kann jedes Software-Untersystem zu verschiedenen Zeiten die Steuerung des Verarbeitungselements inne haben. Als ein weiteres Beispiel umfasst ein Software-Untersystem individuelle Transaktionen, die in einem einzelnen Verarbeitungselement ausgeführt werden. Tatsächlich kann es für verschachtelte Transaktionen, die auf demselben Thread ausführen, erstrebenswert sein, mit getrennten metaphysikalischen Adressräumen verbunden zu sein. Zur Veranschaulichung ist es, wenn ein Filtertest für einen Zugriff auf ein Datenelement in einer äußeren Transaktion fehlschlägt, immer noch potenziell vorteilhaft einen zweiten, unterschiedlichen Filter für einen Zugriff auf dasselbe Datenelement in einer inneren verschachtelten Transaktion vorzusehen, die getrennt Erfolg haben kann, um den Zugriff innerhalb der inneren Transaktion zu beschleunigen. Darüber hinaus ist zur Sicherstellung, dass die Metadaten für die äußere Transaktion beibehalten werden, wenn eine verschachtelte innere Transaktion abbricht, jede verschachtelte Transaktion – Untersystem – mit einem verschiedenen Metadatenraum verbunden, so dass ein Löschen der Metadaten der inneren verschachtelten Transaktion nicht die Metadaten der äußeren Transaktion beeinträchtigt. Jedoch ist ein Software-Untersystem nicht in dieser Weise beschränkt, da jeder beliebige Task oder Code in der Lage sein kann, Metadaten zu verwalten.A software subsystem includes any task or code to be executed on a processing element that can use a separate metaphysical address space. As an illustrative example, four subsystems that may be associated with individual metaphysical address spaces include a transactional runtime subsystem, a garbage collection runtime subsystem, a memory protection subsystem and a software translation subsystem that can be executed on a single processing element. Herein, each software subsystem may have control of the processing element at different times. As another example, a software subsystem includes individual transactions executed in a single processing element. In fact, for nested transactions running on the same thread, it may be desirable to be connected to separate metaphysical address spaces. By way of illustration, if a filter test fails to access a data item in an outer transaction, it is still potentially advantageous to provide a second, different filter for accessing the same data item in an inner nested transaction that may succeed separately Accelerate access within the inner transaction. Moreover, to ensure that the metadata for the outer transaction is maintained when a nested inner transaction aborts, each nested transaction - subsystem - is associated with a different metadata space so that deleting the metadata of the inner nested transaction does not compromise the metadata of the outer Transaction impaired. However, a software subsystem is not limited in this way, as any task or code may be able to manage metadata.
Bei einer Auführungsform wird zur Gewährleistung orthogonaler metaphysikalischer Adressräume auf der Ebene des Software-Untersystems die Adresse mit der ID des Verarbeitungselements (PEIPD), wie oben erläutert wurde, und zusätzlich mit einer Metadaten-ID (MDID) oder einer Context-ID kombiniert. Daher können getrennte Metadaten eindeutig für ein Untersystem in einem Verarbeitungselement identifiziert werden. Unter Verwendung eines Beispiels von oben sei angenommen, dass die Verarbeitungselemente
Als ein rein veranschaulichendes Beispiel umfassen Metadaten
Hier kann der einzige Unterschied zwischen der Metadatenadresse, welche auf die Metadaten
Man beachte, dass die Metadaten-ID (MDID), um metaphysikalische Adressräume von Software-Untersystemen zu trennen, jede beliebige Größe aufweisen kann und von einer Vielzahl von Quellen kommen kann. Als ein stark vereinfachtes veranschaulichendes Beispiel mit vier Verarbeitungselementen (PEs)
Jedoch können sowohl Thread-IDs und MDIDs komplexer sein. Beispielsweise sei angenommen, dass sich die Threads
Als ein besonderes veranschaulichendes Beispiel wird eine Erörterung einer speziellen Form eines MDCR einbezogen. Bei einigen Ausführungsformen kann eine ISA mit einem Pro-Thread Metadatenidentifiziererregister (MDID-Register) erweitert werden, welches ein MDID mit MDID-sensitiven Metadaten-Lade/Speicher/Test/Setz-Instruktionen belegt. Bei einigen Ausführungsformen ist es zweckdienlich, über eine Mehrzahl derartiger Register zu verfügen. Beispielsweise MDCR: Metadaten-Steuer-Register ist ein 32-Bit-Lese-Schreibregister, das die momentane Metadatenkontext-ID (MDID) enthält. Es kann durch ein CR MOV aktualisiert werden. Beispielhafte Bit-Felddefinitionen sind wie folgt: Tabelle A. Beispielhafte Ausführungsform von Bits für MDCR As a particular illustrative example, a discussion of a specific form of MDCR is included. In some embodiments, an ISA may be extended with a per-thread metadata identifier register (MDID register) that populates an MDID with MDID-sensitive metadata load / store / test / set instructions. In some embodiments, it is convenient to have a plurality of such registers. For example, MDCR: metadata control register is a 32-bit read-write register containing the current metadata context ID (MDID). It can be updated by a CR MOV. Exemplary bit field definitions are as follows: Table A. Exemplary embodiment of bits for MDCR
MDID 0 und MDID 1 sind die Metadaten-IDs, auf die durch den Instruktionssatz zeitgleich zugegriffen werden kann. Die Anzahl der Bits, die aus diesen Feldern tatsächlich verwendet wird, ist MDID_SIZE, was bei einer Ausführungsform auf einer Berechtigungsebene, die durch den Aufbau des Prozessors spezifiziert ist, lediglich gelesen wird. Jedoch können bei anderen Ausführungsformen Privilegienebenen unterschiedlicher Ebenen dazu in der Lage sein, die Größe zu modifizieren. Es ist denkbar, dann keine Hardware-Überprüfungen vorhanden sind, die sicherstellen, dass das MDID in die Bitgrößenzuweisung passt. Bei einer Ausführungsform sind MDID 0 und MDID 1 dazu eingerichtet, auf jeder Berechtigungsebene geschrieben und gelesen zu werden. Es ist auch möglich, spezielle MDID-Werte zu verwenden, um spezielle Metadatenräume zu bezeichnen, die immer als 0 oder 1 gelesen werden.
Dies kann von Software dazu verwendet werden, auf eine ähnliche Weise wie die Erläuterung eines Registers mit Bezugnahme auf
Jedoch ist bei einem anderen Beispiel, das oben erläutert worden, eine metaphysikalische Übersetzungslogik
Komprimierung von Metadaten zu DatenCompress metadata to data
Oben wurde eine 1-zu-1-Abbildung von Daten auf Metadaten – nicht komprimierte Metadaten – erläutert. Jedoch ist es unter gewissen Umständen effizienter, eine geringere Menge an Metadaten im Vergleich zu Daten zu verwenden – eine Kompression von Metadaten, wobei die Größe der Metadaten geringer ist als die der Daten. Man beachte, dass die metaphysikalische Adresseübersetzungslogik
Beispielsweise könnte eine Datenadresse nicht um log2(N) verschoben werden, sondern könnten Adress-Bits 0:2 auf 0 gestellt werden. Als Ergebnis werden Bits der physikalischen Adresse und der virtuellen Adresse, die dieselben sind, nicht verschoben wie bei dem oben gezeigten Beispiel, wodurch eine Vorauswahl einer Gruppe und einer Bank mit nicht modifizierten Bits, wie beispielsweise Bits 11:3. ermöglicht wird.For example, a data address could not be shifted by log 2 (N), but address bits 0: 2 could be set to 0. As a result, bits of the physical address and the virtual address that are the same are not shifted as in the example shown above, thereby preselecting a group and a bank of unmodified bits, such as bits 11: 3. is possible.
Man beachte, dass die Erörterung hinsichtlich der Übersetzung mit der Komprimierung kombiniert werden kann. Mit anderen Worten kann ein Komprimierungsverhältnis eine Eingabe in die metaphysikalische Adressübersetzungslogik
Man beachte, dass ein Kompressionsverhältnis von acht rein veranschaulichend angegeben wurde und jedes beliebige Kompressionsverhältnis verwendet werden kann. Als ein weiteres Beispiel wird ein Kompressionsverhältnis von 512:1 verwendet – ein Bit von Metadaten entspricht 64 Bytes an Daten. Ähnlich zu dem obigen wird eine Datenadresse übersetzt/modifiziert, um durch Verschieben der Datenadresse um log2(512) Bits – 9 Bits abwärts eine Metadatenadresse zu bilden. Hierbei werden die Bits 6:8 noch immer anstelle von Bits 0:2 dazu verwendet, um ein Bit zu wählen, wodurch effektiv die Kompression durch Auswahl bei einer Granularität von 512 Bits erzeugt wird. Da die Datenadresse um 9 Bits verschoben wurde, hat der Teil höherer Ordnung der Datenadresse neun offene Bit-Stellen, um Information zu erhalten. Bei einer Ausführungsform sind die 9 Bits dazu vorgesehen, Identifizierer zu erhalten, wie beispielsweise eine Kontext-ID, Thread-ID und/oder MDID. Zusätzlich können in diesen Bits auch Werte des metaphysikalischen Raums gehalten werden oder die Adresse kann durch den metaphysikalischen Wert erweitert werden.Note that a compression ratio of eight has been given purely illustrative and any compression ratio can be used. As another example, a compression ratio of 512: 1 is used - one bit of metadata corresponds to 64 bytes of data. Similar to the above, a data address is translated / modified to be shifted by shifting the data address by log 2 (512). Bits - 9 bits down to form a metadata address. Here, bits 6: 8 are still used instead of bits 0: 2 to select a bit, effectively producing the compression by selection at a granularity of 512 bits. Since the data address has been shifted by 9 bits, the higher order part of the data address has nine open bit positions to obtain information. In one embodiment, the 9 bits are provided to obtain identifiers, such as a context ID, thread ID, and / or MDID. In addition, values of the metaphysical space can also be kept in these bits, or the address can be extended by the metaphysical value.
Bei einer Ausführungsform werden mehrere gleichzeitige Kompressionsverhältnisse durch Hardware unterstützt. Hierin wird eine Darstellung eines Kompressionsverhältnisses als Teil eines metaphysikalischen Wertes kombiniert mit einer Datenadresse gehalten, um eine Metadatenadresse zu erhalten. Als ein Resultat wird während einer Suche eines Speichers mit der Datenadresse das Kompressionsverhältnis berücksichtigt und passt nicht mit Adressen verschiedener Kompressionsverhältnisse zusammen. Darüber hinaus kann die Software dazu geeignet sein, auf Hardware angewiesen zu sein, um Speicherinformationen nicht zu Ladungen eines anderen Kompressionsverhältnisses zu schicken.In one embodiment, multiple concurrent compression ratios are supported by hardware. Herein, a representation of a compression ratio as part of a metaphysical value combined with a data address is held to obtain a metadata address. As a result, during a search of a memory with the data address, the compression ratio is taken into account and does not match with addresses of different compression ratios. In addition, the software may be capable of relying on hardware so as not to send memory information to charges of a different compression ratio.
Bei einer Ausführungsform wird Hardware unter Verwendung eines einzelnen Kompressionsverhältnisses implementiert, wobei sie jedoch eine andere Hardwareunterstützung umfasst, um Software mehrere Kompressionsverhältnisse darzulegen. Als ein Beispiel sei angenommen, dass eine Cache-Hardware unter Verwendung eines Kompressionsverhältnisses von 8:1 implementiert ist, wie in
Als eine Darstellung wird in einem Schema, das Metadaten für nicht ausgerichtete Daten für ein Bit von Metadaten pro Byte an Daten unterstützt, ein einzelnes Bit aus den niedrigstwertigen acht Bits der 32 gelesenen Bits von Metadaten basierend auf den drei LSBs einer Metadatenadresse gewählt. Für ein Datenwort werden zwei aufeinanderfolgende Metadatenbits aus den niedrigst-wertigen 16 Bits der 32 Bits gelesener Metadaten basierend auf den drei LSBs der Adresse gewählt und dies wird bis zu 16 Bits für eine Metadatengröße von 128 Bits fortgesetzt.As an illustration, in a scheme supporting metadata for unaligned data for one bit of metadata per byte of data, a single bit is selected from the least significant eight bits of the 32 read bits of metadata based on the three LSBs of a metadata address. For a data word, two consecutive metadata bits are selected from the least significant 16 bits of the 32 bits of read metadata based on the three LSBs of the address, and this continues for up to 16 bits for a metadata size of 128 bits.
Metadaten-Zugriffs-Instruktionen/OperationenMetadata access instructions / operations
Im Folgenden wird mit Bezugnahme auf
Beim Fluss
Jedoch sind die Metadaten-Zugriffs-Operationen nicht auf explizite Software-Instruktionen zum Zugriff auf Metadaten beschränkt, sondern können auch implizite Mikro-Operationen umfassen, die als Teil einer größeren, komplexeren Instruktion dekodiert werden, die einen Zugriff auf ein Datenelement umfasst, dass mit Metadaten verbunden ist. Hier kann die Daten-Zugriffs-Instruktion in eine Mehrzahl von Operationen dekodiert werden, wie beispielsweise einen Zugriff auf das Datenelement und ein implizites Update der zugeordneten Metadaten.However, the metadata access operations are not limited to explicit software instructions for accessing metadata, but may also include implicit micro-operations that are decoded as part of a larger, more complex instruction that includes access to a data item that includes Metadata is connected. Here, the data access instruction may be decoded into a plurality of operations such as access to the data item and an implicit update of the associated metadata.
Wie zuvor erläutert wurde, ist bei einer Ausführungsform das physikalische Mapping von Metadaten auf Daten in Hardware nicht direkt für Software sichtbar. Als ein Ergebnis verweisen Metadaten-Zugriffs-Operationen in diesem Beispiel auf Datenadressen und stützen sich auf die Hardware, um die richtigen Übersetzungen durchzuführen, d. h. Mapping, um auf die Metadaten geeignet zuzugreifen. Dennoch können Metadaten-Zugriffs-Operationen, abhängig davon, von welchem Thread, Kontext und/oder Software-Untersystem sie stammen, individuell auf getrennte metaphysikalische Adressräume verweisen. Daher kann ein Speicher Metadaten für Datenelemente in einer bezüglich der Software transparenten Art halten. Wenn die Hardware entweder durch einen expliziten Operationscode (Opcode einer Instruktion) oder durch Dekodieren einer Instruktion in eine Metadaten-Zugriffs-Mikro-Operationen) eine Zugriffs-Operation auf Metadaten erfasst, führt die Hardware die erforderliche Übersetzung der Datenadresse durch, auf die durch die Zugriffsoperation verwiesen wurde, um auf die Metadaten entsprechend zuzugreifen.As previously discussed, in one embodiment, the physical mapping of metadata to data in hardware is not directly visible to software. As a result, in this example metadata access operations point to data addresses and rely on the hardware to perform the correct translations, i. H. Mapping to properly access the metadata. However, metadata access operations may individually refer to separate metaphysical address spaces, depending on which thread, context, and / or software subsystem they originate from. Therefore, a memory may hold metadata for data items in a software transparent manner. If the hardware detects either an explicit operation code (opcode of an instruction) or by decoding an instruction into a metadata access micro-operations) an access operation on metadata, the hardware performs the required translation of the data address pointed to by the Access operation was referenced to access the metadata accordingly.
Wie dieses Beispiel veranschaulicht, kann ein Programm getrennte Operationen, wie beispielsweise eine Daten-Zugriffs-Operation oder eine Metadaten-Zugriffs-Operation umfassen, die auf dieselbe Adresse eines Datenelements verweisen, wie beispielsweise Datenelemente
Metadaten-Bit-Test und Setzen (MDLT)Metadata Bit Test and Set (MDLT)
Die Metadaten-Lade- und Test-Instruktion (MDLT) hat zwei Argumente: Die Datenadresse, mit welcher die Metadaten verbunden sind als ein Quell-Operand und ein Register (Ziel-Operand), in welches das Byte, Word, dWord, qWord oder eine andere Größe von Metadaten, die das Bit enthalten, geschrieben wird. Der Wert des getesteten Metadaten-Bits wird in das Register geschrieben. Der Programmierer sollte nicht von irgendeiner Kenntnis der Daten, die im Zielregister der MDLT-Instruktion gespeichert werden, ausgehen und sollte dieses Register nicht manipulieren. Dieses Register soll einzig als ein Quell-Operand für eine Metadaten-Speicher- und -Setze-Instruktion (MDSS) zur selben Adresse verwendet werden. Bei einer Ausführungsform wird die MDLT-Instruktion die Test- und -Setze-Operationen kombinieren, wird jedoch die Setze-Operation unterdrücken, falls der Test erfolgreich ist.The metadata load and test instruction (MDLT) has two arguments: the data address to which the metadata is associated as a source operand and a register (destination operand) into which the byte, word, dword, qword or another size of metadata that contains the bit is written. The value of the tested metadata bit is written to the register. The programmer should not assume any knowledge of the data stored in the destination register of the MDLT instruction and should not manipulate that register. This register is to be used solely as a source operand for a Metadata Store and Set Instruction (MDSS) to the same address. In one embodiment, the MDLT instruction will combine the test and set operations, but will suppress the set operation if the test is successful.
Metadaten-Speicher und Setzen (MSS)Metadata Store and Set (MSS)
Die Metadaten-Speicher- und -Setze-Instruktion (MDSS) hat zwei Argumente: Die Metadatenadresse, mit welchen die Metadaten verbunden sind, und ein Register (Quell-Operand) aus dem das Byte, Word, dWord, qWord oder eine andere Größe von Metadaten, die das Bit enthalten, zur Speicherung gespeichert werden soll. Die MDSS-Instruktion wird das korrekte Bit im Wert aus seinem Quell-Operanden setzen.The Metadata Store and Set Instruction (MDSS) has two arguments: the metadata address to which the metadata is associated and a register (source operand) from which the byte, word, dWord, qWord, or any other size of Metadata containing the bit should be stored for storage. The MDSS instruction will set the correct bit in value out of its source operand.
Metadaten-Speicher- und Reset-Instruktion (MDSR)Metadata Storage and Reset Instruction (MDSR)
Die MDSR-Instruktion hat zwei Quell-Argumente: Die Datenadresse, mit welcher die Metadaten verbunden sind, als ein Quell-Operand und ein Register (Quelloperand), aus dem das Byte, Word, dWord, qWord oder eine andere Größe von Metadaten, die das Bit enthalten, zurückzusetzen ist. Die MDSR-Instruktion wird das richtige Bit im Wert von seinem Quell-Operanden zurücksetzen.The MDSR instruction has two source arguments: the data address to which the metadata is associated, as a source operand, and a register (source operand) that makes up the byte, word, dWord, qWord, or any other size of metadata contain the bit to reset. The MDSR instruction will reset the correct bit in value from its source operand.
Eine Metadatenadresse wird aus der referenzierten Datenadresse bestimmt. Beispiele einer Bestimmung einer Metadatenadresse sind oben in den Abschnitten zur metaphysikalisehen Adressübersetzung und den multiplen metaphysikalischen Adressräumen enthalten. Jedoch ist zu beachten, dass die Übersetzung ein Kompressionsverhältnis von Daten zu Metadaten umfassen kann, d. h. darauf basieren kann, um Metadaten für jedes Kompressionsverhältnis getrennt zu speichern.A metadata address is determined from the referenced data address. Examples of a metadata address determination are in the metaphysical address translation sections above contain the multiple metaphysical address spaces. However, it should be noted that the translation may include, ie, be based on, a compression ratio of data to metadata to separately store metadata for each compression ratio.
Test-Metadaten (CMDT)Test Metadata (CMDT)
Tabelle B: Erläuternde Ausführungsform einer Test-Metadaten-Operation Table B: Illustrative Embodiment of a Test Metadata Operation
Die CMDT-Instruktion soll die Speicherdatenadresse in eine Speicher-Metadatenadresse mit einer komprimierten Mapping-Funktion konvertieren, die implementierungsabhängig ist, und soll testen, ob ein Metadaten-Bit entsprechend der Speicher-Metadatenadresse gesetzt ist. Als ein Beispiel ist das Kompressionsverhältnis CR ein Bit für acht Bytes. Die Metadatenadress-Berechnung umfasst eine der Kontext-IDs vorn MDCR-Register, um ein eindeutiges Setzen von MD für jede individuelle Kontext-ID zu gewährleisten, wobei MDBLK[CR][MDCR.MDID[MDID number]].META adressiert wird. Die Instruktion richtet die Adresse „mem” mit der spezifizierten Datengröße aus, und verstärkt somit die Ausrichtung. Die Instruktion testet, ob Metadata gesetzt ist.The CMDT instruction is to convert the memory data address to a memory metadata address having a compressed mapping function that is implementation-dependent and to test whether a metadata bit corresponding to the memory metadata address is set. As an example, the compression ratio CR is one bit for eight bytes. The metadata address calculation includes one of the MDCR register context IDs to ensure uniquely setting MD for each individual context ID, addressing MDBLK [CR] [MDCR.MDID [MDID number]]. META. The instruction aligns the address "mem" with the specified data size, thus enhancing alignment. The instruction tests if metadata is set.
Nachfolgend ist ein beispielhafter Pseudo-Code mit Bezug zu CDMT eingefügt (Das ZF-Flag ist gesetzt, um einen Null-Metadaten-Wert zu repräsentieren. Alle anderen Flags sind gelöscht): The following is an exemplary pseudo code related to CDMT (The IF flag is set to represent a zero metadata value, all other flags are cleared):
Speicher für komprimierte Metadaten (CMDS)Memory for compressed metadata (CMDS)
Tabelle C: Erläuternde Ausführungsform einer Metadaten-Speicher-Operation Table C: Illustrative Embodiment of a Metadata Store Operation
Die CMDS-Instruktion konvertiert die Speicher-Datenadresse in eine Speicher-Metadatenadresse mit einer komprimierten Mapping-Funktion, die implementierungsabhängig ist. Das Kompressionsverhältnis ist ein Bit für 8 Bytes von Daten. Die Kodierung des imm8-Wertes ist wie folgt: 0 → MD_Value; Value speichern in MD und 7:1 → Reserved; Not Used Unten ist ein beispielhafter mit CMDS verbundener pseudo-Code enthalten.The CMDS instruction converts the memory data address into a memory metadata address with a compressed mapping function that is implementation-dependent. The compression ratio is one bit for 8 bytes of data. The coding of the imm8 value is as follows: 0 → MD_Value; Save value in MD and 7: 1 → Reserved; Not Used Below is an exemplary pseudo-code associated with CMDS.
Löschen komprimierter Metadaten (CMDCLR)Delete Compressed Metadata (CMDCLR)
Tabelle D: Erläuternde Ausführungsform der Lösche-Metadaten-Operation Table D: Illustrative Embodiment of the Delete Metadata Operation
Die CMDCLR-Instruktion setzt alle MDBLK[CR][MDCR.MDID[MDID number]].META die beliebigen Daten im Bereich entsprechen, der MBLK (mem) überspannt. Ein beispielhafter pseudo-Code mit Bezug zu CMDCLR ist nachfolgend eingefügt: The CMDCLR instruction sets all MDBLK [CR] [MDCR.MDID [MDID number]]. META will match any data in the range that spans MBLK (mem). An exemplary pseudo code related to CMDCLR is inserted below:
Als nächstes wird im Fluss
Darüber hinaus wird bei einigen Beispielen, wie oben erläutert wurde, eine Version der Test-, Set-, Clear- oder anderer Instruktionen bereitgestellt, um einem Thread- oder Metadaten-Kontext zu ermöglichen Metadaten anderer Threads oder Metadaten-Kontexte zu testen, setzten oder zu löschen. Als ein Ergebnis kann die Übersetzung in eine Metadatenadresse eine Modifizierung der Adresse umfassen, wie beispielsweise eine Anwendung einer Maske, um den Zugriff von einem Thread oder einer Kontext-ID zuzulassen, um auf einen anderen Thread oder Kontext-ID zuzugreifen.Additionally, in some examples, as discussed above, a version of the test, set, clear, or other instructions is provided to allow a thread or metadata context to test, set, or test metadata of other threads or metadata contexts to delete. As a result, the translation into a metadata address may include a modification of the address, such as an application of a mask to allow access from a thread or context ID to access another thread or context ID.
Im Fluss
Abstraktionenabstractions
Eine Ausführungsform von Abstraktionen für Software ist hierin enthalten. Ein gegebenes CR ist eine Potenz von zwei, die angibt, wie viele Daten-Bits auf ein Bit von Metadaten abbilden. Durch die Implementierung wird definiert, welche CRs-Werte, falls es solche gibt, verwendet werden können. CR > 1 bezeichnet komprimierte Metadaten. CR = 1 bezeichnet unkomprimierte Metadaten.One embodiment of abstractions for software is included herein. A given CR is a power of two that indicates how many bits of data map to one bit of metadata. The implementation defines which CRs values, if any, can be used. CR> 1 refers to compressed metadata. CR = 1 denotes uncompressed metadata.
MDBLK[CR][*]s sind ceil(CR/8) Bytes groß und sind natürlich ausgerichtet. MDBLKs sind mit physikalischen Daten und nicht ihren linearen, virtuellen Adressen verbunden. Alle gültigen physikalischen Adressen A mit demselben Wert floor(A/MDBLK[CR][*]_SIZE) bezeichnen dieselben Sätze von MDBLKs.MDBLK [CR] [*] s are ceil (CR / 8) bytes in size and are naturally aligned. MDBLKs are connected to physical data rather than their linear virtual addresses. All valid physical addresses A with the same value floor (A / MDBLK [CR] [*] _ SIZE) denote the same sets of MDBLKs.
Für ein gegebenes CR kann es eine beliebige Anzahl von verschiedenen MDIDs geben, wovon jeder ein eindeutiges Metadaten-Exemplar bezeichnet. Die Metadaten für ein gegebenes CR und MDID ist von den Metadaten für jedes beliebige andere CR oder MDID verscheiden. Beispielsweise für Thd#0 ist unter der Annahme, dass addr QWORD-ausgerichtet ist, der Metadatenblock auf den durch MDBLK[CR=64][MDID=3](addr) Bezug genommen wird, derselbe wie MDBLK[CR=64][MDID=3](addr+7), ist jedoch sicherlich verschieden von MDBLK[CR=64][MDID=4](addr) und von MDBLK[CR=512][MDID=3](addr).For a given CR, there can be any number of different MDIDs, each designating a unique metadata instance. The metadata for a given CR and MDID is different from the metadata for any other CR or MDID. For example, for
Eine gegebene Implementierung kann mehrere übereinstimmende Kontexte unterstützen, wobei die Anzahl von Kontexten von der CR und bestimmten Konfigurationsinformationen abhängt, die mit dem spezifischen System verbunden sind, dessen Teile der Prozessor bildet. Für unkomprimierte Metadaten existiert ein QWORD von Metadaten für jedes QWORD physikalischer Daten. A given implementation may support multiple matching contexts, with the number of contexts depending on the CR and certain configuration information associated with the specific system whose parts are the processor. For uncompressed metadata, there is a QWORD of metadata for each QWORD of physical data.
Metadaten werden ausschließlich durch Software interpretiert. Software kann META für ein spezielles MDBLK[CR][MDID]setzten, zurücksetzten oder testen, oder META für alle MDBLK[*][*]s des Threads zurücksetzten oder META für alle MDBLKs[CR][MDID] des Threads zurücksetzten, die ein gegebenes MBLK(addr) kreuzen können.Metadata are interpreted exclusively by software. Software may set, reset, or test META for a particular MDBLK [CR] [MDID], or reset META for all MDBLK [*] [*] s of the thread, or reset META for all MDBLKs [CR] [MDID] of the thread can cross a given MBLK (addr).
Metadaten-Verlust. Jede beliebige META-Eigenschaft des Threads kann spontan auf 0 zurücksetzen, wodurch ein Metadata Loss Event erzeugt wird.Metadata loss. Any META property of the thread can spontaneously reset to 0, creating a metadata loss event.
Erzwungener MetadatenwertForced metadata value
Unter Bezugnahme auf
Häufig verursachen jedoch nachfolgende Zugriffe auf dasselbe Datenelement in einer Transaktion jedes Mal wenn der Zugriff auf das Datenelement angetroffen wird den Aufwand einer Ausführung einer zugeordneten transaktionalen Barriere. Zur Veranschaulichung werden drei Schreibvorgänge zur Adresse A in einer Transaktion durchgeführt, was bei diesem Szenario zu einer dreimaligen getrennten Ausführung einer Schreibbarriere führt, um eine Schreibverriegelung für die Adresse A zu erlangen. Jedoch wurde die Verriegelung für die Adresse A bereits durch die Ausführung einer Schreibbarriere beim ersten transaktionalen Schreiben erlangt und die nachfolgenden beiden Ausführungen der Schreibbarrieren vor den letzten beiden transaktionalen Schreibvorgängen sind überflüssig – die Verriegelung auf die Adresse A muss nicht wiedererlangt werden.Often, however, subsequent accesses to the same data item in a transaction each time the access to the data item is encountered causes the overhead of executing an associated transactional barrier. By way of illustration, three writes to address A are performed in one transaction, resulting in a write-barrier three times apart in this scenario to obtain a write lock for address A. However, the lock for address A has already been obtained by performing a write barrier on the first transactional write, and the subsequent two executions of write barriers prior to the last two transactional writes are redundant - the lock on address A need not be recovered.
Daher hält bei einer Ausführungsform die Hardware einen Filterwert, um eine mit diesen Barrieren verbundene Ausführung zu beschleunigen. Der Filterwert kann in einem Cache, wie beispielsweise die Lese- und Schreibmonitore, als ein Anmerkungs-Bit enthalten sein oder kann an einem Metadaten-Ort in einem metaphysikalischen Adressraum gehalten werden, wie zuvor beschrieben wurde. Unter Verwendung des Beispiels von oben wird beim ersten Antreffen der Schreibbarriere ein Schreibfilterwert von einem nicht zugegriffenen Wert auf einen zugegriffenen Wert aktualisiert, um anzuzeigen, dass eine Schreibbarriere für die Adresse A bereits innerhalb der Transaktion angetroffen wurde. Daher wird bei den nachfolgenden beiden transaktionalen Schreiboperationen innerhalb der Transaktion der Schreibfilterwert vor einem Vectoring zur Schreibbarriere für die Adresse A geprüft. Hier umfasst der Filterwert einen zugegriffenen Wert, der anzeigt, dass die Schreibbarriere nicht ausgeführt werden muss – die Schreibbarriere wurde bereits innerhalb der Transaktion ausgeführt. Als ein Ergebnis wird die Ausführung zumindest für die letzten beiden Schreiboperationen nicht zur Schreibbarriere Vektor-geführt. Mit anderen Worten beschleunigt der Filterwert die transaktionale Ausführung – lässt die Ausführung der Schreibbarriere für die zumindest zwei Zugriffe im Vergleich zum vorherigen Beispiel ohne Verwendung eines Filters aus oder schließt die Ausführung nicht ein.Thus, in one embodiment, the hardware maintains a filter value to speed up an implementation associated with these barriers. The filter value may be included in a cache, such as the read and write monitors, as an annotation bit, or may be held at a metadata location in a metaphysical address space, as previously described. Using the example above, the first time the write barrier encounters, a write filter value is updated from an un-accessed value to an accessed value to indicate that a write barrier to address A has already been encountered within the transaction. Therefore, in the subsequent two transactional writes within the transaction, the write filter value is checked before vectoring to the write barrier for address A. Here, the filter value includes an accessed value indicating that the write barrier does not need to be executed - the write barrier has already been executed within the transaction. As a result, the execution is not vectored to the write barrier for at least the last two write operations. In other words, the filter value speeds up the transactional execution - omits or does not include execution of the write barrier for the at least two accesses compared to the previous example without using a filter.
Man beachte, dass Lesefilter für Laden/Schreiben, Undo-Filter für Undo-Operationen und sonstige Filter für generische Filteroperationen in derselben Weise verwendet werden können, wie der Schreibfilter oben für Schreib/Speicher-Operationen verwendet wurde.Note that read / write filters, undo filters for undo operations, and other filters for generic filter operations can be used in the same way as the write filter above was used for write / store operations.
Mit transaktionalen Barrieren ebenfalls verbundene Konzepte sind die starke und schwache Atomität, die sich mit der Isolation transaktionaler Operationen von nicht transaktionalen Operationen beschäftigen. Hierin stellt genauso wie transaktionales Schreiben an eine transaktional geladene Speicherstelle einen potenzieller Konflikt darstellt, ein transaktionales Schreiben an eine nicht transaktional geladene Speicherstelle einen potenziellen Konflikt dar, der zu einer Verwendung ungültiger Daten durch die nicht transaktionale Ladeoperation führt. In Systemen mit schwacher Atomität sind bei nicht transaktionalen Operationen keine oder nur minimale Barrieren eingefügt, so dass die Systeme mit schwacher Atomität dem Risiko einer ungültigen Ausführung ausgesetzt sind. Im Gegensatz dazu sind bei System mit starker Atomität auch bei nicht transaktionalen Operationen transaktionale Barrieren eingefügt. Dies gewährleistet einen Schutz und eine Isolierung zwischen transaktionalen und nicht transaktionalen Operationen, was jedoch mit einem Kostenaufwand verbunden ist – den Kosten der Ausführung einer transaktionalen Barriere bei jeder nicht transaktionalen Operation.Concepts also associated with transactional barriers are the strong and weak atomics that deal with the isolation of transactional operations from non-transactional operations. Herein, as well as transactional writing to a transactionally-loaded location represents a potential conflict, a transactional write to a non-transactionally-loaded location represents a potential conflict that results in the non-transactional use of invalid data Loading operation leads. In weak atomic systems, no or minimal barriers are included in non-transactional operations, so the weak atomic systems are at risk of invalid execution. In contrast, in systems with strong atomicity, transactional barriers are also included in non-transactional operations. This ensures protection and isolation between transactional and non-transactional operations, but at a cost - the cost of executing a transactional barrier for each non-transactional operation.
Daher können bei einer Ausführungsform die oben beschriebenen Filter in Kombination mit Barrieren starker Atomität bei nicht transaktionalen Operationen wirksam eingesetzt werden, um verschiedene Betriebsmodi starker und schwacher Atomität zu unterstützen. Zur Veranschaulichung wird eine vereinfachte beispielhafte Ausführungsform in
Eine Test-Metadaten-Operation, um einen Filter zu testen, kann von einer transaktionalen oder nicht transaktionalen Zugriffsoperation stammen. Bei einer Ausführungsform fügt ein Compiler, wenn er einen Anwendungs-Code compiliert, die Test-Filter-Operation inline in den Anwendungs-Code als eine Bedingung zur Ausführung eines Calls zu einer transaktionalen Barriere bei transaktionalen und nicht transaktionalen Zugriffen ein. Daher wird in einer Transaktion die Filteroperation vor einem Call zu einer Barriere ausgeführt und falls sie erfolgreich zurückkommt, wird der Call zur transaktionalen Barriere nicht ausgeführt, wodurch die oben erläuterte Beschleunigung erzielt wird.A test metadata operation to test a filter may be from a transactional or non-transactional access operation. In one embodiment, when compiling an application code, a compiler inserts the test-filter operation inline into the application code as a condition to execute a transactional barrier call on transactional and non-transactional accesses. Therefore, in a transaction, the filter operation is performed prior to a call to a barrier, and if it successfully returns, the call to the transactional barrier is not executed, thereby achieving the acceleration discussed above.
Auch bei nicht transaktionalen Operationen ist die Hardware bei einer Ausführungsform dazu in der Lage, in einem Modus geringer Atomität, wobei transaktionale Barrieren bei nicht transaktionalen Operationen nicht ausgeführt werden, und in einem Modus starker Atomität zu arbeiten, wobei transaktionale Barrieren ausgeführt werden.Even in non-transactional operations, in one embodiment, the hardware is capable of operating in a low atomic mode, where transactional barriers are not performed in non-transactional operations, and in a strong atomic mode, where transactional barriers are executed.
Der Betriebsmodus oder Steuerung
Im Wesentlichen wird in einem Modus niedriger Atomizität ein erzwungener Wert zum Zielregister
Obwohl das Bereitstellen eines erzwungenen oder festen Wertes von einem Steuerregister, wie beispielsweise MDCR
Mit Bezugnahme auf
Im Fluss
Falls der Betriebsmodus transaktional oder nicht transaktional ist und eine starke Atomizität aufweist, wird der von Hardware aufrecht erhaltene Metadatenwert zur Metadatenzugriffsoperation geliefert – der von Hardware aufrecht erhaltene Wert wird in einem Zielregister platziert, das durch die MD-Zugriffsoperation festgelegt ist. Im Gegensatz dazu wird der erzwungene feste MDCR Wert zur MD-Zugriffsoperation anstelle des von Hardware aufrechterhaltenen MD-Wertes geliefert, falls der Betriebsmodus nicht transaktional ist und eine schwache Atomizität aufweist. Folglich sind während des Modus mit starker Atomizität Barrieren beschleunigt oder basieren nicht auf einem von Hardware aufrechterhaltenen MD-Wert, während im Modus mit geringer Atomizität Barrieren basierend auf dem erzwungenen MDCR-Wert beschleunigt sind.If the mode of operation is transactional or non-transactional and has strong atomicity, the metadata value maintained by hardware is provided to the metadata access operation - the hardware maintained value is placed in a destination register specified by the MD access operation. In contrast, if the mode of operation is not transactional and has weak atomicity, the enforced fixed MDCR value is supplied to the MD access operation instead of the hardware-maintained MD value. Thus, during the high atomicity mode, barriers are accelerated or are not based on a hardware-maintained MD value, while in the low-atomic mode, barriers based on the forced MDCR value are accelerated.
Wirkungsvoller Übergang in einem gepufferten und überwachten ZustandEffective transition in a buffered and monitored state
Im Folgenden wird unter Bezugnahme auf
Bei einigen Ausführungsformen ist eine Cache-Zeile gepuffert, jedoch nicht überwacht, was bedeutet, dass die in der Cache-Zeile gehaltenen Daten verlustbehaftet sind und dass die Cache-Zeile betreffende Konflikte nicht erfasst werden, da es keine dafür aufgewendete Überwachung gibt. Beispielsweise können Daten, die bezüglich einer Transaktion lokal sind und die nicht committed werden müssen, wie beispielsweise Metadaten, in einem gepufferten und nicht überwachten Zustand gehalten werden.In some embodiments, a cache line is buffered, but not monitored, which means that the data held in the cache line is lossy and that conflicts concerning the cache line are not detected because there is no dedicated monitoring. For example, data that is local to a transaction and need not be committed, such as metadata, may be kept in a buffered and unmonitored state.
Wenn Konflikte zwischen gepufferten Daten und Schreibvorgängen zur selben Adresse erfasst werden sollen, wird eine Leseüberwachung auf die Daten angewandt. Die Cache-Zeile wird dann in einen gepufferten und leseüberwachten Zustand überführt. Jedoch wird, um in diesen Zustand zu gelangen, eine Leseanfragen zu externen Verarbeitungselementen gesandt die alle anderen Kopien dazu zwingen, in einen gemeinsamen Zustand überzugehen. Diese externen Leseanfragen können zu einem Konflikt mit einem anderen Verarbeitungselement führen, das eine Schreibüberwachung für denselben Block-/dieselbe Cache-Zeile unterhält.When conflicts between buffered data and writes to the same address are to be detected, read-only monitoring is applied to the data. The cache line is then put into a buffered and read-monitored state. However, to get into this state, a read request is sent to external processing elements which forces all other copies to transition to a common state. These external read requests may conflict with another processing element that maintains a write monitor for the same block / same cache line.
In ähnlicher Weise wird eine Schreibüberwachung auf die Cache-Zeile angewandt, wenn Konflikte zwischen den gepufferten Daten und Lesevorgängen zu denselben Speicherblöcken erfasst werden sollen. Die Zeile wird dann in einen gepufferten und schreibüberwachten Zustand überführt, der durch Senden einer Lesen-für-Eigentümerschaft-Anfrage zu einem anderen Verarbeitungselement erreicht wird, das alle anderen Kopien zwingt, in einen ungültigen Zustand überzugehen. In ähnlicher Weise wird ein Konflikt bei jedem beliebigen Verarbeitungselement erfasst, das entweder eine Lese- oder Schreibüberwachung für denselben Speicherblock unterhält.Similarly, write monitoring is applied to the cache line when conflicts between the buffered data and reads at the same memory blocks are to be detected. The line is then placed in a buffered and read-only state, obtained by sending a read-for-ownership request to another processing element, all others Copies force you to enter an invalid state. Similarly, a conflict is detected on any processing element that maintains either read or write control for the same memory block.
Um jedoch transaktionale Konflikte zu minimieren, kann ein Speicherblock, den die Transaktion aktualisieren, jedoch möglicherweise nicht committen muss, im gepufferten, jedoch unüberwachten Zustand unterhalten werden, wie oben beschrieben wurde. Falls jedoch für einen Block, der im gepufferten, jedoch unüberwachten Zustand gehalten ist, bestimmt wird, dass er committed werden muss, wird gemäß einer Ausführungsform ein wirkungsvoller Pfad vom gepufferten und unüberwachten Zustand zu einem commitbaren Zustand vorgesehen, wie in
Als ein Beispiel wird eine gepufferte Aktualisierung für einen Speicherblock – eine Cache-Zeile, um den Block zu halten – im Fluss
Im Fluss
Später wird die Leseüberwachung im Fluss
Folglich ist das Übertragen des gepufferten und nicht überwachten Blocks in einen commitbaren Zustand in zwei Stufen – Fluss
In der nachfolgenden Tabelle E wird eine Ausführungsform sich entgegenstehender Zustande zwischen zwei Verarbeitungselementen veranschaulicht: P0 und P1. Beispielsweise stehen sich eine von P1 in einem gepufferten leseüberwachten Zustand gehaltene Zeile, die durch die R-B-Spalte gekennzeichnet ist, und ein beliebiger Zustand von P0, bei dem die Cache-Zeile mit einer Schreibüberwachung beibehalten wird, wie durch -W, RW-, WB, RWB angezeigt ist, entgegen, wie durch das x in den sich überschneidenden Zellen dargestellt ist. Tabelle E: eine Ausführungsform sich entgegenstehender Zustände zwischen zwei Verarbeitungselementen Table E below illustrates an embodiment of conflicting states between two processing elements: P0 and P1. For example, a row held by P1 in a buffered read-supervised state identified by the RB column and any state of P0 where the cache line is maintained with write-monitoring, such as -W, RW, WB, RWB is displayed, as represented by the x in the intersecting cells. Table E: an embodiment of conflicting states between two processing elements
Zusätzliche zeigt Tabelle F unten einen Verlust eines zugehörigen Eigentums im Verarbeitungselement P1 in Reaktion auf die unter P0 aufgelistete Operation. Falls beispielsweise P1 eine Zeile in einem gepufferten leseüberwachten Zustand hält, wie durch die Spalte R-B angezeigt wird, und entweder eine Speicher- oder Setze-Schreibüberwachungsoperation auf P0 auftritt, verliert P1 sowohl die Leseüberwachung als auch das Puffern der Zeile, wie durch das x-x in der Überschneidung der Speicher/Setze-WM-Reihen und der R-B-Spalte angezeigt wird. Tabelle E: eine Ausführungsform eines Verlustes von Attributen als Ergebnis einer Operation In addition, Table F below shows loss of associated ownership in processing element P1 in response to the operation listed under P0. For example, if P1 holds a row in a buffered read-supervised state, as indicated by column RB, and either a memory or set-write monitoring operation on P0 occurs, P1 loses both read-monitoring and buffering of the row, as indicated by xx in FIG the intersection of the memory / set WM rows and the RB column is displayed. Table E: an embodiment of a loss of attributes as a result of an operation
Verzweigungsinstruktion (JLOSS) für einen Konflikt oder Verlust von transaktionalen Daten Branch instruction (JLOSS) for a conflict or loss of transactional data
Unter Bezugnahme auf
Zusätzlich liefert gemäß einer Ausführungsform Hardware architektonische Schnittstellen, um zu ermöglichen, dass Software auf diese Mechanismen basierend auf dem Status überwachter oder gepufferter Daten zugreifen kann. Zwei derartige Schnittstellen umfassen das Folgende: (1) Instruktionen zum Lesen oder Schreiben eines Statusregisters, die es ermöglichen, dass Software das Register explizit während einer Ausführung abfragt; (2) eine Schnittstelle, die es ermöglicht, dass Software einen Handler einrichtet, der immer dann aufgerufen wird, wenn das Statusregister einen potentiellen Konsistenzverlust anzeigt.Additionally, in one embodiment, hardware provides architectural interfaces to enable software to access these mechanisms based on the status of monitored or buffered data. Two such interfaces include the following: (1) instructions for reading or writing a status register that allow software to explicitly query the register during execution; (2) an interface that allows software to set up a handler that is invoked whenever the status register indicates a potential loss of consistency.
Gemäß einer anderen Ausführungsform unterstützt Hardware eine neue mit JLOSS bezeichnete Instruktion, die eine bedingte Verzweigung basierend auf dem Status von HW-überwachten oder gepufferten Daten ausführt. Die JLOSS-Instruktion verzweigt zu einer Marke, falls die Hardware einen potentiellen Verlust irgendwelcher überwachter oder gepufferter Daten aus dem Cache erfasst oder sie erfasst potentielle Konflikte für beliebige derartige Daten. Eine Marke umfasst irgendein Ziel, wie beispielsweise eine Adresse eines Handlers oder anderen Code, der als Folge eines Datenverlusts oder einer Erfassung eines Konflikts auszuführen ist.In another embodiment, hardware supports a new JLOSS-designated instruction that performs conditional branching based on the status of HW-monitored or buffered data. The JLOSS instruction branches to a tag if the hardware detects a potential loss of any monitored or buffered data from the cache, or it detects potential conflicts for any such data. A tag includes any destination, such as an address of a handler or other code to be executed as a result of data loss or detection of a conflict.
Als eine veranschaulichende Ausführungsform zeigt
Daher testet hierin JLOSS, wenn es erfasst und ausführt wird, die Statusregister-Flags, und, falls dort ein Verlustereignis auftritt – ein Verlust und/oder Konflikt, liefert die Logik
Gemäß einer Ausführungsform fügt Software, wie beispielsweise ein Compiler JLOSS-Instruktionen in den Programmcode ein, um auf Konsistenz abzufragen. Obwohl JLOSS inline mit dem Hauptanwendungscode verwendet werden kann, werden JLOSS-Instruktionen häufig in Lese- und Schreibbarrieren verwendet, um die Konsistenz auf Anfrage zu bestimmen, die häufig in Bibliotheken bereitgestellt werden; daher kann die Ausführung eines Programmcodes einen Compiler umfassen, um JLOSS in Code einzufügen oder eine Ausführung von JLOSS aus dem Programmcode oder jede beliebige andere Form eines Einfügen oder Ausführens einer Instruktion. Es wird erwartet, dass ein Abfragen durch JLOSS viel schneller ist als ein explizites Lesen des Statusregisters, da die JLOSS-Instruktion keine zusätzliche Register erfordert – es besteht keine Notwendigkeit für ein Zielregister, um die Statusinformationen für ein explizites Lesen zu empfangen. Es gibt mehrere Ausführungsformen dieser Instruktion, bei welchen die Bedingungen zum Überprüfen auf Konsistenz entweder explizit in der Instruktion oder implizit in einem getrennten Steuerregister bereitgestellt werden.According to one embodiment, software, such as a compiler, inserts JLOSS instructions into the program code to query for consistency. Although JLOSS can be used inline with the main application code, JLOSS instructions are often used in read and write barriers to determine on demand the consistency that is often provided in libraries; therefore, execution of a program code may include a compiler to insert JLOSS into code, or execution of JLOSS from the program code, or any other form of inserting or executing an instruction. It is expected that querying through JLOSS is much faster than explicitly reading the status register because the JLOSS instruction does not require additional registers - there is no need for a destination register to receive the explicit read status information. There are several embodiments of this instruction in which the conditions for checking for consistency are either explicitly provided in the instruction or implicitly in a separate control register.
Zum Beispiel hält das Transaktionsstaturregister
Der folgende, als Pseudocode A bezeichnete Pseudocode zeigt eine Native-Code-STM-Lesebarriere, die einen konsistenten Lesesatz bereitstellt und JLOSS verwendet. Die setrm(void*address)-Funktion setzt den Lesemonitor auf die gegebene Adresse und die JLOSS_rm0-Funktion ist eine intrinsische Funktion für die JLOSS-Instruktion, die „wahr” zurückgibt, falls sich entgegenstehende Zugriffe auf leseüberwachte Orte aufgetreten sind. Dieser Pseudocode überwacht die geladenen Daten, wobei es jedoch ebenfalls möglich ist, stattdessen die Transaktionsdatensätze (Besitzerdatensätze) zu überwachen. Eine Verwendung einer Instruktion, die ein Setzen des Lesemonitors mit einem Laden der Daten kombiniert, ist möglich – z. B. eine movxm-Instruktion, die die Daten sowohl lädt als auch überwacht. Ebenso ist es möglich, dies in einer Lesebarriere zu verwenden, die ein Filter zusätzlich zur Überwachung durchführt, wie auch dies in einem STM-System zu verwenden, das lediglich eine Hardware-Überwachung für eine Lesesatzvalidierung verwendet – ein STM-System, das keine Software-Leseprotokollierung und keine SW-Validierung ausführt. Pseudo-Code A: ein In-Situ Aktualisierungs-STM, optimistische Lese-, native Code-Barriere The following pseudo code, called Pseudocode A, shows a Native Code STM read barrier that provides a consistent read set and uses JLOSS. The setrm (void * address) function sets the read monitor to the given address and the JLOSS_rm0 function is an intrinsic function for the JLOSS instruction that returns "true" if conflicting accesses to read-monitored locations have occurred. This pseudocode monitors the loaded data, but it is also possible to monitor the transaction records (owner records) instead. It is possible to use an instruction that combines setting the read monitor to load the data - e.g. A movxm instruction that both loads and monitors the data. Likewise, it is possible to use this in a read barrier that performs a filter in addition to monitoring, as well as to use in an STM system that only uses hardware monitoring for read set validation - an STM system that is not software Read-only and no SW validation. Pseudo code A: an in-situ update STM, optimistic reading, native code barrier
In ähnlicher Weise kann ein STM-Sytem, das keine Lese-Satz-Konsistenz beibehält, wie beispielsweise ein STM für verwalteten Code, unendliche Schleifen oder einen anderen unkorrekten Steuerungsfluss vermeiden – Ausnahmen, aufgrund einer Inkonsistenz durch Einfügen einer JLOSS-Instruktion an den Rückkehrschleifen-Rändern oder anderen kritischen Steuerungsflusspunkten, wie beispielsweise Instruktionen, die Ausnahmen verursachen können. Similarly, an STM system that does not maintain read set consistency, such as a managed code STM, infinite loops, or other incorrect control flow, can avoid exceptions due to inconsistency by inserting a JLOSS instruction at the return loop. Borders or other critical control flow points, such as instructions that may cause exceptions.
Der folgende als Pseudocode B bezeichnete Pseudocode zeigt eine andere Native-Code-Lesebarriere, die Konsistenz gewährleistet. Das TM-System dieser Version verwendet Cacheresidente Schreibsets unter Verwendung gepufferter Updates für Schreiben innerhalb von Transaktionen. Ein Lesen von einem zuvor gepufferten und dann verlorengegangenen Ort verursacht eine Inkonsistenz und, um die Konsistenz beizubehalten, vermeidet diese Lesebarriere ein Lesen von irgendeinem verlorengegangenen gepufferten Ort. Das COMMIT_LOCKING-Flag ist wahr, falls das STM eine Commit-Zeitverriegelung für gepufferte Orte verwendet. Die JLOSS_buf0-Überprüfung wird für Lesevorgänge von einem zuvor verriegelten Ort verwendet, wenn keine Commit-Zeit-Verriegelung verwendet wird. Ansonsten wird sie bei allen Lesevorgängen verwendet. Pseudo-Code B: In-situ-Aktualisierung, Native-Code-STM-Lesebarriere The following pseudo-code, called pseudocode B, shows another native-code read barrier that ensures consistency. The TM system of this release uses cacheresidentes writing sets using buffered updates for writing within transactions. Reading from a previously buffered and then lost location causes an inconsistency and, to maintain consistency, this read barrier avoids reading from any lost buffered location. The COMMIT_LOCKING flag is true if the STM uses a buffered-location commit time-out. The JLOSS_buf0 check is used for reads from a previously locked location if no commit time lock is used. Otherwise, it will be used in all reads. Pseudo-code B: in situ update, native code STM reading barrier
TM-Systeme können das Leseüberwachen mit Puffer und Schreib-Überwachen kombinieren, wie oben erläutert wurde, und können somit auch ein Überprüfen auf Konflikte bei entweder überwachten oder gepufferten Zeilen umfassen, um die Konsistenz beizubehalten. Um derartigen Systemen Rechnung zu tragen, können gemäß verschiedenen Ausführungsformen auch JLOSS-Varianten bereit gestellt werden, die auf logischen Kombinationen verschiedener Überwachungs- und Pufferereignisse verzweigen, wie beispielsweise JLOSS.rm.buf (Konflikte an lese-überwachten oder gepufferten Orten), JLOSS.rm.wm (Konflikte an lese- oder schreib-überwachten Orten) oder JLOSS.* (Konflikt an einem lese-überwachten, schreibüberwachten oder gepufferten Ort).TM systems may combine read monitoring with buffering and write monitoring, as discussed above, and thus may include checking for conflicts on either monitored or buffered lines to maintain consistency. To accommodate such systems, various embodiments may also provide JLOSS variants that branch to logical combinations of various monitoring and buffering events, such as JLOSS.rm.buf (conflicts at read-monitored or buffered locations), JLOSS. rm.wm (conflicts at read or write-monitored locations) or JLOSS. * (conflict at a read-only, read-only, or buffered location).
Bei einer anderen Ausführungsform entkoppelt die architektonische Schnittstelle die JLOSS-Instruktion von den Bedingungen unter welchen sie sich verzweigt, indem zugelassen wird, dass Software die Bedingungen – Konflikt bei lese/schreib-überwachten Zeilen oder gepufferten Zeilen – in einem getrennten Steuerregister einstellt. Bei dieser Ausführungsform ist lediglich eine einzelne JLOSS-Instruktion erforderlich, die zukünftige Erweiterungen der Gruppe von Ereignissen, bei welchen JLOSS verzweigen soll, unterstützen kann.In another embodiment, the architectural interface decouples the JLOSS instruction from the conditions under which it branches by allowing software to set conditions - conflict on read / write-monitored rows or buffered rows - in a separate control register. In this embodiment, only a single JLOSS instruction is required, which may support future extensions of the group of events at which JLOSS is to branch.
Mit Bezug zu
Im Fluss
Daher wird sobald die Bedingungen festgelegt sind, entweder vom Steuerregister oder von einem Typ einer JLOSS-Instruktion, bestimmt, ob diese Bedingungen erfüllt wurden. Als ein erstes Beispiel werden Informationen in einem Transaktionsstatusregister, wie beispielsweise TSR
In Reaktion darauf, dass kein Konflikt erfasst wurde, wie beispielsweise wenn ein Leseüberwachungskonflikt-Flag immer noch auf einen Voreinstellungswert in TSR
Hardware-Unterstützung für transaktionalen Speicher-CommitHardware support for transactional storage commit
Wie zuvor erläutert, können Hardware-unterstützte Transaktionen die Verwaltung einer Version der Software durch Puffer transaktionaler Schreibvorgänge im Cache beschleunigen, ohne sie global sichtbar zu machen. In diesem Fall kann eine einfache Commit-Instruktion verwendet werden, die die gepufferten Werte für alle Prozessoren sichtbar macht, jedoch fehlschlägt, falls irgendwelche gepufferten Zeilen verloren gehen. Jedoch kann die Eignung von Hardware auch Metadaten zu halten, welche eine Software zur Beschleunigung verwenden kann, wie beispielsweise einen Filter, um redundante Barrieren zu beseitigen/zu filtern, ein Fehlschlagen einer Commit-Instruktion benötigen, falls Hardware irgendwelche Konflikte erfasst hat. Zusätzlich kann es bei einem Commit wünschenswert sein, verschiedene Kombinationen von Information zu löschen, die in Hardware für eine Transaktion gehalten wird, wie beispielsweise Metadaten, Monitore und gepufferte Zeilen.As discussed above, hardware-assisted transactions can speed the management of a version of the software by buffering transactional writes in the cache without making them globally visible. In this case, a simple commit instruction can be used that makes the buffered values visible to all processors, but fails if any buffered lines are lost. However, the ability of hardware to hold metadata that software may use for acceleration, such as a filter to remove / filter redundant barriers, may require a commit instruction to fail if hardware has detected any conflicts. Additionally, at commit, it may be desirable to delete various combinations of information held in hardware for a transaction, such as metadata, monitors, and buffered rows.
Daher unterstützt bei einer Ausführungsform die Hardware mehrere Formen einer Commit-Instruktion, um zu ermöglichen, dass die Commit-Instruktion sowohl die Bedingungen für den Commit als auch die beim Commit zu löschende Information bestimmen kann. Unter Bezugnahme auf
Wie dargestellt ist, umfasst eine Commit-Instruktion
Bei einer Ausführungsform umfassen beide Teile vier Werte: Leseüberwachung (RM), Schreibüberwachung (WM), Puffern (Buf) und Metadaten (MD). Im Wesentlichen ist, falls ein beliebiger der vier Werte im Abschnitt
TXCOMWMTXCOMWM
Als erstes Beispiel wird eine Txcomwm-Instruktion erörtert. Diese Instruktion beendet die Transaktion und macht alle schreibüberwachten gepufferten Daten allgemein sichtbar, falls keine schreibüberwachten Daten verlorengegangen sind (Erfolg); andererseits hat sie keinen Erfolg, falls schreibüberwachte Daten verlorengegangen sind. Txcomwm setzt ein Flag (oder setzt es zurück), um einen Erfolg (oder einen Fehlschlag) anzuzeigen. Bei einem Erfolg löscht Txcomwm den gepufferten Zustand aller schreibüberwachten Daten. Txcomwm beeinflusst keinen lese- oder schreibüberwachten Zustand, wodurch ermöglicht wird, dass Software diesen Zustand in nachfolgenden Transaktionen erneut verwenden kann. Es beeinflusst auch nicht den Zustand von Orten, die gepuffert, jedoch nicht schreibüberwacht sind, was es ermöglicht, dass Software Informationen, die an derartigen Orten gehalten werden, weiter bestehen lassen kann. Der nachfolgend als Pseudocode C markierte Pseudocode veranschaulicht eine algorithmische Beschreibung von Txcomwm. Wenn TSR.LOSS_WM 0 ist, wird die BF-Eigenschaft aller schreibüberwachten gepufferten BBLKs atomisch gelöscht und alle derartigen gepufferten Daten werden für andere Agenten sichtbar. TCR.IN_TX wird gelöscht. Gepufferte Blöcke, die keinen WM haben, werden nicht beeinflusst und bleiben gepuffert. Das CF-Flag wird bei einer Vervollständigung (Completion) gesetzt. Wenn TSR.LOSS_WM 1 ist, wird das CF-Flag gelöscht und TCR.IN_TX wird gelöscht. Das CF-Flag wird auf 1 gesetzt, falls die Operation erfolgreich war und auf 0 bei einen Misserfolg. Die OF-, SF-, ZF-, AF- und PF-Flags werden auf 0 gesetzt. Pseudocode C: Ausführungsform eines Algorithmus für eine Txcomwm-Operation As a first example, a Txcomwm instruction is discussed. This instruction terminates the transaction and makes all write-monitored buffered data generally visible if no read-only data has been lost (success); On the other hand, it has no success if write-monitored data is lost. Txcomwm sets (or resets) a flag to indicate success (or failure). If successful, Txcomwm clears the buffered state of all read-only data. Txcomwm does not affect a read-only or write-monitored state, which allows software to reuse this state in subsequent transactions. It also does not affect the state of locations that are buffered but not write-monitored, allowing software to continue to hold information held in such locations. The pseudocode marked below as Pseudocode C illustrates an algorithmic description of Txcomwm. If TSR.LOSS_WM is 0, the BF property of all write-monitored buffered BBLKs is atomically cleared and all such buffered data becomes visible to other agents. TCR.IN_TX is deleted. Buffered blocks that have no WM are not affected and remain buffered. The CF flag is set on completion. If TSR.LOSS_WM is 1, the CF flag is cleared and TCR.IN_TX is cleared. The CF flag is set to 1 if the operation was successful and 0 in the case of a failure. The OF, SF, ZF, AF and PF flags are set to 0. Pseudocode C: Embodiment of an algorithm for a Txcomwm operation
Der nachfolgend als Pseudocode D markierte Pseudocode zeigt, wie ein HASTM-System in der Lage ist, die Txcomwm-Instruktion zu verwenden, um eine Transaktion zu committen, die ein Hardware-Schreibpuffern verwendet, um eine undo-Protokollierung in einem in-Situ-aktualisierten STM zu vermeiden. Das CACHE-RESIDENT-WRITES-Flag zeigt diesen Ausführungsmodus an. veranschaulicht eine Ausführungsform, wie ein HASTM Pseudocode D: Ausführungsform eines Pseudocodes zur Verwendung einer TXCOMWM-Instruktion The pseudocode, hereafter referred to as Pseudocode D, shows how a HASTM system is able to use the Txcomwm instruction to commit a transaction that uses a hardware write buffer to perform an undo logging in an in-situ to avoid updated STM. The CACHE-RESIDENT-WRITES flag indicates this execution mode. illustrates an embodiment, such as a HASTM Pseudocode D: Embodiment of a Pseudocode for Using a TXCOMWM Instruction
TXCOMWMRMTXCOMWMRM
Gemäß einer Variante erweitert txcomwmrm die Txcomwm-Instruktion, sodass sie fehlschlägt, falls irgendwelche leseüberwachten Orte ebenfalls verlorengegangen sind. Diese Variante ist für Transaktionen nützlich, die lediglich Hardware verwenden, um lesegesetzte Konflikte zu erfassen. Der unten angegebene als Pseudocode E markierte Pseudocode, veranschaulicht eine algorithmische Beschreibung von Txcomwmrm. Wenn TSR.LOSS_WM und TSR.LOSS_RM 0 sind, wird die BF-Eigenschaft aller schreibüberwachten gepufferten BBLKs atomisch gelöscht und alle derartigen gepufferten Daten werden für andere Agenten sichtbar. TCR.IN_TX wird gelöscht. Gepufferte Blöcke, die keinen WM aufweisen, werden nicht beeinträchtigt und bleiben gepuffert. Das CF-Flag wird bei einer Vervollständigung gesetzt. Wenn TSR.LOSS_WM oder TSR.LOSS_RM 1 ist, wird das CF-Flag gelöscht und TCR.IN_TX wird gelöscht. Das Flag wird auf 1 gesetzt, falls die Operation Erfolg hatte und bei einem Fehlschlag auf 0 gelöscht. Die OF-, SF-, ZF-, AF- und PF-Flags werden auf 0 gesetzt. Pseudocode E: Eine Ausführungsform einer algorithmischen Beschreibung von Txcomwmrm According to one variant, txcomwmrm extends the Txcomwm instruction so that it fails if any read-monitored locations are also lost. This variant is useful for transactions that only use hardware to capture read conflicts. The pseudocode marked pseudo-code E below illustrates an algorithmic description of Txcomwmrm. If TSR.LOSS_WM and TSR.LOSS_RM are 0, the BF property of all write-monitored buffered BBLKs is atomically cleared, and all such buffered data becomes visible to other agents. TCR.IN_TX is deleted. Buffered blocks that have no WM are not affected and remain buffered. The CF flag is set upon completion. If TSR.LOSS_WM or TSR.LOSS_RM is 1, the CF flag is cleared and TCR.IN_TX is cleared. The flag is set to 1 if the operation was successful and cleared to 0 on failure. The OF, SF, ZF, AF and PF flags are set to 0. Pseudocode E: An embodiment of an algorithmic description of Txcomwmrm
Der nächste Pseudocode, Pseudocode F, zeigt den Commit-Algorithmus unter Verwendung der Txcomwmrm-Instruktion für ein STM-System, das Hardware sowohl zum Puffer von transaktionalen Schreibvorgängen als auch zum Erfassen von Lese-Satz-Konflikten verwendet. Das HW_READ_MONITORING-Flag zeigt an, ob der Algorithmus ausschließlich Hardware für eine Lese-Satz-Konflikterfassung verwendet. Pseudocode F: Eine Ausführungsform eines Pseudocodes, der die Txcomwmrm-Instruktion verwendet The next pseudocode, pseudocode F, shows the commit algorithm using the Txcomwmrm instruction for an STM system that uses hardware both to buffer transactional writes and to detect read set conflicts. The HW_READ_MONITORING flag indicates whether the algorithm uses only hardware for a read-set conflict detection. Pseudocode F: An embodiment of a pseudocode that uses the Txcomwmrm instruction
TXCOMWMIRMCTXCOMWMIRMC
Eine dritte Variante wird nachfolgend in der Beschreibung des Algorithmus des Pseudocodes F gezeigt. Wenn TSR.LOSS_WM und TSR.LOSS_IRM 0 sind, wird die BF-Eigenschaft aller schreibüberwachten gepufferten BBLKs atomisch gelöscht und alle derartigen gepufferten Daten werden für andere Agenten sichtbar. RM, WM und IRM sowie TCR.IN_TX werden gelöscht. Gepufferte Blöcke, die kein WM aufweisen, sind nicht betroffen und bleiben gepuffert. Das CF-Flag wird bei der Vervollständigung gesetzt. Wenn TSR_LOSS_WM oder TSR.LOSS_IRM 1 ist, wird das CF-Flag gelöscht und TCR.IN_TX wird gelöscht. Das CF-Flag wird auf 1 gesetzt, falls die Operation Erfolg hatte und auf 0 gelöscht bei einem Fehlschlagen. Die OF-, SF-, ZF-, AF- und PF-Flags werden auf 0 gesetzt. Pseudocode F: Eine Ausführungsform einer algorithmische Beschreibung für eine TX-COMWMIRMC-Instruktion A third variant is shown below in the description of the algorithm of the pseudocode F. If TSR.LOSS_WM and TSR.LOSS_IRM are 0, the BF property of all write-monitored buffered BBLKs is atomically cleared, and all such buffered data becomes visible to other agents. RM, WM and IRM and TCR.IN_TX are deleted. Buffered blocks that have no WM are not affected and remain buffered. The CF flag is set at completion. If TSR_LOSS_WM or TSR.LOSS_IRM is 1, the CF flag is cleared and TCR.IN_TX is cleared. The CF flag is set to 1 if the operation was successful and cleared to 0 on failure. The OF, SF, ZF, AF and PF flags are set to 0. Pseudocode F: An embodiment of an algorithmic description for a TX-COMWMIRMC instruction
Unter Bezugnahme auf
Nachdem die Commit-Instruktion empfangen wurde, sind Decoder in der Lage, die Commit-Instruktion zu decodieren. Aus der decodierten Information werden im Fluss
Optimierte Speicherverwaltung für UTM Optimized memory management for UTM
Wie oben erläutert, erweitern die unbegrenzte transaktionale Speicherarchitektur (UTM) und ihre Hardwareimplementierung die Prozessorarchitektur durch Einführen der folgenden Eigenschaften: Überwachung, Pufferung und Metadaten. Miteinander kombiniert bilden sie für die Software das notwendige Mittel um eine Vielfalt hochentwickelter Algorithmen zu implementieren einschließlich eines breiten Spektrums an transaktionalen Speicherentwürfen. Jede Eigenschaft kann entweder durch Erweitern der bestehenden Cache-Protokolle in der Cache-Implementierung oder durch Zuordnen unabhängiger neuer Hardware-Resourcen als Hardware implementiert werden.As discussed above, the Unlimited Transactional Memory Architecture (UTM) and its hardware implementation extend the processor architecture by introducing the following properties: monitoring, buffering, and metadata. Combined, they provide the software with the necessary tools to implement a variety of advanced algorithms, including a wide range of transactional memory designs. Each property can be implemented either by extending the existing cache protocols in the cache implementation or by allocating independent new hardware resources as hardware.
Wenn die UTM-Eigenschaften mit HW implementiert sind, bieten die UTM-Architektur und ihre Hardware-Implementierungen bei Transaktionen potentiell einen Leistungsschub über eine reine Softwarelösung, falls es möglich ist, Störungen, wie beispielsweise UTM-Transaktionsabbrüche und nachfolgende Transaktionswiederversuchsoperationen effektiv zu vermeiden und zu minimieren. Eine der Hauptursachen für Hardware-Transaktionsabbrüche war durch einen häufigen Ringübergang verursacht, der durch externe Interrupts, System-Call-Ereignisse und Seitenfehler verursacht wurde.When the UTM properties are implemented with HW, the UTM architecture and its hardware implementations potentially provide a performance boost to transactions through a software-only solution, if it is possible to effectively avoid and facilitate disruptions such as UTM transaction aborts and subsequent transaction retry operations minimize. One of the main causes of hardware transaction aborts was a frequent ring transition caused by external interrupts, system call events, and page faults.
Ein Aussetzungsmechanismus, der auf einem momentanen Privileg-Niveau (CPL) basiert, macht eine Hardware-Transaktion aktiv (ermöglicht eine hardwarebeschleunigte Transaktion mit UTM-Eigenschaften, wie beispielsweise Pufferung und Überwachung und ermöglicht den Auswurfmechanismus), während der Prozessor auf der Privilegebene 3 (Nutzermodus) arbeitet. Ringübergänge vom Ring 3 bewirken ein automatisches Aussetzen der momentan aktiven Transaktionen (Anhalten der Erzeugung von UTM-Eigenschaften und Deaktivieren des Auswurfmechanismus). In ähnlicher Weise wird bei Ringübergängen zurück zum Ring 3 automatisch die zuvor ausgesetzte Hardware-Transaktion wiederaufgenommen, als ob sie aktiv wäre. Der potentielle Nachteil dieses Ansatzes ist, dass die Verwendung von Hardwaretransaktionalen Speicherressourcen im Kernel-Code oder auf beliebigen anderen Ringebenen mit der Ausnahme von Ring 3 zumeist ausgeschlossen ist.A suspension mechanism based on a current privilege level (CPL) enables a hardware transaction (enables a hardware-accelerated transaction with UTM properties, such as buffering and monitoring, and enables the eject mechanism), while the processor at privilege level 3 (FIG. User mode) works. Ring transitions from Ring 3 cause automatic suspension of the currently active transactions (stopping the generation of UTM properties and disabling the ejection mechanism). Similarly, ring transitions back to ring 3 automatically resume the previously suspended hardware transaction as if it were active. The potential disadvantage of this approach is that the use of hardware transactional memory resources in kernel code or on any other ring layer except ring 3 is mostly excluded.
Gemäß einem weiteren Ansatz werden duplizierte TM-Steuerressourcen, wie beispielsweise ein Transaktionssteuerregister (TxCR) für den Ring 0 eingeführt, sodass die Hardware-Transaktionen für den Ring-0-Code mit diesen getrennten TM-Ressourcen immer noch ermöglicht werden können. Jedoch mangelt es diesem Ansatz potentiell immer noch an einer wirksamen Lösung zur Behandlung von verschachtelten Interrupts und Ausnahmen während Ring-0-Transaktionsoperationen.In another approach, duplicate TM control resources, such as a transaction control register (TxCR) for
Als Folge davon veranschaulicht
Bei einer Ausführungsform setzt eine Transaktionsbeginn-Operation oder eine andere Operation an einem Beginn einer Transaktion das TEF-Feld
Spezielle Beispiele des Prozesses für veranschaulichende Ringebenenübergangsereignisse sind nachfolgend aufgelistet. Bei Interrupts und Ausnahmen schiebt der Prozessor das Eflags-Register in den Kernel-Stapel und löscht das „Transaction Enable”-Bit, falls es gesetzt ist, wodurch die zuvor aktivierte Transaktion ausgesetzt wird. Bei IRET stellt der Prozessor den gesamten Eflags-Register-Zustand für den unterbrochenen Thread einschließlich des „Transaction Enable”-Bits vom Kernel-Stapel wieder her, wodurch die Transaktion unausgesetzt wird, falls sie zuvor aktiviert war.Specific examples of the process for illustrative ring-level transition events are listed below. For interrupts and exceptions, the processor shifts the eflags register into the kernel stack and clears the "Transaction Enable" bit if set, thereby suspending the previously activated transaction. With IRET, the processor sets the entire eflags register state for the interrupted one Thread, including the "Transaction Enable" bit, from the kernel stack, which will suspend the transaction if it was previously enabled.
Bei SYSCALL schiebt der Prozessor das Eflags-Register und löscht das „transaction enable bit”, falls es gesetzt ist, wodurch die zuvor aktivierte Transaktion ausgesetzt wird. Bei SYSRET stellt der Prozessor den gesamten Eflags-Register-Zustand für den unterbrochenen Thread einschließlich des „transaction enable”-Bits vom Kernel-Stapel wieder her, wodurch die Transaktion unausgesetzt wird, falls sie zuvor aktiviert war.At SYSCALL, the processor shifts the eflags register and clears the transaction enable bit if set, thereby suspending the previously activated transaction. In SYSRET, the processor recovers the entire eflags register state for the interrupted thread, including the transaction enable bit from the kernel stack, thereby suspending the transaction if it was previously enabled.
Beim VM-Austritt speichert der Prozessor das Eflags-Register des Gastes einschließlich des „Transaction Enable”-Bit-Zustands in der virtuellen Maschinen-Steuerstruktur (VMCS) und lädt den Eflags-Register-Zustand des Hosts, welcher „Transaction Enable”-Bit-Zustand gelöscht ist, wodurch die zuvor aktivierte Transaktion des Gastes ausgesetzt wird, falls sie aktiviert ist.At VM exit, the processor stores the guest's Eflags register including the Transaction Enable bit state in the virtual machine control structure (VMCS) and loads the host's Eflags register state, which is the "Transaction Enable" bit Status, which suspends the guest's previously activated transaction, if enabled.
Beim VM-Eintritt stellt der Prozessor das Eflags-Register des Gastes einschließlich des „Transaction Enable”-Bit-Zustands vorn VMCS wieder her, wobei die zuvor aktivierte Transaktion des Gastes unausgesetzt wird, falls sie aktiviert war.At VM entry, the processor recovers the guest's Eflags register, including the "Transaction Enable" bit state from the VMCS, with the guest's previously activated transaction being suspended if it was activated.
Dadurch werden die hardwarebeschleunigten UTM-Transaktionen des Kernel-Modus (Ring 0) auf den hardwarebeschleunigten UTM-Transaktionen des Nutzermodus (Ring 3) aktiviert, jedoch auch Wege sowohl für das OS als auch den VMM bereitgestellt, um unbegrenzte Niveaus verschachtelter Interrupts und NMI-Fälle in Präsenz von Ring-0-Transaktionen zu behandeln. Derartige Mechanismen werden in keinem Stand der Technik vorgesehen.This activates kernel mode hardware-accelerated (ring 0) UTM transactions on the user mode hardware-accelerated UTM transactions (ring 3), but also provides paths for both the OS and the VMM to provide unlimited levels of interleaved interrupts and NMIs. Treat cases in presence of
Ein hierin verwendetes Modul betrifft beliebige Hardware, Software, Firmware oder eine Kombination daraus. Als getrennt dargestellte Modulgrenzen können im Allgemeinen häufig variieren und sich potentiell überlappen. Beispielsweise können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination daraus teilen, während sie potentiell einen Teil unabhängiger Hardware, Software oder Firmware behalten. Bei einer Ausführungsform umfasst der Gebrauch des Ausdrucks Logik Hardware, wie beispielsweise Transistoren, Register, oder andere Hardware, wie beispielsweise programmierbare Logikvorrichtungen. Jedoch umfasst Logik bei einer anderen Ausführungsform Software oder einen Code, der in Hardware integriert ist, wie beispielsweise Firmware oder Microcode.A module used herein refers to any hardware, software, firmware or combination thereof. Module boundaries shown separately may generally vary frequently and potentially overlap. For example, a first and a second module may share hardware, software, firmware, or a combination thereof, while potentially retaining a portion of independent hardware, software, or firmware. In one embodiment, use of the term includes logic hardware, such as transistors, registers, or other hardware, such as programmable logic devices. However, in another embodiment, logic includes software or code integrated into hardware, such as firmware or microcode.
Ein hierin verwendeter Wert kann jede beliebige bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären Logischen Zustands umfassen. Häufig wird auf die Verwendung von Logikniveaus, Logikwerten oder logischen Werten auch als 1en, 0en Bezug genommen, was einfach binäre logische Zustände darstellt. Beispielsweise betrifft eine 1 einen hohen logischen Pegel und 0 einen niedrigen logischen Pegel. Bei einer Ausführungsform kann eine Speicherzelle, wie beispielsweise ein Transistor oder eine Flashzelle, dazu eingerichtet sein, einen einzelnen Wert oder mehrere logische Wert zu halten. Jedoch wurden andere Darstellungen von Werten in Computersystemen ebenfalls verwendet. Beispielsweise kann die Dezimalzahl 10 auch als ein binärer Wert von 1010 und als ein hexadezimaler Buchstabe A dargestellt sein. Daher kann ein Wert eine beliebige Wiedergabe von Informationen umfassen, die sich dazu eignet, in einem Computersystem gehalten zu werden.A value used herein may include any known representation of a number, state, logic state, or binary logic state. Often, the use of logic levels, logic values, or logic values is also referred to as 1s, 0s, which simply represents binary logic states. For example, a 1 refers to a high logic level and 0 to a low logic level. In one embodiment, a memory cell, such as a transistor or a flash cell, may be configured to hold a single value or multiple logical values. However, other representations of values in computer systems have also been used. For example, the decimal number 10 may also be represented as a binary value of 1010 and a hexadecimal letter A. Therefore, a value may include any representation of information that is suitable for being held in a computer system.
Darüber hinaus können Zustände durch Werte oder Teile von Werten dargstellt werden. Als Beispiel kann ein erster Wert, wie beispielsweise eine logische Eins einen Voreinstellungszustand oder Ausgangszustand darstellen, während ein zweiter Wert, wie beispielsweise eine logische Null einen Nicht-Voreinstellungszustand darstellen kann. Zusätzlich betreffen die Ausdrücke Zurücksetzen und Setzen gemäß einer Ausführungsform einen Voreinstellungswert oder -zustand bzw. einen aktualisierten Wert oder Zustand. Beispielsweise umfasst ein Voreinstellungswert potentiell einen hohen logischen Wert, d. h. ein Zurücksetzen, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, d. h. Setzen, umfasst. Man beachte, dass jede beliebige Kombination von Werten verwendet werden kann, um jede beliebige Anzahl von Zuständen wiederzugeben.In addition, states can be represented by values or parts of values. As an example, a first value, such as a logical one, may represent a default state or initial state, while a second value, such as a logical zero, may represent a non-default state. Additionally, in one embodiment, the terms reset and set refer to a default value or state, or an updated value or state. For example, a default value potentially includes a high logical value, i. H. a reset, while an updated value potentially has a low logical value, i. H. Put, includes. Note that any combination of values can be used to represent any number of states.
Die oben dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Instruktionen oder Code implementiert werden, die bzw. der auf einem maschinenzugreifbaren oder maschinenlesbaren Medium gespeichert sind, die durch ein Verarbeitungselement ausführbar sind. Ein maschinenzugängliches/-lesbares Medium umfasst jeden beliebigen Mechanismus, der Informationen, (d. h. Speicherungen und/oder Übertragungen) Informationen in einer Form bereitstellt, die für eine Maschine lesbar ist, wie beispielsweise einen Computer oder ein elektronisches System. Ein maschinenzugängliches Medium umfasst beispielsweise einen Direktzugriffsspeicher (RAM), wie beispielsweise einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium, Flash-Speichervorrichtungen, eine elektrische Speichervorrichtung, optische Speichervorrichtungen, akustische Speichervorrichtungen oder eine andere Form eines sich ausbreitenden Signale (z. B. Trägerwellen, infrarote Signale, Digitalsignale), Speichervorrichtung etc. Beispielsweise kann eine Maschine auf eine Speichervorrichtung durch Empfangen eines sich ausbreitenden Signals, wie beispielsweise einer Trägerwelle, von einem Medium zugreifen, das geeignet ist, die auf dem sich ausbreitenden Signal zu übertragenden Informationen zu halten.The embodiments of methods, hardware, software, firmware or code set forth above may be implemented via instructions or code stored on a machine-accessible or machine-readable medium executable by a processing element. A machine accessible / readable medium includes any mechanism that provides information (i.e., stores and / or transfers) of information in a form that is readable by a machine, such as a computer or electronic system. For example, a machine-accessible medium includes random access memory (RAM) such as static RAM (SRAM) or dynamic RAM (DRAM); ROME; a magnetic or optical storage medium, flash memory devices, an electrical storage device, optical storage devices, acoustic storage devices, or other form of propagating signal (e.g., carrier waves, infrared signals, digital signals), storage device, etc. For example, a machine may be mounted on a storage device by receiving a propagating signal, such as a carrier wave, from a medium capable of holding the information to be transmitted on the propagating signal.
Durchgängig durch diese Beschreibung bedeutet eine Bezugnahme auf „eine einzelne Ausführungsform” oder „eine Ausführungsform”, dass ein bestimmtes Merkmal, eine Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wurde, in zumindest einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit betreffen die Stellen, an welchen die Ausdrücke „in einer einzelnen Ausführungsform” oder „in einer Ausführungsform” in dieser Beschreibung auftreten, nicht notwendigerweise alle dieselbe Ausführungsform. Darüber hinaus können die speziellen Merkmale, Strukturen oder Charakteristika in jeder geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.Throughout this description, reference to "a single embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the places where the terms "in a single embodiment" or "in one embodiment" appear in this specification are not necessarily all the same embodiment. Moreover, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
In der vorangehenden Beschreibung wurde eine detaillierte Beschreibung unter Bezugnahme auf spezielle beispielhafte Ausführungsformen angegeben. Es ist jedoch offensichtlich, dass verschiedene Modifizierungen und Abwandlungen daran vorgenommen werden können, ohne vom allgemeinen Gedanken und Umfang der Erfindung abzuweichen, wie er in den beigefügten Ansprüchen niedergelegt ist. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden Sinn und nicht in einem beschränkenden Sinn zu betrachten. Darüber hinaus betrifft der vorangehende Gebrauch einer Ausführungsform oder einer anderen beispielhaften Sprache nicht notwendigerweise dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf andere und verschiedene Ausführungsformen sowie potentiell auf dieselbe Ausführungsform beziehen.In the foregoing description, a detailed description has been given with reference to specific exemplary embodiments. It is, however, to be understood that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. Accordingly, the description and drawings are to be considered in an illustrative sense and not in a limiting sense. Moreover, the foregoing use of an embodiment or other exemplary language does not necessarily contemplate the same embodiment or example, but may refer to other and different embodiments as well as potentially to the same embodiment.
Claims (130)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2009/048947 WO2010151267A1 (en) | 2009-06-26 | 2009-06-26 | Optimizations for an unbounded transactional memory (utm) system |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112009005006T5 true DE112009005006T5 (en) | 2013-01-10 |
Family
ID=43386805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112009005006T Withdrawn DE112009005006T5 (en) | 2009-06-26 | 2009-06-26 | Optimizations for an Unbound Transactional Storage System (UTM) |
Country Status (7)
Country | Link |
---|---|
JP (1) | JP5608738B2 (en) |
KR (1) | KR101370314B1 (en) |
CN (1) | CN102460376B (en) |
BR (1) | BRPI0925055A2 (en) |
DE (1) | DE112009005006T5 (en) |
GB (1) | GB2484416B (en) |
WO (1) | WO2010151267A1 (en) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9477515B2 (en) | 2009-12-15 | 2016-10-25 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US8521995B2 (en) | 2009-12-15 | 2013-08-27 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
CN102830953B (en) * | 2012-08-02 | 2017-08-25 | 中兴通讯股份有限公司 | Command processing method and network processing unit instruction processing unit |
US9547594B2 (en) * | 2013-03-15 | 2017-01-17 | Intel Corporation | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
US9697040B2 (en) * | 2014-03-26 | 2017-07-04 | Intel Corporation | Software replayer for transactional memory programs |
US9710245B2 (en) * | 2014-04-04 | 2017-07-18 | Qualcomm Incorporated | Memory reference metadata for compiler optimization |
US9195593B1 (en) * | 2014-09-27 | 2015-11-24 | Oracle International Corporation | Hardware assisted object memory migration |
US9952987B2 (en) * | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
US9451307B2 (en) * | 2014-12-08 | 2016-09-20 | Microsoft Technology Licensing, Llc | Generating recommendations based on processing content item metadata tags |
BR112017014359A2 (en) * | 2014-12-31 | 2018-04-10 | Huawei Tech Co Ltd | method and apparatus for detecting transaction and computer system conflict. |
EP4012548A1 (en) * | 2015-01-20 | 2022-06-15 | Ultrata LLC | Object memory data flow instruction execution |
US9747218B2 (en) | 2015-03-20 | 2017-08-29 | Mill Computing, Inc. | CPU security mechanisms employing thread-specific protection domains |
WO2016154115A1 (en) * | 2015-03-20 | 2016-09-29 | Mill Computing, Inc. | Cpu security mechanisms employing thread-specific protection domains |
GB2539433B8 (en) * | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Protected exception handling |
GB2539429B (en) | 2015-06-16 | 2017-09-06 | Advanced Risc Mach Ltd | Address translation |
GB2539428B (en) | 2015-06-16 | 2020-09-09 | Advanced Risc Mach Ltd | Data processing apparatus and method with ownership table |
US9760432B2 (en) | 2015-07-28 | 2017-09-12 | Futurewei Technologies, Inc. | Intelligent code apparatus, method, and computer program for memory |
US9921754B2 (en) | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US10180803B2 (en) | 2015-07-28 | 2019-01-15 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US10019360B2 (en) * | 2015-09-26 | 2018-07-10 | Intel Corporation | Hardware predictor using a cache line demotion instruction to reduce performance inversion in core-to-core data transfers |
GB2543306B (en) * | 2015-10-14 | 2019-05-01 | Advanced Risc Mach Ltd | Exception handling |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US9996471B2 (en) * | 2016-06-28 | 2018-06-12 | Arm Limited | Cache with compressed data and tag |
US10191936B2 (en) * | 2016-10-31 | 2019-01-29 | Oracle International Corporation | Two-tier storage protocol for committing changes in a storage system |
CN106411945B (en) * | 2016-11-25 | 2019-08-06 | 杭州迪普科技股份有限公司 | A kind of access method and device of Web |
US10120805B2 (en) * | 2017-01-18 | 2018-11-06 | Intel Corporation | Managing memory for secure enclaves |
US10579377B2 (en) * | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10324857B2 (en) * | 2017-01-26 | 2019-06-18 | Intel Corporation | Linear memory address transformation and management |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
GB2562062B (en) * | 2017-05-02 | 2019-08-14 | Advanced Risc Mach Ltd | An apparatus and method for managing capability metadata |
US10732634B2 (en) * | 2017-07-03 | 2020-08-04 | Baidu Us Llc | Centralized scheduling system using event loop for operating autonomous driving vehicles |
GB2568059B (en) * | 2017-11-02 | 2020-04-08 | Advanced Risc Mach Ltd | Method for locating metadata |
GB2573558B (en) * | 2018-05-10 | 2020-09-02 | Advanced Risc Mach Ltd | A technique for managing a cache structure in a system employing transactional memory |
US10866890B2 (en) * | 2018-11-07 | 2020-12-15 | Arm Limited | Method and apparatus for implementing lock-free data structures |
CN112306956B (en) * | 2019-07-31 | 2024-04-12 | 伊姆西Ip控股有限责任公司 | Methods, apparatuses, and computer program products for metadata maintenance |
GB2588134B (en) * | 2019-10-08 | 2021-12-01 | Imagination Tech Ltd | Verification of hardware design for data transformation component |
CN111552619B (en) * | 2020-04-29 | 2021-05-25 | 深圳市道旅旅游科技股份有限公司 | Log data display method and device, computer equipment and storage medium |
US11372548B2 (en) * | 2020-05-29 | 2022-06-28 | Nvidia Corporation | Techniques for accessing and utilizing compressed data and its state information |
CN114064302A (en) * | 2020-07-30 | 2022-02-18 | 华为技术有限公司 | Method and device for interprocess communication |
CN117056157B (en) * | 2023-10-11 | 2024-01-23 | 沐曦集成电路(上海)有限公司 | Register hierarchy verification method, storage medium and electronic equipment |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07182241A (en) * | 1993-12-22 | 1995-07-21 | Toshiba Corp | Cache memory control device |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US7991965B2 (en) * | 2006-02-07 | 2011-08-02 | Intel Corporation | Technique for using memory attributes |
US8065499B2 (en) * | 2006-02-22 | 2011-11-22 | Oracle America, Inc. | Methods and apparatus to implement parallel transactions |
US7376807B2 (en) * | 2006-02-23 | 2008-05-20 | Freescale Semiconductor, Inc. | Data processing system having address translation bypass and method therefor |
US7739411B2 (en) * | 2006-08-11 | 2010-06-15 | Samsung Electronics Co., Ltd. | Method and system for content synchronization and detecting synchronization recursion in networks |
JPWO2008155849A1 (en) * | 2007-06-20 | 2010-08-26 | 富士通株式会社 | Arithmetic processing device, TLB control method, TLB control program, and information processing device |
KR101639672B1 (en) * | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | Unbounded transactional memory system and method for operating thereof |
-
2009
- 2009-06-26 JP JP2012516043A patent/JP5608738B2/en not_active Expired - Fee Related
- 2009-06-26 DE DE112009005006T patent/DE112009005006T5/en not_active Withdrawn
- 2009-06-26 WO PCT/US2009/048947 patent/WO2010151267A1/en active Application Filing
- 2009-06-26 GB GB1119084.0A patent/GB2484416B/en not_active Expired - Fee Related
- 2009-06-26 CN CN200980160097.XA patent/CN102460376B/en not_active Expired - Fee Related
- 2009-06-26 KR KR1020117031098A patent/KR101370314B1/en not_active IP Right Cessation
- 2009-06-26 BR BRPI0925055-7A patent/BRPI0925055A2/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR101370314B1 (en) | 2014-03-05 |
GB2484416A (en) | 2012-04-11 |
JP2012530960A (en) | 2012-12-06 |
WO2010151267A1 (en) | 2010-12-29 |
CN102460376A (en) | 2012-05-16 |
BRPI0925055A2 (en) | 2015-07-28 |
GB201119084D0 (en) | 2011-12-21 |
KR20130074726A (en) | 2013-07-04 |
CN102460376B (en) | 2016-05-18 |
JP5608738B2 (en) | 2014-10-15 |
GB2484416B (en) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112009005006T5 (en) | Optimizations for an Unbound Transactional Storage System (UTM) | |
DE112010003492B4 (en) | Transaction storage system with efficient cache support | |
US8719514B2 (en) | Software filtering in a transactional memory system | |
DE112007000812B4 (en) | ONE MEMORY DEVICE WITH THREE LOGICS, METHOD FOR PERFORMING THE METHOD STEPS OF THE ONE MEMORY, ONE PROCESSOR DEVICE AND SYSTEM FOR PROVIDING AN EFFICIENT MECHANISM FOR TRANSACTIONAL MEMORY EXECUTIONS IN OUT-OF-ORDER PROCESSORS | |
DE112005003874B3 (en) | Transaction-based processing operation with shared data in a multiprocessor environment | |
US10210018B2 (en) | Optimizing quiescence in a software transactional memory (STM) system | |
DE102012023574A1 (en) | Method, apparatus and system for efficiently processing multiple maps of virtual addresses in transactional processing | |
DE112011101364B4 (en) | Troubleshooting multithreaded code | |
Minh et al. | An effective hybrid transactional memory system with strong isolation guarantees | |
DE112006002237B4 (en) | Method for self-initiating synchronization in a computer system | |
DE112005002402B4 (en) | Hybrid hardware / software implementation of transactional memory access | |
DE102010051477B4 (en) | METHOD IN A COMPUTER PLATFORM AND COMPUTER PLATFORM FOR SHARING VIRTUAL STORAGE-BASED MULTI-VERSION DATA BETWEEN THE VARIOUS PROCESSORS OF THE COMPUTER PLATFORM | |
DE112010003330B4 (en) | Checkpoint caches for speculative versioning | |
US9280397B2 (en) | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata | |
DE202007019502U1 (en) | Global overflow for virtualized transaction store | |
Shriraman et al. | Hardware acceleration of software transactional memory | |
DE112010004963T5 (en) | Synchronizing SIMD vectors | |
US20120117334A1 (en) | Read and write monitoring attributes in transactional memory (tm) systems | |
DE102012216567A1 (en) | MANAGING A REGISTER CACHE STORAGE BASED ON AN ARCHITECTURE DEFINED COMPUTER INSTRUCTION SET | |
DE102012216571A1 (en) | USE OF AN ARCHITECTURE-DEFINED LAST-USE OPERAND DATA IN A COMPUTER SYSTEM OPERAND RESOURCE POOL | |
US8103838B2 (en) | System and method for transactional locking using reader-lists | |
DE102007054057A1 (en) | Mechanism for detecting and predicting a critical section for hardware lock elision | |
DE112011100715T5 (en) | HARDWARE ASSIST-THREAD | |
DE112006001698T5 (en) | Basic features to improve thread-level speculation | |
DE102013206423A1 (en) | Multithreaded transactional memory coherency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R083 | Amendment of/additions to inventor(s) | ||
R016 | Response to examination communication | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |