1. Catagory
    1. SISD - uniprocessor
    2. SIMD - data-level parallelism
    3. MISD - no commercial product
    4. MIMD - thread-level parallelism
      1. Shared-memory
        1. SMP(UMA style)
        2. NUMA
      2. Cluster
        1. commodity clusters
        2. custom clusters(high end)
  2. Cache Coherence
    1. coherence, defines what values can be returned by a read
    2. consistency, determines when a written value will be returned by a read
    3. protocols
      1. Snooping(good for UMA)
        1. bus
        2. scalability problem
      2. Directory(good for NUMA)
    4. Performance: coherence misses
    5. Implementing Locks
      1. atomic primitive -> lock in memory
      2. cache coherence + atomic primitive(double check) -> lock in cache
  3. Memory Consistency
    1. sequential consistency
      1. speculation
    2. relaxed consistency
      1. relax W→R: total store ordering (processor consistency)
      2. relax W→W: partial store order
      3. relax R→W and R→R: weak ordering, the PowerPC consistency model, and release consistency