SlideShare a Scribd company logo
@gfraiteur
a deep investigation on how .NET multithreading primitives
map to hardware and Windows Kernel
You Thought
You Understood Multithreading
Gaël Fraiteur
PostSharp Technologies
Founder & Principal Engineer
@gfraiteur
Hello!
My name is GAEL.
No, I don’t think
my accent is funny.
my twitter
@gfraiteur
Agenda
1. Hardware
2. Windows Kernel
3. Application
@gfraiteur
Microarchitecture
Hardware

Recommended for you

Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014

The document discusses bringing concurrency to Ruby. It begins by defining concurrency and parallelism, noting that both are needed but platforms only enable parallelism if jobs can split into concurrent tasks. It reviews concurrency and parallelism in popular Ruby platforms like MRI, JRuby, and Rubinius. The document outlines four rules for concurrency and discusses techniques like immutable data, locking, atomics, and specialized collections for mutable data. It highlights libraries that provide high-level concurrency abstractions like Celluloid for actors and Sidekiq for background jobs.

concurrencyjrubyrubinius
A tour on Spur for non-VM experts
A tour on Spur for non-VM expertsA tour on Spur for non-VM experts
A tour on Spur for non-VM experts

Mon, August 22, 2:00pm – 2:30pm Youtube: https://youtu.be/OlJZMHLTfuc Description Abstract: Spur is the new memory manager for the Cog virtual machine used by Pharo, Newspeak and Squeak. It features a two generation scavenger garbage collector with an adaptative tenuring policy, lazy become, (transparent) segmented memory, a new 64bit-compatible object-format, ephemerons, pinned objects, a class table, among others. If you're high-level application developer, or a programming amateur, but not a VM expert, but you're interested in understanding these concepts and what is their impact on your day to day development this talk is for you. Bio: Guille Polito is research engineer at CNRS, France. Pharoer since 2010, he participates actively in the Pharo open source community since several years. He currently works on the modularization of Pharo where he does software archeology, refactoring, library rewriting and participates in the Virtual Machine development.

 
by ESUG
cogvmsmalltalk
Practical Windows Kernel Exploitation
Practical Windows Kernel ExploitationPractical Windows Kernel Exploitation
Practical Windows Kernel Exploitation

This document discusses a presentation on practical Windows kernel exploitation. It covers the basics of kernel exploitation, common vulnerability classes like write-what-where and use-after-free, techniques for executing code, mitigation technologies, writing Windows kernel exploits for Metasploit, and improving reliability. The speaker works at SecureState researching and developing kernel exploits and is an open source contributor to projects like Metasploit.

