270 likes | 389 Views
MetaTM/TxLinux: Transactional Memory For An Operating System. Hany E. Ramadan, Christopher J. Rossbach, Donald E. Porter and Owen S. Hofmann. Presenter: Zhong Zhou. CSE Department University of Connecticut. Outline. Introduction & Background Architectural Model
E N D
MetaTM/TxLinux: Transactional Memory For An Operating System Hany E. Ramadan, Christopher J. Rossbach, Donald E. Porter and Owen S. Hofmann Presenter: Zhong Zhou CSE Department University of Connecticut
Outline • Introduction & Background • Architectural Model • Interrupts and Transactions • Stack memory and Transactions • Modifying Linux to use HTM • Evaluation • Conclusions
Introduction • What is Transaction? A finite sequence of machine instructions, executed by a single process, satisfying the following two conditions • Serializability: transactions appear to execute serially, the steps of one transaction never appear to be interleaved with the steps of another. • Atomicity: each transaction makes a sequence of changes to shared memory, when it completes, it either commits, make all changes visible to others, or it abort, causing its changes to be discarded.
Transactional memory • A multiprocessor architecture for memory access synchronization as conventional mutual exclusion technique • Basic instruction for manipulating transaction status • Commit • Abort • Validate • Basic primitive instruction for accessing memory • Load transactional • Load transactional-exclusive • Store transactional
Why Transaction memory? • Problem with Lock-based code • Deadlock • Convoying • Priority inversion • Transaction memory: Reduce programming complexity without sacrificing performance • STM: software transaction memory • HTM: hardware transaction memory
Main Contribution • Examination of the architectural support necessary for an operation system to use HTM • Creation of a transactional operating system • Examination of the characteristics of transactions in TxLinux
Architecture Model • Transaction semantics
Managing multiple transactions • Stack based: independent transaction model • XPUSH: Suspend the current transaction, saving its current state. • XPOP: Restore the previously xpushed transaction. Allowing the suspended transaction to resume
Contention management • Many content manage strategies have been implemented • Polite, Karma, Eruption, et al. • A new policy (size matters) • Favors the transaction that has the large number of unique bytes read or written in its transaction working set
Backoff • If conflict occurs between transactions, with high probability, it will happen again if immediate restart these transactions. Backoff mechanism is needed here • Exponential backoff • Linear backoff • Random backoff
Interrupts and Transactions • Interrupt handling background • The top-half interrupt handler • Disable all interrupt with equal and lower priorities • Relatively short execution time, push as much work as possible to bottom-half • The bottom-half interrupt handler
Observations for Interrupt handling • Observations • Transaction length: usually large • Interrupt frequency: relative high • Interrupt routing limitations: less flexible
Interrupt handling in TxLinux • Start with XPUSH to suspend the currently running transaction • Interrupt handler is allowed to start new, independent transaction • Interrupt return path ends with an XPOP instruction
Stack memory and Transaction • Stack memory is shared between thread in the Linux kernel • On the X86 architecture, Linux thread share their kernel stack with interrupt handlers. • The sharing of kernel stack address requires stack addresses to be part of transaction working sets to ensure isolation
Transactions that span activation frames • Support independent Xbegin and Xend instruction. Xbegin and Xend can be called in different stack frame Example:
Live stack overwrite problem(1) • One example:
Live stack overwrite problem(2) • This problem stems from • Calls to xbegin and xend occur in different stack frame • The x86 trap architecture reuses the current stack on interrupt that does not change privilege level • A transaction that is suspended can restart • Solutions • Change the interrupt handler stack to avoid the overwrite problem.
Transactional dead stack problem(1) • One example:
Transactional dead stack problem(1) • Solution • Stack-based early release:During an active transaction, any time the stack pointer is incremented, if the new value of the stack pointer is on a different cache line from the old one, then, the processor releases the old cache lines from the transactional line
Modifying Linux to use HTM • Spinlocks • Lock->Xbegin, Unlock->Xend • Atomic instructions • Seqlocks • Regions protected by seqlock loops are protected by a transaction in TxLinux • Read-copy-update
Performance evaluation • Simulation settings • Split instruction\data L1 cache: 16KB, 4-way associative, 64-byte cache line • Unified L2 cache: 4MB, 8-way associative, 64-byte cache line • Main memory: 1GB • IPC:1 instruction per cycle
Conclusions • HTM has the potential to greatly simplify the operating system synchronization while retaining a high degree of concurrency • Examine several aspect of HTM implementation and policies • Polka contention management policy is effective • Backoff policy is important, both linear and exponential backoff work well
Thank You! Q & A?