Hasim - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Hasim

Description:

Runs simple benchmarks on FPGA. Five stage pipeline. Supports branch mis-speculation. Runs simple benchmarks (in software simulation) ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 32
Provided by: jse8
Category:
Tags: benchmarks | hasim

less

Transcript and Presenter's Notes

Title: Hasim


1
Hasim
  • Joel Emer

Michael Adler, Artur Klauser, Angshuman
Parashar, Michael Pellauer, Murali
Vijayaraghavan
2
Overview
  • Goal
  • Produce compelling evidence for architecture
    ideas
  • Requirements
  • Cycle accurate simulation
  • Representative simulation length
  • Software development (often)
  • Current approach
  • Mostly software simulation (10 KHz to 1 KHz)
  • New approach
  • Build a performance model in an FPGA

3
FPGA-based approaches
  • Prototyping
  • Build a logically isomorphic representation of
    the design
  • Modeling
  • Build a performance simulation in gates
  • Hybrids
  • Build something that is partially a prototype and
    partially a model

4
Recreate Asim in hardware
  • Modularity
  • Inter-module communication
  • Functional/Timing Partitioning
  • Modeling Utilities

5
Why modularity?
  • Speed of model development
  • Shared components between products
  • Reuse across generations
  • Encourages isomorphism to design
  • Improved fidelity
  • Facilitates speed/fidelity trade-offs
  • Architectural experimentation
  • Factorial development and evaluations
  • Sharing

6
ASIM Module Hierarchy
S
7
ASIM Module Selection
B
8
Module Selection
S
S
C
M
N
D
R
X
C
W
F
9
Module Replacement
S
X
D
R
X
C
W
F
10
(H)ASIM Module Hierarchy
11
Communication
C
12
Named connections
S
D
A-out
A-in

13
Model and FPGA Cycles
Port
Port
Module B
Module A
Port
Port
14
Functional/Timing Decomposition
  • ISA semantics
  • Platform semantics
  • Micro-architecture

Timing Partition
Functional Partition
Fetch(PC)
Instruction
  • Simplifies timing model
  • Amortize functional model design effort over
    many models
  • Can be pipelined for performance
  • Can be FPGA-friendly design
  • Can be split across hardware and software

15
Execute_at_execute phases
  • Fetch instruction
  • Speculatively execute instruction
  • Read memory
  • Speculatively write memory (locally visible)
  • Commit or Abort instruction
  • Write memory (globally visible) Optional
    depending on instruction type

16
Execution in phases
Assertion All data dependencies can be
represented in these phases
17
HASim Partitioning Overview
Timing Partition
Memory State
Register State
RegFile
Functional Partition
18
Common Infrastructure
  • Modules
  • Inter-module communication
  • Statistics gathering
  • Event logging
  • Debug Tracing
  • Simulation control

19
Bluespec (Asim-style) module
module HAsim_module mkCache() (Empty)
Port(Addr) req_port lt- mkSendPort(a2cache)
Port(Bool) resp_port lt- mkRecvPort(cache2a)
   TagArray tagarray lt- mkTagArray() rule
cycle(True)     Maybe(Addr) mx
req_port.get()   if (isValid(mx))    
resp_port.put(tagarray.lookup(validValue(mx)))   
endruleendmodule
20
Bluespec (Asim-style) submodule
  • module mkTagArray(TagArray)
    RegFile(Bit(12),Bit(4)) tagArraylt-
    mkRegFileFull(...) method Bool
    lookup(Bit(16) a) return (tagArray.sub(getIn
    dex(a)) getTag(a)) endmethod
  • function Bit(4) getTag(Address x) return
    x1512 endfunction
  • function Bit(12) getIndex(Address x)
    return x110 endfunction
  • endmodule

21
Support functions - stats
module mkCache(...) (Empty)   ...
cache_hits lt- mkStat(...) ...  
 hittagarray.lookup(...)    if (hit)
cache_hits.increment() endif
...endmodule
Module
Stat Counter
Module
Stat Counter
Stat Dumper
Module
Stat Counter
22
2Dreams
23
Support functions - events
module mkCache(...) (Empty)   ...
cache_event lt- mkEvent(...) ...  
 hittagarray.lookup(...)    cache_event.report(
hit) ...endmodule
Module
Event Reg
Module
Event Reg
Event Dumper
Module
Event Reg
24
Support functions global controller
module mkCache(...) (Empty)   ... ctrl lt-
mkCntrlr(...) ... rule (ctrl.run())
... endrule endmodule
Module
Controller
Module
Controller
GlobalController
Module
Controller
25
(No Transcript)
26
FPGA-based prototype
Prototyping Catch-22
27
Module Instantiation
U
M
C
N
28
Factorial Coding/Experiments
29
HAsim Current status - models
  • Simple RISC functional model operating
  • Simple RISC ISA
  • Pipelined multi-phase instruction execution
  • Supports speculative OOO design
  • Physical Reg File and ROB
  • Small physically addressed memory
  • Fast speculative rewinds
  • Instruction-per-cycle (APE) model
  • Runs simple benchmarks on FPGA
  • Five stage pipeline
  • Supports branch mis-speculation
  • Runs simple benchmarks (in software simulation)
  • X86 functional model architecture under
    development

30
Connections Implement Ports
PM (Module Tree w. Connections)
PM (Hardware Modules w. Wrappers)
Implemented via connections.
31
Timing Model Resources (Fast)
  • OOO, branch prediction, three functional units,
    32KB 2-way set associative ICache and DCache,
    iTLB, dTLB2142 slices (15 of a 2VP30)
  • 21 block RAMs (15 of a 2VP30)
  • Configurable cache model
  • 32KB 4-way set associative cache with 16B
    cache-lines
  • 165 slices (1 of a 2VP30)
  • 17 block RAMs (12 of a 2VP30)
  • 2MB 4-way set-associative cache with 64B
    cache-lines
  • 140 slices (1 of a 2VP30)
  • 40 block RAMs (29 of a 2VP30)
  • Current FPGAs (4VFX140)
  • 142,128 slices
  • 552 block RAMs
  • 2 PowerPCs
Write a Comment
User Comments (0)
About PowerShow.com