windows kernelvulnerability researchmetasploit
@gfraiteurThere was no RAM in Colossus, the world’s first electronic programmable computing device (19
http://en.wikipedia.org/wiki/File:Colossus.jpg
@gfraiteur
Hardware
Processor microarchitecture
Intel Core i7 980x
@gfraiteur
Hardware
Hardware latency
26.2
8.58
3
1.2
0.3
0 5 10 15 20 25 30
DRAM
L3 Cache
L2 Cache
L1 Cache
CPU Cycle
ns
Latency
Measured on Intel® Core™ i7-970 Processor (12M Cache, 3.20 GHz, 4.80 GT/s Intel® QPI) with SiSoftware Sandra
@gfraiteur
Hardware
Cache Hierarchy
• Distributed into caches
• L1 (per core)
• L2 (per core)
• L3 (per die)
Die 1
Core 4
Processor
Core 5
Processor
Core 7
Processor
L2 Cache
Core 6
Processor
L2 Cache
Memory Store
(DRAM)
Die 0
Core 1
Processor
Core 0
Processor
Core 2
Processor
L2 Cache
Core 3
Processor
L2 Cache
L2 Cache
L3 Cache
L2 CacheL2 Cache
L3 Cache
L2 Cache
Data Transfer
Core
Interconnec
t
Core
Interconnec
t
Processor Interconnect
Synchronization
• Synchronized through an
asynchronous “bus”:
• Request/response
• Message queues
• Buffers

Recommended for you

Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10

This document discusses techniques used by Patchguard, a mechanism in Windows 8.1 and 10 that protects the kernel from modifications. Patchguard uses code obfuscation, anti-debugging tricks, and periodic checksum validation to prevent unauthorized kernel patches. The document outlines various approaches that could be used to bypass Patchguard such as patching the kernel image, hooking functions, modifying checkers, or descheduling the context verification processes used by Patchguard. It provides details on specific functions and methods involved in Patchguard's context verification and suggests ways these could be descheduled to bypass the mechanism.

windowspatchguardzeronights
Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!

This document summarizes a presentation about Python threads and the Global Interpreter Lock (GIL). It discusses how the GIL provides synchronization for Python's memory management but prevents true concurrency. It describes how the GIL is implemented and how it is managed through "checks" and tick counts. It also covers how the new GIL in Python 3.2 aims to improve fairness on multicore systems through a timeout mechanism. Finally, it discusses alternatives like Jython, multiprocessing, and Stackless Python that can better utilize multiple CPU cores.

threadspythonpycon
Pitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysisPitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysis

This document discusses the pitfalls and limits of dynamic malware analysis. It summarizes that dynamic analysis aims to observe malware execution but is challenging due to evasion techniques. Several problems are outlined, including the difficulty of scalability, isolation, and stealth when analyzing malware. The document also discusses issues with using debuggers, emulators, and hypervisor introspection for dynamic analysis. It notes that complete stealth is not feasible and that halting and evasion problems cannot be fully solved.

xen malware
@gfraiteur
Hardware
Memory Ordering
• Issues due to implementation details:
• Asynchronous bus
• Caching & Buffering
• Out-of-order execution
@gfraiteur
Hardware
Memory Ordering
Processor 0 Processor 1
Store A := 1 Load A
Store B := 1 Load B
Possible values of (A, B) for loads?
Processor 0 Processor 1
Load A Load B
Store B := 1 Store A := 1
Possible values of (A, B) for loads?
Processor 0 Processor 1
Store A := 1 Store B := 1
Load B Load A
Possible values of (A, B) for loads?
@gfraiteur
Hardware
Memory Models: Guarantees
Type
Alpha
ARMv7
PA-RISC
POWER
SPARC
RMO
SPARC
PSO
SPARCTSO
x86
x86
oostore
AMD64
IA64
zSeries
Loads reordered after Loads Y Y Y Y Y Y Y
Loads reordered after Stores Y Y Y Y Y Y Y
Stores reordered after Stores Y Y Y Y Y Y Y Y
Stores reordered after Loads Y Y Y Y Y Y Y Y Y Y Y Y
Atomic reordered with Loads Y Y Y Y Y
Atomic reordered with
Stores
Y Y Y Y Y Y
Dependent Loads reordered Y
Incoherent Instruction cache
pipeline
Y Y Y Y Y Y Y Y Y Y
http://en.wikipedia.org/wiki/Memory_ordering
X84,AMD64: strong orderingARM: weak ordering
@gfraiteur
Hardware
Memory Models Compared
Processor 0 Processor 1
Store A := 1 Load A
Store B := 1 Load B
Processor 0 Processor 1
LoadA Load B
Store B := 1 Store A := 1

Recommended for you

Fun With Dr Brown
Fun With Dr BrownFun With Dr Brown
Fun With Dr Brown

EMET is Microsoft's tool to make exploits more difficult by adding protections like DEP and ASLR. However, the document outlines how an attacker could bypass EMET protections and disable them using return-oriented programming. The attacker identifies a vulnerability in Firebird that provides enough space for payload. Despite EMET protections, the attacker is able to craft a 19 gadget ROP chain to dynamically resolve EMET's base address and modify configuration offsets to disable protections. A demonstration shows it working to exploit a system with EMET installed. Later EMET versions addressed this by storing configuration in randomized memory.

JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further

The document discusses how JRuby pushes the Java platform further by implementing custom core classes like Array, Hash, String, and IO to match Ruby's behavior exactly. It also describes how JRuby uses libraries like ByteList, Joni, Java Native Runtime, and FFI to provide Ruby-like regular expressions, native I/O, and OS-level features on the JVM. These custom implementations and libraries allow JRuby to overcome challenges like dynamic typing and provide a full-fledged Ruby environment atop the Java Virtual Machine.

unix sockejvmnative
TRICK2013 Results
TRICK2013 ResultsTRICK2013 Results
TRICK2013 Results

The winning entry titled "Most competitive" leverages complex Ruby tricks to obfuscate a program that evaluates itself. It uses techniques like dynamically generating code strings, manipulating character encodings, and exploiting edge cases in Ruby's parsing and evaluation rules. The goal is to demonstrate both the robustness of Ruby interpreters in running such esoteric code, as well as uncover subtle aspects of Ruby's specification and implementation. The judges awarded it high honors for achieving the contest's goals of producing transcendental, imbroglio code.

programming contestesoteric programming
@gfraiteur
Hardware
Compiler Memory Ordering
• The compiler (CLR) can:
• Cache (memory into register),
• Reorder
• Coalesce writes
• volatile keyword disables compiler optimizations.
And that’s all!
@gfraiteur
Hardware
Thread.MemoryBarrier()
Processor 0 Processor 1
Store A := 1 Store B := 1
Thread.MemoryBarrier() Thread.MemoryBarrier()
Load B Load A
Barriers serialize access to memory.
@gfraiteur
Hardware
Atomicity
Processor 0 Processor 1
Store A := (long) 0xFFFFFFFF Load A
• Up to native word size (IntPtr)
• Properly aligned fields (attention to struct fields!)
@gfraiteur
Hardware
Interlocked access
• The only locking mechanism at hardware level.
• System.Threading.Interlocked
• Add
Add(ref x, int a ) { x += a; return x; }
• Increment
Inc(ref x ) { x += 1; return x; }
• Exchange
Exc( ref x, int v ) { int t = x; x = a; return t; }
• CompareExchange
CAS( ref x, int v, int c ) { int t = x; if ( t == c ) x = a; return t; }
• Read(ref long)
• Implemented by L3 cache and/or interconnect messages.
• Implicit memory barrier

Recommended for you

Rust system programming language
Rust system programming languageRust system programming language
Rust system programming language

A basic Introduction to Rust. Rust is a modern system programming language which offering different approach than other existing new modern system programming languages to deal with: memory safety without GC, abstraction without overhead, and concurrency without data races.

nativerustsystem
Power of linked list
Power of linked listPower of linked list
Power of linked list

XCon 2014 => http://xcon.xfocus.org/ In the past was quite common to exploit heap / pool manager vulnerabilities attacking its internal linked structures. However current memory management improve a lot and at current date it is quite ineffective to attack heap in this way. But still those techniques come into hand when we start to looking at linked structures widespread throughout kernel that are unfortunately not hardened enough. In this presentation we will examine power of these vulnerabilities by famous example “CVE – 2013 - 3660”. Showing bypass on ‘lazy’ assertions of _LIST_ENTRY, present exploitation after party and teleport to kernel.

xcon wndows linkedlist list_entry nt vulnerability
Design and simulation of sayeh processor using verilog copy 1445752708332
Design and simulation of sayeh processor using verilog   copy 1445752708332Design and simulation of sayeh processor using verilog   copy 1445752708332
Design and simulation of sayeh processor using verilog copy 1445752708332

The document describes the SAYEH processor, which is designed for educational purposes. It has a minimum hardware configuration with enough operations possible. The processor has an 16-bit instruction set architecture and uses a register file, program counter, arithmetic logic unit, and controller to process instructions. The controller implements eleven states to control the fetch, decode, execute, and halt operations of the processor.

sayeh processor
@gfraiteur
Hardware
Cost of interlocked
9.75
8.58
5.5
1.87
1.2
0 2 4 6 8 10 12
Interlocked increment (contended, same socket)
L3 Cache
Interlocked increment (non-contended)
Non-interlocked increment
L1 Cache
ns
Latency
Measured on Intel® Core™ i7-970 Processor (12M Cache, 3.20 GHz, 4.80 GT/s Intel® QPI)
with C# code. Cache latencies measured with SiSoftware Sandra.
@gfraiteur
Hardware
Cost of cache coherency
@gfraiteur
Multitasking
• No thread, no process at hardware level
• There no such thing as “wait”
• One core never does more than 1 “thing” at the same time
(except HyperThreading)
• Task-State Segment:
• CPU State
• Permissions (I/O, IRQ)
• Memory Mapping
• A task runs until interrupted by hardware or OS
@gfraiteur
Lab: Non-Blocking Algorithms
• Non-blocking stack (4.5 MT/s)
• Ring buffer (13.2 MT/s)

Recommended for you

Efficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ serverEfficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ server

This document discusses efficient logging in multithreaded C++ servers. It describes the muduo logging library which can log over 1 million messages per second with low latency. The key aspects are an efficient LogStream frontend, asynchronous backend using double buffering to pass log messages from threads to a log writer thread without blocking, and writing to local files for performance and reliability.

c++loggingmultithreading
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller ChipDesign of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip

The document describes the design of an analog CMOS-based chip that implements an Interval Type-2 Fuzzy Logic Controller (IT2 FLC). The chip takes a realization approach that averages the outputs of two underlying Type-1 Fuzzy Logic Systems (T1 FLSs). The chip has been designed and simulated using a 180nm CMOS technology. It is designed to have two inputs, one output, and nine tunable fuzzy rules. Simulation results show the chip can operate at 20 million fuzzy logic operations per second while consuming 20mW of power.

footprint of uncertaintyinterval type-2 fuzzy logic systemscmos
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010

IC Mask Design - The Experts in all aspects of IC Layout. DAC Conference, Anaheim, June 2010 IC Layout Acceleration Tool - HiPer DevGen

ic layout automationhiper devgenic physical design
@gfraiteur
Windows Kernel
Operating System
@gfraiteur
SideKick (1988). http://en.wikipedia.org/wiki/SideKi
@gfraiteur
• Program
(Sequence of Instructions)
• CPU State
• Wait Dependencies
• (other things)
• Virtual Address Space
• Resources
• At least 1 thread
• (other things)
Processes and Threads
Process Thread
Windows Kernel
@gfraiteur
Windows Kernel
Processed and Threads
8 Logical Processors
(4 hyper-threaded cores)
2384 threads
155 processes

Recommended for you

Trigate transistors and future processors
Trigate transistors and future processors Trigate transistors and future processors
Trigate transistors and future processors

1. Transistor size has reduced from 180nm in 1999 to 32nm in 2009 through advances in silicon technology and new manufacturing processes every 2 years. 2. FinFET transistors provide a 37% performance increase at low voltages and 50% power reduction at constant performance through their 3D structure. 3. Graphene is predicted to replace semiconductors for further transistor shrinkage beyond 2030 due to its 2D structure, high conductivity, and low cost. 4. Quantum computing, which is still in development, will use quantum properties of single atoms to represent data and perform certain algorithms not possible with classical computers.

quantum computerqubitintel
Aicd cmos layouts
Aicd cmos layoutsAicd cmos layouts
Aicd cmos layouts

This document discusses analog integrated circuit layout techniques. It covers topics like design rules, unit component design, boundary condition matching using common centroid layout, and reducing mismatches. Specific circuit elements discussed include MOS transistors, capacitors, and resistors. Layout techniques to reduce parasitic capacitances and handle over-etching errors are presented. Fingered device layouts and calculating parasitic capacitances of MOS devices are also summarized.

Analog Layout and Process Concern
Analog Layout and Process ConcernAnalog Layout and Process Concern
Analog Layout and Process Concern

This document discusses important considerations for analog integrated circuit layout and the CMOS fabrication process. It covers topics like MOS transistor operation, analog signal characteristics, CMOS fabrication steps, layout techniques for minimizing noise and mismatches, and avoiding latch-up issues. The key goals of analog layout include matching devices, minimizing parasitic capacitance and resistance, isolating analog and digital sections, and using guard rings and decoupling capacitors.

@gfraiteur
Windows Kernel
Dispatching threads to CPU
Executing
CPU 0
CPU 1
CPU 2
CPU 3
Thread H
Thread G
Thread I
Thread J
Mutex Semaphore
Event Timer
Thread A
Thread C
Thread B
Wait
Thread D
Thread E
Thread F
Ready
@gfraiteur
• Live in the kernel
• Sharable among
processes
• Expensive!
• Event
• Mutex
• Semaphore
• Timer
• Thread
Dispatcher Objects
(WaitHandle)
Kinds of dispatcher objects Characteristics
Windows Kernel
@gfraiteur
Windows Kernel
Cost of kernel dispatching
2
6
10
295
2,093
1 10 100 1000 10000
Normal increment
Non-contented interlocked increment
Contented interlocked increment
Access kernel dispatcher object
Create+dispose kernel dispatcher object
Duration (ns)
Measured on Intel® Core™ i7-970 Processor (12M Cache, 3.20 GHz, 4.80 GT/s Intel® QPI)
@gfraiteur
Windows Kernel
Wait Methods
• Thread.Sleep
• Thread.Yield
• Thread.Join
• WaitHandle.Wait
• (Thread.SpinWait)

Recommended for you

Ehud tzuri 3 d challanges new
Ehud tzuri 3 d challanges    newEhud tzuri 3 d challanges    new
Ehud tzuri 3 d challanges new

The document discusses the shift to 3D integrated circuit structures and the manufacturing and process control challenges involved. It describes how 3D NAND flash memory uses a vertically stacked structure to increase density in a cost-effective manner. Implementing FinFET transistors also builds vertically by using fin-shaped gates on three sides to improve performance. Significant challenges include precise control over multiple thin film depositions and complex etch processes needed for these 3D structures. Advanced metrology and inspection is required to monitor critical dimensions, material properties, defects and other parameters in three dimensions.

Vlsi design-manual
Vlsi design-manualVlsi design-manual
Vlsi design-manual

The document provides instructions for completing a lab on designing an inverter using Cadence Virtuoso. The lab objectives are to: 1. Create a library called "myDesignLib" and attach it to the gpdk180 technology library. 2. Build a schematic for an inverter cell and generate its symbol. 3. Create a test design called "Inverter_Test" that instantiates the inverter, and run analog simulations and parametric analysis on the design using Spectre.

Full custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoderFull custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoder

The document describes the full custom IC design implementation of a low power priority encoder. It discusses priority encoders, their applications such as in keyboard encoding and interrupt requests. It then covers the full custom design flow used for the priority encoder implementation including schematic capture, simulation, layout design, design rule checking and post-layout simulation. Circuit designs for logic gates and priority encoders of different sizes are presented along with their Cadence simulation results.

icproject reportfyp
@gfraiteur
Windows Kernel
SpinWait: smart busy loops
1. Thread.SpinWait (Hardware awareness, e.g. Intel HyperThreading)
2. Thread.Sleep(0) (give up to threads of same priority)
3. Thread.Yield() (give up to threads of any priority)
4. Thread.Sleep(1) (sleeps for 1 ms)
Processor 0 Processor 1
A = 1;
B = 1;
SpinWait w = new SpinWait();
int localB;
if ( A == 1 )
{
while ( ((localB = B) == 0 )
w.SpinOnce();
}
@gfraiteur
.NET Framework
Application Programming
@gfraiteur
Application Programming
Design Objectives
• Ease of use
• High performance
from applications!
@gfraiteur
Application Programming
Instruments from the platform
Hardware
• Interlocked
• SpinWait
• Volatile
Operating
System
• Thread
• WaitHandle
(mutex, event, semaphore, …)
• Timer

Recommended for you

Atm Simulator
Atm SimulatorAtm Simulator
Atm Simulator

This document discusses the design of an ATM simulator software project. It describes the iterative development process, including initial requirements, use case modeling, class modeling, and state diagrams. The first iteration focuses on a basic ATM engine and console interface that supports withdrawal and balance inquiry transactions without a graphical user interface or bank integration. Subsequent iterations will expand functionality and improve the user interface.

Layout Design Comparison of CMOS and Gate
Layout Design Comparison of CMOS  and Gate Layout Design Comparison of CMOS  and Gate
Layout Design Comparison of CMOS and Gate

This document compares the layout design of a CMOS AND gate using two approaches: fully automatic and semicustom. In the fully automatic approach, the AND gate schematic is developed in DSCH and compiled in MICROWIND to automatically generate the layout. This layout consumes 43.7 μm2 of area and 3.1 μW of power. In the semicustom approach, the layout is manually designed in MICROWIND for area optimization. This layout consumes only 11.2 μm2 of area while consuming similar power as the automatic design. Simulation results show that the semicustom layout reduces area consumption significantly compared to the fully automatic layout, though it may consume slightly more power.

vlsi designlayout.cmos tehnology
VLSi
VLSiVLSi
VLSi

This document summarizes the key principles of VLSI design methodologies discussed in a lecture. It covers four phases in chip creation and how design complexity outpaces productivity. It then discusses how tools and methodologies address this by using abstraction and constraints to reduce complexity and increase productivity. The principles of structured design techniques like hierarchy, regularity, modularity, and locality are explained as ways to decompose and organize a design.

design
@gfraiteur
Application Programming
New Instruments
Concurrency &
Synchronization
•Monitor (Lock), SpinLock
•ReaderWriterLock
•Lazy, LazyInitializer
•Barrier, CountdownEvent
Data Structures
•BlockingCollection
•Concurrent(Queue|Stack|Bag|Dictionary)
•ThreadLocal,ThreadStatic
Thread Dispatching
•ThreadPool
•Dispatcher, ISynchronizeInvoke
•BackgroundWorker
Frameworks
•PLINQ
•Tasks
•Async/Await
@gfraiteur
Concurrency &
Synchronization
Application Programming
@gfraiteur
Concurrency & Synchronization
Monitor: the lock keyword
1. Start with interlocked operations (no contention)
2. Continue with “spin wait”.
3. Create kernel event and wait
 Good performance if low contention
@gfraiteur
Concurrency & Synchronization
ReaderWriterLock
• Concurrent reads allowed
• Writes require exclusive access

Recommended for you

Lab inv l
Lab inv lLab inv l
Lab inv l

The document describes an experiment to generate and simulate a CMOS inverter circuit layout using the Microwind CAD tool. The key steps are: 1. Select a foundry process and design the nMOS transistor by adding n-well, n+ diffusion, polysilicon, and metal contacts. 2. Design the pMOS transistor by adding an n-well, p+ diffusion, polysilicon, and contacts. 3. Interconnect the pMOS and nMOS transistors to form an inverter, connecting inputs, outputs, and power terminals. 4. Perform DRC checks and post-layout simulation to verify the inverter's transfer characteristics.

tri gate transistors
tri gate transistorstri gate transistors
tri gate transistors

The document discusses the history and development of transistors from their invention in 1947 to modern 3D transistors. It describes how Moore's Law of transistor scaling led to the development of 3D tri-gate transistors to overcome limitations of planar transistors. The document explains how 3D transistors provide better performance than planar transistors through conducting channels on three sides of a vertical fin structure. It discusses the construction, operation, benefits and challenges of integrating 3D transistors into mainstream manufacturing.

RISC AND CISC PROCESSOR
RISC AND CISC PROCESSORRISC AND CISC PROCESSOR
RISC AND CISC PROCESSOR

This document describes formal verification of a pipelined CISC microprocessor modeled after the Intel IA32 instruction set using the UCLID term-level verifier. The objective was to understand UCLID's strengths and weaknesses for modeling hardware designs and the verification process. A pipelined Y86 processor implementation from a textbook was verified against its sequential reference model. The control logic was automatically translated to UCLID format. Modularity and automation were emphasized to maintain model fidelity during verification.

@gfraiteur
Concurrency & Synchronization
Lab: ReaderWriterLock
@gfraiteur
Data Structures
Application Programming
@gfraiteur
Data Structures
BlockingCollection
• Use case: pass messages between threads
• TryTake: wait for an item and take it
• Add: wait for free capacity (if limited) and add item to
queue
• CompleteAdding: no more item
@gfraiteur
Data Structures
Lab: BlockingCollection

Recommended for you

Risc processors
Risc processorsRisc processors
Risc processors

This document discusses RISC processors and compares them to CISC processors. It covers the history of RISC, including the development of RISC concepts in the 1970s. The key differences between RISC and CISC are that RISC uses fixed-length instructions that perform in one clock cycle, while CISC has variable-length instructions that may take multiple cycles. The document also outlines RISC design principles like simple instructions, register-to-register operations, and large register sets. Examples of popular RISC architectures like MIPS, SPARC, and ARM are provided.

Layout rules
Layout rulesLayout rules
Layout rules

The document discusses layout design rules for integrated circuits. It provides guidelines for feature sizes and spacings to ensure fabricated circuits meet intended designs. This includes minimum line widths, separations between layers, and allowances for misalignment. The document also notes two key checks that must be completed to validate a mask design: a design rule check to verify rules are followed, and circuit extraction to confirm masks produce the correct interconnected circuit.

3D or Tri-gate transistors
3D or Tri-gate transistors3D or Tri-gate transistors
3D or Tri-gate transistors

The document discusses 3D transistors, which employ a single gate stacked on top of two vertical gates to allow three times the surface area for electron flow without increasing gate size. This overcomes issues with further scaling planar transistors. 3D transistors provide fully depleted operation and tighter channel control through conducting channels on three sides of a vertical fin. This enables high drive currents and improved switching performance. 3D transistors can operate at lower voltages than planar transistors, reducing power consumption by over 50% while maintaining or improving performance. They will allow continued transistor scaling per Moore's Law and are needed for future generations of chips.

transistorsmosfettri gate
@gfraiteur
Data Structures
ConcurrentStack
node top
Producer A
Producer B
Producer C
Consumer A
Consumer B
Consumer C
Consumers and producers
compete for the top of the stack
node
@gfraiteur
Data Structures
ConcurrentQueue
node node tail
Producer A
Producer B
Producer C
Consumer A
Consumer B
Consumer C
head
Consumers compete for the head.
Producers compete for the tail.
Both compete for the same node if the queue is empty.
@gfraiteur
Data Structures
ConcurrentBag
Thread A
Bag
Thread Local Storage A Thread Local Storage B
node node node node
Producer A Consumer A
Thread B
Producer B Consumer B
• Threads
preferentially
consume
nodes they
produced
themselves.
• No ordering
@gfraiteur
Data Structures
ConcurrentDictionary
• TryAdd
• TryUpdate (CompareExchange)
• TryRemove
• AddOrUpdate
• GetOrAdd

Recommended for you

VTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manualVTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manual

Report contains digital and analog design flow procedures in detail, working, Simulation and Synthesize mapped output. Full custom Schematic and layout design by using virtuoso encounter cadence tool.

vlsi digital and analog circuit designvlsi lab manual
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks

lash devices introduced a sudden shift in the performance profile of direct attached storage. With IOPS rates orders of magnitude higher than rotating storage, it became clear that Linux needed a re-design of its storage stack to properly support and get the most out of these new devices. This talk will detail the architecture of blk-mq, the redesign of the core of the Linux storage stack, and the later set of changes made to adapt the SCSI stack to this new queuing model. Early results of running Facebook infrastructure production workloads on top of the new stack will also be shared. Jense Axboe, Facebook

performancehard disk drivelinux kernel
Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?

Digital Forensics and Incident Response (DFIR) for IT systems has been around quite a while, but what about Industrial Control Systems (ICS)? This talk will explore the basics of DFIR for embedded devices used in critical infrastructure such as Programmable Logic Controllers (PLCs), Remote Terminal Units (RTUs), and controllers. If these are compromised or even have a misoperation, we will show what files, firmware, memory dumps, physical conditions, and other data can be analyzed in embedded systems to determine the root cause. This talk will show examples of what and how to collect forensics data from two popular RTUs that are used in Electric Substations: the General Electric D20MX and the Schweitzer Engineering Labs SEL-3530 RTAC. This talk will not cover Windows or *nixbased devices such as Human Machine Interfaces (HMIs) or gateways.

blackhatvxworksscada
@gfraiteur
Thread Dispatching
Application Programming
@gfraiteur
Thread Dispatching
ThreadPool
• Problems solved:
• Execute a task asynchronously
(QueueUserWorkItem)
• Waiting for WaitHandle
(RegisterWaitForSingleObject)
• Creating a thread is expensive
• Good for I/O intensive operations
• Bad for CPU intensive operations
@gfraiteur
Thread Dispatching
Dispatcher
• Execute a task in the UI thread
• Synchronously: Dispatcher.Invoke
• Asynchonously: Dispatcher.BeginInvoke
• Under the hood, uses the HWND message loop
@gfraiteur
Thread Dispatching

Recommended for you

DConf2015 - Using D for Development of Large Scale Primary Storage
DConf2015 - Using D for Development  of Large Scale Primary StorageDConf2015 - Using D for Development  of Large Scale Primary Storage
DConf2015 - Using D for Development of Large Scale Primary Storage

The talk will discuss using D for a large scale distributed project implementing a primary storage system with strict performance and resources requirements. Will go over the pros and cons of using D and compare our experience to previous similar projects implemented in C and C++ with Python. We are an experienced group of system programmers, implementing a large software based storage system. We have leveraged D specific features to make sure we have a very sound infrastructure to use, some of the things we did were previously either impossible or impractical using only C or C++ forcing us to use Python for code generation, on the other hand—some D aspects make it more difficult to handle than the other options. I will present what we really like, and what we’ve learned to live with.

storaged languagedlang
LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC session

This document summarizes a meeting about accelerating SQLite with OpenCL on ARM SoCs. It discusses porting the Clover OpenCL implementation ("Shamrock") to ARM and newer LLVM versions to enable CPU-only OpenCL. Initial SQLite performance testing on ARM showed potential gains from parallelizing operations. The group's goals are to run SQLite's operations on the GPU using OpenCL kernels to achieve significant performance improvements over the CPU. Their current status and next steps involve porting the Khronos OpenCL conformance tests to ARM and updating Shamrock and SQLite to newer OpenCL specifications.

thomas gall2014lca14
Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...

The document outlines an agenda for a training on practical firmware reversing and exploit development for AVR-based embedded devices. The training will cover: (1) an introduction to the AVR architecture through an example; (2) pre-exploitation techniques; (3) exploitation and building return-oriented programming (ROP) chains; and (4) post-exploitation tricks. It provides background information on the AVR architecture, which is used widely in embedded and IoT devices, and discusses features like memory organization, registers, interrupts, and assembly instructions. Development tools for AVR like Atmel Studio, AVR-GCC, and debuggers are also briefly mentioned.

avrropsecurity
@gfraiteur
Q&A
Gael Fraiteur
gael@postsharp.net
@gfraiteur
@gfraiteur
Summary
@gfraiteur
http://www.postsharp.net/
gael@postsharp.net

More Related Content

What's hot

Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
OpenEBS
 
Vulnerability desing patterns
Vulnerability desing patternsVulnerability desing patterns
Vulnerability desing patterns
Peter Hlavaty
 
Reverse engineering with python
Reverse engineering with pythonReverse engineering with python
Reverse engineering with python
n|u - The Open Security Community
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014
Charles Nutter
 
A tour on Spur for non-VM experts
A tour on Spur for non-VM expertsA tour on Spur for non-VM experts
A tour on Spur for non-VM experts
ESUG
 
Practical Windows Kernel Exploitation
Practical Windows Kernel ExploitationPractical Windows Kernel Exploitation
Practical Windows Kernel Exploitation
zeroSteiner
 
Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10
Honorary_BoT
 
Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!
Chetan Giridhar
 
Pitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysisPitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysis
Tamas K Lengyel
 
Fun With Dr Brown
Fun With Dr BrownFun With Dr Brown
Fun With Dr Brown
zeroSteiner
 
JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further
Charles Nutter
 
TRICK2013 Results
TRICK2013 ResultsTRICK2013 Results
TRICK2013 Results
mametter
 
Rust system programming language
Rust system programming languageRust system programming language
Rust system programming language
robin_sy
 
Power of linked list
Power of linked listPower of linked list
Power of linked list
Peter Hlavaty
 

What's hot (14)

Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
 
Vulnerability desing patterns
Vulnerability desing patternsVulnerability desing patterns
Vulnerability desing patterns
 
Reverse engineering with python
Reverse engineering with pythonReverse engineering with python
Reverse engineering with python
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014
 
A tour on Spur for non-VM experts
A tour on Spur for non-VM expertsA tour on Spur for non-VM experts
A tour on Spur for non-VM experts
 
Practical Windows Kernel Exploitation
Practical Windows Kernel ExploitationPractical Windows Kernel Exploitation
Practical Windows Kernel Exploitation
 
Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10
 
Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!
 
Pitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysisPitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysis
 
Fun With Dr Brown
Fun With Dr BrownFun With Dr Brown
Fun With Dr Brown
 
JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further
 
TRICK2013 Results
TRICK2013 ResultsTRICK2013 Results
TRICK2013 Results
 
Rust system programming language
Rust system programming languageRust system programming language
Rust system programming language
 
Power of linked list
Power of linked listPower of linked list
Power of linked list
 

Viewers also liked

Design and simulation of sayeh processor using verilog copy 1445752708332
Design and simulation of sayeh processor using verilog   copy 1445752708332Design and simulation of sayeh processor using verilog   copy 1445752708332
Design and simulation of sayeh processor using verilog copy 1445752708332
akanksha sharma
 
Efficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ serverEfficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ server
Shuo Chen
 
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller ChipDesign of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Waqas Tariq
 
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
Claire O'Keeffe
 
Trigate transistors and future processors
Trigate transistors and future processors Trigate transistors and future processors
Trigate transistors and future processors
Chinmay Chepurwar
 
Aicd cmos layouts
Aicd cmos layoutsAicd cmos layouts
Aicd cmos layouts
Neha Pachauri
 
Analog Layout and Process Concern
Analog Layout and Process ConcernAnalog Layout and Process Concern
Analog Layout and Process Concern
asinghsaroj
 
Ehud tzuri 3 d challanges new
Ehud tzuri 3 d challanges    newEhud tzuri 3 d challanges    new
Ehud tzuri 3 d challanges new
chiportal
 
Vlsi design-manual
Vlsi design-manualVlsi design-manual
Vlsi design-manual
Ambuj Jha
 
Full custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoderFull custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoder
srikanth kalemla
 
Atm Simulator
Atm SimulatorAtm Simulator
Atm Simulator
Syed Jamil
 
Layout Design Comparison of CMOS and Gate
Layout Design Comparison of CMOS  and Gate Layout Design Comparison of CMOS  and Gate
Layout Design Comparison of CMOS and Gate
IJEEE
 
VLSi
VLSiVLSi
Lab inv l
Lab inv lLab inv l
Lab inv l
mkkalai
 
tri gate transistors
tri gate transistorstri gate transistors
tri gate transistors
Chetan Kataria
 
RISC AND CISC PROCESSOR
RISC AND CISC PROCESSORRISC AND CISC PROCESSOR
RISC AND CISC PROCESSOR
Khurram Siddiqui
 
Risc processors
Risc processorsRisc processors
Risc processors
Ganesh Rocky
 
Layout rules
Layout rulesLayout rules
Layout rules
mangal das
 
3D or Tri-gate transistors
3D or Tri-gate transistors3D or Tri-gate transistors
3D or Tri-gate transistors
Karanvir Singh
 
VTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manualVTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manual
Maharaja Institute of Technology Mysore
 

Viewers also liked (20)

Design and simulation of sayeh processor using verilog copy 1445752708332
Design and simulation of sayeh processor using verilog   copy 1445752708332Design and simulation of sayeh processor using verilog   copy 1445752708332
Design and simulation of sayeh processor using verilog copy 1445752708332
 
Efficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ serverEfficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ server
 
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller ChipDesign of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
 
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
 
Trigate transistors and future processors
Trigate transistors and future processors Trigate transistors and future processors
Trigate transistors and future processors
 
Aicd cmos layouts
Aicd cmos layoutsAicd cmos layouts
Aicd cmos layouts
 
Analog Layout and Process Concern
Analog Layout and Process ConcernAnalog Layout and Process Concern
Analog Layout and Process Concern
 
Ehud tzuri 3 d challanges new
Ehud tzuri 3 d challanges    newEhud tzuri 3 d challanges    new
Ehud tzuri 3 d challanges new
 
Vlsi design-manual
Vlsi design-manualVlsi design-manual
Vlsi design-manual
 
Full custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoderFull custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoder
 
Atm Simulator
Atm SimulatorAtm Simulator
Atm Simulator
 
Layout Design Comparison of CMOS and Gate
Layout Design Comparison of CMOS  and Gate Layout Design Comparison of CMOS  and Gate
Layout Design Comparison of CMOS and Gate
 
VLSi
VLSiVLSi
VLSi
 
Lab inv l
Lab inv lLab inv l
Lab inv l
 
tri gate transistors
tri gate transistorstri gate transistors
tri gate transistors
 
RISC AND CISC PROCESSOR
RISC AND CISC PROCESSORRISC AND CISC PROCESSOR
RISC AND CISC PROCESSOR
 
Risc processors
Risc processorsRisc processors
Risc processors
 
Layout rules
Layout rulesLayout rules
Layout rules
 
3D or Tri-gate transistors
3D or Tri-gate transistors3D or Tri-gate transistors
3D or Tri-gate transistors
 
VTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manualVTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manual
 

Similar to Multithreading Fundamentals

Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Anne Nicolas
 
Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?
Chris Sistrunk
 
DConf2015 - Using D for Development of Large Scale Primary Storage
DConf2015 - Using D for Development  of Large Scale Primary StorageDConf2015 - Using D for Development  of Large Scale Primary Storage
DConf2015 - Using D for Development of Large Scale Primary Storage
Liran Zvibel
 
LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC session
Linaro
 
Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...
Alexander Bolshev
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
Enkitec
 
HiPEAC-Keynote.pptx
HiPEAC-Keynote.pptxHiPEAC-Keynote.pptx
HiPEAC-Keynote.pptx
Behzad Salami
 
SCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER TutorialSCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
Ganesan Narayanasamy
 
JavaScript Event Loop
JavaScript Event LoopJavaScript Event Loop
JavaScript Event Loop
Thomas Hunter II
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
Enkitec
 
HotSpotコトハジメ
HotSpotコトハジメHotSpotコトハジメ
HotSpotコトハジメ
Yasumasa Suenaga
 
The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]
Mahmoud Hatem
 
Why Play Framework is fast
Why Play Framework is fastWhy Play Framework is fast
Why Play Framework is fast
Legacy Typesafe (now Lightbend)
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
orkaplan
 
Evented Ruby VS Node.js
Evented Ruby VS Node.jsEvented Ruby VS Node.js
Evented Ruby VS Node.js
Nitin Gupta
 
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Bobby Curtis
 
Building a Router
Building a RouterBuilding a Router
Building a Router
Hannes Gredler
 
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Adam Dunkels
 
Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)
lauraxthomson
 
