- 64-bit instruction set
- Multimedia instruction set extension
- 16 cores are arranged in 4 core clusters
- 32 threads per chip
- Parallel computing is a form of computation in which many calculations are carried out simultaneously,operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ("in parallel"). There are several different forms of parallel computing: bit-level-, instruction-level-, data-, and task parallelism.
- Deadlock refers to a specific condition when two or more processes are each waiting for another to release a resource, or more than two processes are waiting for resources in a circular chain
- Deadlock is a common problem in multiprocessing where many processes share a specific type of mutually exclusive resource known as a software.
- Atomicity states that database modifications must follow an “all or nothing” rule. Each transaction is said to be “atomic.” If one part of the transaction fails, the entire transaction fails.
- Concurrent computing is the concurrent (simultaneous) execution of multiple interacting computational tasks.
- Concurrency control ensures that correct results for concurrent operations are generated, while getting those results as quickly as possible.
Concurrency control mechanism The main categories of concurrency control mechanisms are:
- Optimistic - Delay the synchronization for a transaction until its end without blocking (read, write) operations, and then abort transactions that violate desired synchronization rules.
- Pessimistic - Block operations of transaction that would cause violation of synchronization rules.
- Synchronization between processors running on a parallel machine is one of the most difficult aspects of parallel programming. In shared-memory parallel machines, the use of locks is often required for correct program execution.
- With transactional memory, the software on an individual processor is ensured, by the hardware, that a set of memory accesses is either performed atomically or not at all.
- Transactional memory can replace locks altogether resulting in a more intuitive programming environment as well as a performance increase.
- The basic idea of transactional memory rests on atomic transactions, which offer a method for providing mutual synchronization without the protocol intricacies of conventional synchronization methods. A transaction can be thought of as a sequence of loads and stores performed as part of a program. Unlike in databases, we need not concern ourselves with failures, and so we can arrange that transactions either commit or abort. If a transaction commits, then all of the loads and stores appear to have run atomically with respect to other transactions, that is, the transaction’s operations do not appear to have interleaved with those of other transactions. If a transaction aborts, then none of its stores take effect and the transaction may be restarted, using a backoff or priority mechanism to guarantee forward progress.
- Transactional memory has been proposed as a general and flexible way to allow programs to read and modify disparate primary-memory locations atomically as a single operation, much as a database transaction can atomically modify many records on disk.
- Hardware transactional memory supports atomicity through architectural means, whereas software transactional memory supports atomicity through languages, compilers, and libraries.
- Hardware transactional memory can be implemented quite easily with some modificaitons to the processor cache and cache controllers. However, this implementation imposes limitations on the size and length of transactions. On the other hand, software transactional memory does not suffer from these limitations but has a much higher overhead than hardware transactions.
Hardware transactional memory
- Hardware Transactional Memory (HTM) systems reflect choices from three key design dimensions: conflict detection, version management, and conflict resolution.