【2014-11-23】《The Hardware/Software Interface》– Section 7

  1. Cache
    • Definition: computer memory with short access time used for the storage of frequently or recently used instructions or data(i-cachhe and d-cache).
    • more generally, used to optimize data transfers between system elements with different characteristics (network interface cache, I/O cache, etc.)
    • Hit:
    • Miss:
  2. Locality: programs tend to use data and instructions with addresses near or equal to those they have used recently
    • Temporal locality:
      • Recentlly referenced items are likely to be referenced again in the near future.
    • Spatial locality:
      • Items with nearby addresses tend to be referenced close together in time
  3. Cost of Cache Misses
    • Huge difference between a hit and a miss
      • could be 100x, if just L1 and main memory
    • 99% hits is twice as good as 97%
  4. Cache Performance Metrics
    • Miss Rate:
      • Fraction of memory references not found in cache (misses/ accesses) = 1 – hit rate
      • Typical numbers(in percentage)
        • 3% – 10% for L1
    • Hit Time
      • Time to deliver a line in the cache to the processor
        • Includes time to determine whether the line is in the cache
      • Typical hit times: 1 –2 clock cycles for L1
    • Miss Penalty
      • Additional time required because of a miss
      • Typically 50 – 200 cycles
  5. Memory Hierarchies
    • Well-written programs tend to exhibit good locality
    • These properties complement each other beautifully
    • Fundamental idea of a memory hierarchy:
      • Each level k serves as a cache for the larger, slower, level k+1 below
  6. Optimizations for the Memory Hierarchy
    • Write code that has locality
      • Spatial: access data contiguously
      • Temporal: make sure access to the same data is not too far apart in time
    • How to achieve
      • Proper choice of algorithm
      • Loop transformations
时间: 2024-10-03 23:14:53

【2014-11-23】《The Hardware/Software Interface》– Section 7的相关文章

【2014-11-23】《The Hardware/Software Interface》– Section 11

Data in Java Java has pointers – they are called 'referenes' Null is typically represented as 0 Characters and strings Two-byte Unicode instead of ASCII Represents most of the world's alphabets String not bounded by a '\0'(null character) Bounded by

【2014-11-22】《The Hardware/Software Interface》– Section 3

The time required to execute a program depends on: The program The compiler The instruction set architecture(ISA) The hardware implementation The ISA defines: The system's state(e.g. registers, memory, program counter) The instrutions the CPU can exe

【2014-11-21】《The Hardware/Software Interface》– Section 1

There are a fixed number of registers in the CPU Registers hold data Data move from Memory to Registers Results move from Registers back to Memory There is an 1-cache in the CPU that holds recently fetched instructions. If you execute a loop that fit

【2014-11-21】《The Hardware/Software Interface》– Section 2

printf("Signed Max:%d\n", 0x7FFFFFFF); printf("Signed Min:%d\n", 0x80000000); printf("Unsigned Max:%u\n", 0xFFFFFFFF); printf("Unsigned Min:%u\n", 0x00000000); By default are considered to be signed integers. Use &q

【2014-11-22】《The Hardware/Software Interface》– Section 5

Stack-Based Languages Need some place to store state of each instantiation(实例) Arguments Local variables Return pointer

【2014-11-22】《The Hardware/Software Interface》– Section 4

Moving Data: IA32 movx Source, Dest x is one of {b(1-byte), w(2-byte), l(4-byte)} Operand Types Immediate: Constant integer data Example: $0x400, $-533 Like C constant, but prefixed with'$' Register; one of 8 integer registers Example: %eax, %edx But

【2014-11-22】《The Hardware/Software Interface》– Section 6

Buffer Overflows IA32 Linux Memory Layout Stack Runtime stack (8MB limit) Heap Dynamically allocated storage Allocated by malloc(), calloc(), new() Data Statically allocated data Read-only: string literals Read/write: global arrays and variables Text

【2014-11-23】《The Hardware/Software Interface》– Section 10

The malloc package void* malloc(size_t size) void free (void *p) other functions calloc: Version of malloc that initializes allocated block to zero realloc: Changes the size of a previously allocated block abrk: Used internally by allocators to grow

【2014-11-23】《The Hardware/Software Interface》– Section 8 (continue)

Exceptions: An exception is transfer of control to the operating system in response to some event. exception processing by exception handler Process(进程) Process abstraction provides an interface between the program and the underlying CPU + Memory. De