NIOS II Processor.ppt
NIOS II Processor.pptNIOS II Processor.ppt
NIOS II Processor.ppt
Atef46
 

Similar to Multithreading Fundamentals (20)

Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
 
Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?
 
DConf2015 - Using D for Development of Large Scale Primary Storage
DConf2015 - Using D for Development  of Large Scale Primary StorageDConf2015 - Using D for Development  of Large Scale Primary Storage
DConf2015 - Using D for Development of Large Scale Primary Storage
 
LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC session
 
Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
 
HiPEAC-Keynote.pptx
HiPEAC-Keynote.pptxHiPEAC-Keynote.pptx
HiPEAC-Keynote.pptx
 
SCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER TutorialSCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
 
JavaScript Event Loop
JavaScript Event LoopJavaScript Event Loop
JavaScript Event Loop
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
 
HotSpotコトハジメ
HotSpotコトハジメHotSpotコトハジメ
HotSpotコトハジメ
 
The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]
 
Why Play Framework is fast
Why Play Framework is fastWhy Play Framework is fast
Why Play Framework is fast
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
Evented Ruby VS Node.js
Evented Ruby VS Node.jsEvented Ruby VS Node.js
Evented Ruby VS Node.js
 
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
 
Building a Router
Building a RouterBuilding a Router
Building a Router
 
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
 
Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)
 
NIOS II Processor.ppt
NIOS II Processor.pptNIOS II Processor.ppt
NIOS II Processor.ppt
 

More from PostSharp Technologies

Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
PostSharp Technologies
 
Applying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain ModelsApplying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain Models
PostSharp Technologies
 
Performance is a Feature!
Performance is a Feature!Performance is a Feature!
Performance is a Feature!
PostSharp Technologies
 
Building Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven DesignBuilding Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven Design
PostSharp Technologies
 
Solving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern AutomationSolving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern Automation
PostSharp Technologies
 
Applying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website PerformanceApplying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website Performance
PostSharp Technologies
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
PostSharp Technologies
 
Design Pattern Automation
Design Pattern AutomationDesign Pattern Automation
Design Pattern Automation
PostSharp Technologies
 
Produce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented ProgrammingProduce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented Programming
PostSharp Technologies
 

More from PostSharp Technologies (9)

Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
 
Applying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain ModelsApplying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain Models
 
Performance is a Feature!
Performance is a Feature!Performance is a Feature!
Performance is a Feature!
 
Building Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven DesignBuilding Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven Design
 
Solving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern AutomationSolving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern Automation
 
Applying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website PerformanceApplying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website Performance
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
 
Design Pattern Automation
Design Pattern AutomationDesign Pattern Automation
Design Pattern Automation
 
Produce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented ProgrammingProduce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented Programming
 

Recently uploaded

How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 

Recently uploaded (20)

How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 

Multithreading Fundamentals